Article original : What Does It Mean To Graduate From An Elite Bootcamp?
Par Allison Zhao
Après avoir passé 17 semaines dans un bootcamp de codage à New York, je peux enfin me considérer comme une développeuse full-stack.
C'est un titre dont je rêve depuis que j'ai obtenu mon diplôme universitaire il y a un peu plus d'un an. Mais qu'ai-je réellement appris en un peu plus de 4 mois ? Que pourrai-je apporter en entreprise avec une formation non traditionnelle dans le domaine de la tech ? Le programme correspond-il bien aux compétences recherchées par les employeurs ?
Je vais partager ce que j'ai retenu d'un bootcamp à temps plein en tant qu'étudiante sans expérience préalable en programmation.
J'espère que cet article contribuera à la discussion en cours sur les bootcamps de génie logiciel et aidera les futurs candidats et employeurs à en savoir plus sur les diplômés de ces bootcamps.
J'ai obtenu mon diplôme universitaire en 2016 avec une licence en Musique Business et une mineure en Programmation et Applications Web. Avant le bootcamp, je n'avais écrit que du HTML et du CSS simples pour des newsletters d'entreprise. J'avais également une certaine expérience dans les technologies de diffusion de publicités en ligne (gestion de publicités avec Google DFP, dépannage de balises publicitaires et collaboration avec l'équipe d'ingénierie sur les migrations de sites).
J'ai passé deux mois à apprendre les bases de la programmation et à préparer ma candidature. La candidature comprenait des exercices de codage en ligne et en personne. J'ai été admise fin août et j'ai obtenu mon diplôme début décembre.
Chacun apprend différemment. Je parle de mon expérience personnelle et non au nom des autres étudiants. Nous avions une grande autonomie, et certaines des technologies mentionnées ci-dessous n'étaient pas obligatoires.
Je m'entraîne quotidiennement sur les algorithmes et les structures de données
Les algorithmes et la notation Big O étaient pris très au sérieux. Les premières leçons portaient sur les types de données abstraits, les structures de données (listes chaînées, arbres binaires de recherche, tas, tables de hachage, graphes, etc.) et les algorithmes de tri (tri à bulles, tri fusion, tri rapide).
Plus tard, nous nous entraînions chaque matin à des entretiens techniques avec d'autres étudiants, à la fois en tant qu'interviewer et intervieweur. Lors de chaque entretien, on me demandait d'écrire du code et de déterminer la complexité temporelle et spatiale de ma solution. J'ai répondu à des questions comme :
- Quelle est la notation Big O pour la solution naïve ?
- Est-ce que O(n*m) est la solution optimale ?
- Est-ce que l'utilisation de la récursivité ici est plus efficace ?
Outre la formation sur l'analyse du temps d'exécution, nous avons également appris quelques notions sur le matériel, comme la représentation des tableaux en mémoire et les différences entre la RAM et la ROM.
J'ai construit de nombreux clones d'applications populaires
Wikipedia, Slack, Spotify, Twitter, Game of Life, vous l'appelez. Chaque application présentait de nouvelles technologies passionnantes (application monopage, sockets, modèle flex-box, API, etc.). C'était très amusant d'essayer de reproduire leurs fonctionnalités principales.
Nous avons appris les bases de React et Redux en construisant un clone front-end de Spotify. Nous avons appris les WebSockets et Socket.io en construisant une application de messagerie similaire à Slack. Wikipedia était une bête à part où nous avons appris à utiliser un ORM (Sequelize) et à écrire des tests unitaires qui validaient les fonctionnalités back-end.
J'ai appris d'importants mécanismes JavaScript en les construisant à partir de zéro
Par exemple, nous avons implémenté notre propre bibliothèque de Promesses de style A+ à partir de zéro. Cela nous a aidés à acquérir une compréhension plus approfondie du comportement des cas d'utilisation et des mécanismes sous-jacents.
Lors de l'introduction à Node.js, nous avons construit notre propre invite de shell fonctionnelle qui prend des commandes de type Unix, les exécute via un processus Node.js et produit une sortie qui peut être redirigée vers d'autres commandes.
Je sais comment construire une application web progressive
Pour notre projet final, nous avions deux semaines pour construire une application qui nous passionnait en équipes de quatre. Le projet pouvait entrer dans les catégories suivantes : jeux, visualisation de données, outils pour développeurs, outils éducatifs et interactions en temps réel.
Mon équipe et moi voulions sortir de notre zone de confort. Nous voulions expérimenter les dernières technologies qui n'étaient pas enseignées dans le programme. Après quelques recherches, nous avons décidé de construire une application web progressive qui utilise Google Cloud Firestore comme base de données et des services d'IA, tels que Google TensorFlow, Amazon Polly et IBM Watson (ce que nous avons finalement utilisé).
(capture d'écran de notre présentation de projet de fin d'études)
J'ai expérimenté l'architecture serverless et les fonctions cloud
Notre projet final a expérimenté l'architecture serverless. Nous avons utilisé une base de données cloud et implémenté nos fonctionnalités principales via Cloud Functions. Comme nous n'avions aucune expérience préalable, les Cloud Functions étaient difficiles à configurer au début en raison du nombre d'API avec lesquelles nous communiquions. Nous avons finalement terminé la construction des fonctionnalités et approfondi notre compréhension des fonctions asynchrones.
(capture d'écran de notre présentation de projet de fin d'études)
J'ai expérimenté le Deep Learning et l'IA
Notre projet final présentait un podcast généré automatiquement. Cela nous a permis d'explorer IBM Watson, Amazon Polly et Google Tacotron (TensorFlow). Bien que nous n'ayons pas eu assez de temps pour entraîner nos propres modèles en utilisant la voix de Morgan Freeman comme prévu, nous avons tout de même appris énormément.
(J'ai également écrit un article sur comment le deep learning rend la mode plus intelligente — lisez-le si vous êtes intéressé !)
J'ai eu un excellent soutien pour explorer des projets parallèles et des hackathons
Lors d'un hackathon individuel de 4 jours, j'ai construit une application web de type Tinder qui met en relation les utilisateurs en fonction de leurs préférences alimentaires et j'ai reçu un prix pour le meilleur design UI/UX.
_Toutes les illustrations de nourriture par l'artiste et illustratrice, Kendyll Hillegas — découvrez son incroyable [boutique Etsy](https://www.etsy.com/shop/KendyllHillegas" rel="noopener" target="_blank" title="">Etsy shop. Image de fond par Justin Wong. — découvrez son travail sur <a href="https://dribbble.com/patternsandportraits" rel="noopener" target="blank" title=")
Un autre de mes projets passion (toujours en cours) est une application de soins de la peau qui aide les consommateurs à comprendre les avantages et les inconvénients des ingrédients actifs couramment utilisés dans les produits de soins de la peau. Elle fournit également des recommandations de produits en fonction des préoccupations en matière de soins de la peau des utilisateurs.
Je suis à l'aise avec la construction d'une application entière par moi-même
L'objectif le plus important d'un bootcamp full-stack est de vous aider à devenir à l'aise avec les technologies front-end et back-end. Cela dit, il y a encore tant à apprendre et je ne me contenterai jamais des compétences que j'ai déjà acquises. Restez affamé :)
J'ai appris des choses au-delà du logiciel
Il faut plus que des compétences en programmation pour devenir un ingénieur logiciel précieux. Pendant le programme, nous avons eu des conférences invitées sur les méthodologies agiles, les startups lean et comment faire face aux biais inconscients. Des déjeuners pour femmes étaient organisés régulièrement pour que les étudiants partagent leurs expériences en tant que femme ou membre de la communauté LGBTQ dans l'industrie de la tech.
Ce que j'aurais aimé apprendre davantage
17 semaines, c'est peu de temps pour apprendre tout ce que vous devez savoir pour devenir un bon ingénieur logiciel. J'adorerais explorer davantage de problèmes de développement web du monde réel, tels que la sécurité web, la scalabilité, la conception de systèmes, les modèles de conception JavaScript et l'architecture globale.
« C'est probablement le programme le plus difficile que vous suivrez jamais. Mais il changera votre vie. »
Coder sans arrêt tous les jours pendant 10 à 12 heures n'est pas facile, mais j'ai adoré chaque minute. Le bootcamp a fait un très bon travail en me plongeant dans le grand bain tout en s'assurant que je ne coule pas vraiment.
Avec tout ce que j'ai appris et les amis incroyables que je me suis faits, je recommande vivement d'explorer l'option de fréquenter un bootcamp d'élite.
Bien sûr, les bootcamps d'élite sont plus stricts sur les exigences d'admission et les évaluations. Cela signifie plus de temps et d'énergie consacrés à la préparation d'un entretien d'admission. Mais je vous promets que le résultat est gratifiant et change la vie. Vous vous sentirez bien préparé après l'obtention de votre diplôme pour explorer les opportunités d'emploi avec de grandes compétences.
En fin de compte, j'espère que vous avez apprécié la lecture de cet article et que vous l'avez trouvé utile.
N'hésitez pas à laisser un commentaire, à m'envoyer un e-mail à allison@allisonzhao.com ou à me contacter sur LinkedIn si vous souhaitez en savoir plus ou entrer en contact avec moi. Je suis également actuellement ouverte aux opportunités d'emploi et je recherche des produits passionnants sur lesquels travailler — contactez-moi !
Enfin, je tiens à remercier mes chers amis David et Nicholas pour la relecture et les suggestions d'édition.