To give folks an idea of what the day-to-day life of a typical student at 42 looks like, in this post, we describe a few of the projects that one might encounter at a computer terminal within the Soul of Code building on our Silicon Valley campus. It is true that many of our students will rise in their dorm rooms in the Nostromo Residence Hall and take breakfast before resuming their daily quest to advance their coding skills. Students are encouraged to diversify their interests, passions and skill-sets by participating in a variety of clubs and outside activities. This post merely attempts to shed a little light on some of the structured training activities of these students.
At present, the average student tends to spend roughly 50 hours per week improving their coding skills. Many students exceed that time commitment, developing a sharp focus on the task of advancing their education and taking a direct ownership in their own success. It is worth noting that most students progress at a pace of roughly one level per month if they are continuously working at it. Students at 42 are given rankings such as cadets, midshipmen, and/or admirals that roughly project their ability levels. The lowest passing grade for all projects, regardless of one’s level, is 80% or above. One attains each successive level in the program, while gaining cumulative experience with the introduction, practice and testing of each concept, lesson, project and exam. Levels are attained in steps: 0.0, 0.1, before getting to level 1, then continuing forward in the same fashion toward the next level. Pisciners finish that month-long experience at varying levels of proficiency. For those who pass the piscine, these levels don’t make a whole lot of difference, as all participants will revert to a level of 0.0 when they begin as students. Students at 42 take exams every week on Tuesday mornings lasting for 4 hours, during which randomly chosen questions give each student the opportunity to test their levels of coding skills and their progress.
We introduce you to a recently created poster-child, cadet named Ali, who, at least in theory, started at 42 in the fall of 2016. Let’s just say that he is currently at level 4 (level 4.7 in fact). As some outside our walls may not be aware, 42 uses a system of gamification as also happens in video games. In this entry, we will retrace some of Ali’s initial steps (and missteps) to illustrate for all what the life of this budding world-class coder entails.
Like over 60% of our students currently enrolled on this campus, Ali is an American (Californian) student. When not living in our dorm, he returns home to Sacramento. After passing seamlessly through the September piscine, he stayed with the program and worked hard at improving his coding skills. He had his moments of doubt, but he stuck with it completing all the project work and exams despite being exhausted from putting in some grueling hours.
The first three projects Ali found interesting yet intensely challenging. During the first project, which is called Libft, he thought it was rather simple because it tasked him with reviewing and practicing many of the concepts he had encountered in the piscine. He was stuck for a brief time on the second project called Fillit, where his highly self-critical instincts prevented him from submitting his work in a timely manner; thus, he lost some precious time by being too much of a perfectionist. He was determined not to fall into this type of trap in future projects. In Fillit, he needed to develop a real software solution to receive data and to get a good solutions. Close to what you might get if you were crossing a Tetris game and a jig-saw puzzle, this project engages each participant in the challenge of positioning the pieces in the most efficient or correct manner. He didn’t know, at the time, that those who had organized the chronology of these projects would provide him with an elegant solution in the very next project. Finally, he came to realize that he just had to try his best and then submit his work, which he did. There is a lesson there for all students, I think; sometimes moving on can be preferable to hesitating while trying to get everything a certain way. Despite it not being perfect, he received enough credit, and he advanced to the next project.
The third project called Get_Next_Line gave him less trouble as it presented some information showing how to solve the problem that he had encountered in Fillit. The third project enables the developer to read a file line-by-line instead of in a block. This might seem like a small function, yet it is crucial.
When he arrived at the first fork in the coder’s road, after completing these first 3 projects, Ali pondered his next move. Receiving some advice from his classmates, he would turn in his work and continue on to the next one before encountering the first major intersection on the diagram of projects located on 42’s Intranet site. Student at 42 progress their coding skills while exploring and climbing the branches of this project chart tree.
As he had no previous Unix experience, though liking a good challenge, he thought he would broaden his knowledge by tackling some Unix-based projects. He initially attempted projects from the branch featuring primarily Unix-based projects. The first two on that branch were completed quickly. He flew through ft_ls, where students make their own software, which lists directory contents of the operating system. Ali liked this project because he could start to see how the computer itself was working as a result of the concepts covered therein. In the next project called minishell he began to see how the terminal is working and gained an appreciation for some of the complex things that can be done like executing a command, creating new processes and interpreting a command line. The goal of minishell is to allow students to create their own shell (and perhaps to break out of their own shells); in doing so, they encounter the dark, complicated feeling of learning how to scale the walls. After completing his work, Ali thought to himself, “Wow, it’s really not that difficult to understand how this computer works. Now I know how to program a useful software— one which developers might use every day.”
He got bogged down, however, for two weeks working on 21sh, a tough project that involves adding features to minishell before arriving at 42sh where in a group of 3 (sometimes in groups of 4) students, Ali collaborated for roughly 4 weeks toward the project’s overall completion. In this one, students create a real and useful shell. Shells are like interpreters; they offer a command-line interface. Ali was proud of himself because he could see in his first version of a shell, he was able to appreciate his valuable input in this group project. Ali had arrived at this project earlier than most of others attempting to pass these projects as he had plowed steadily through some of the initial ones on that branch.
When Ali’s partner had to leave for a week, and when he needed to miss a bit of time during winter break to see his family, he fell off his earlier pace. Yet he returned in January, he was re-energized and ready to code. By the way, he spent 44 hours a week during the first two weeks of December and 56 hours before the break, but resumed in January with a pace of 72 hours during the first three weeks of the month.
Periodically, to simulate the dynamics of working in groups which are omnipresent in the workplace, the Bocal staff at 42 will throw a wrench in the works by introducing rush assignments that must be completed in randomly generated groups of 2 or 3 (pairing students with varying skill levels). Typically transpiring on the weekends, just as had occurred during the piscine, participating groups are given their rush assignment on Friday night and must complete it by the following Sunday evening at 11:42pm. Topics may include: creating a proxy server software, creating an archiver and possibly an unarchiver, or creating a compiler.
Additionally, roughly once a week, dash projects are periodically assigned, where students are given 25 minutes to code a surprise project. The first dash project took place on a Thursday in late January at 2:42pm. The goal of these supplemental, assigned challenges is to expand upon the breadth of one’s coding knowledge by implementing many concepts in a very condensed amount of time.
Ali had a friend named George who chose a different path from his own. After completing the first three projects, George wanted to explore the graphic branch of the tree. He first encountered the FdF project and spent one week on it before submitting his work. He thought it would be a challenge because in high school, he wasn’t strong in Math and there were quite a few formulas used in this one. He discovered, however, that Google searches directed him quite a bit, which helped him to understand the material that he had not been able to comprehend in his high school classes. When he finished (and passed) each project on the branch, he moved on to the next ones. By the time he got to the RT project (“RT” standing for “Ray Tracer”), he had created some incredible graphics, many of which seemed to inspire some of his classmates to follow his lead and to try their hands at the content situated on the graphic branch. George didn’t mind this however. He gave a few tips for when Ali would venture over to that part of the tree. Here is an example of George’s work:
George later decided to diversify his knowledge base by starting ft_printf on the algorithmic branch of the project tree. After all those graphic-based projects, he remained open-minded and decided to try something new. The ft_printf project provided him with the crucial function of printing things on the screen. This was eye-opening to George who could immediately see the benefits of having another feather in his quiver. For coders, in fact, this capacity is an extremely important building block; it is, in a way, the equivalency of placing a central stone into a great edifice.
42 offers pedagogical piscines to all students attaining level 5, which will also allow these students to hop from branch to branch, thus escaping from the standard choices presented in the project chart’s trajectory. These piscines give students a chance to diversify their working partners to meet new people and to reinvigorate. George plans to partake in the piscine PHP, which he thinks he will enjoy because it will let him learn a new computer language. Incidentally, it is one of the languages most used by web developers. PHP also gave him a skill that he could list when applying to his first internship. He was satisfied by the experience because it reminded him of his initial piscine, which he had found extremely fun and rewarding. The Bocal staff informed the current group of students that when there are 42 of them who reach level 5, we will offer another pedagogical piscine. On the Paris campus, they currently offer these special events 3 times a year.
Although Ali is currently at level 4, on the horizon are several projects organized in a manner that will progressively advance and challenge his grasp of concepts in varying degrees of difficulty. As we know, Ali has begun to explore the Unix side of the tree, yet he will soon delve into the projects found on the two other project strands. If he decides to pick the fruit from some of the higher branches on this tree, and get to higher levels of proficiency, he will occasionally have to choose projects from one of these other branches.
42’s program is focused on creating passionate learners who are actively involved in their own education. No matter which branch of the tree students begin to scale, they encounter tools and build their repertoire of skills in ways that allow them to shine as developers and innovators. Ali and George discovered their preferences by putting in the time and submitting their work. The criticism they received from their peers helped them to remain humble and ready to acquire new skills while improving upon their current levels of knowledge.