Week 5 marks the beginning of a new phase and a new chapter in the Apprentice program, and for us, it meant getting our first taste of working in a real project with a real client. The stakes are high, failure peaks its ugly head and may present itself if we are not careful.

But as with every big endeavor, we must take it one step at a time. This first week we were introduced to our teammates, which ended up being a team of 7 people. This presented the first challenge, as being in a medium sized team without much direction or instructions, we needed to start organizing ourselves, assessing our abilities, weaknesses and establishing our workflow and tools to be used. So far so good, but as we continue to work I’m sure more challenges will present themselves. I’m hopeful we’ll be able to effectively organize ourselves and work to the best of our abilities.

Once we knew each other, we proceeded to get to know our client. While it was an extremely scary and daunting of a task, the ability to communicate effectively with our clients, understanding exactly what they need, adjusting ourselves in order to fit their vision, letting them know in simple and precise language our plans and progress; all of these abilities are equal or even more important than the coding itself for a developer, as it’s through these that we can create efficiently exactly what our client wants. This first sessions, in which we knew our client’s needs and proposed a solution to them, was an interesting learning experience, and something I hope gets easier with each new experience we get to have.

Another chunk of the week was devoted to analyzing alongside my teammates the code base that was already established by previous generations and to analyze which features were implemented, which were missing, and which could do with some improvement. While tedious, this also is an extremely important ability to add to our repertoire, as it is often the case that we won’t be starting a project from the ground up, but rather building upon the foundations of other’s work. The skill to both understand other people’s code, as well as extending the same generosity and making your code understandable by others shall be honed in this phase.

Finally, this week finished with some studying on my part of the technology stack that we will be using for this. In this case, the stack in questions is MERN: MongoDB, Express, React and Node.js. While I was already familiar with a bit of node and Mongo, truth is that once I started to really analyze the codebase left behind, it became increasingly obvious that while I could stumble blindly among the code and make something more or less functional, it would be better to take a step back and reaffirm by knowledge basics with these technologies before taking any bold steps. And so I did, I dove into the basics of each of these technologies, as well as the way to use them all in conjunction. With these knowledge established, the next step is to start coding in order to meet the requirements we settled within the deadlines provided. I know I will fail a lot, I know it will be a slow grind, and I know I will make very bad code, but I also know that in order to improve I shall go through these grueling first steps. That will start next week, I hope everything runs smoothly.