I can still remember how excited I was getting the email that confirmed that I’ve been selected for the Andela Fellowship program. I don’t think I’ve ever experienced that level of euphoria in my 25 years of existence but amidst the euphoria, there was a voice in my head that kept telling me how I wasn’t good enough and thus won’t succeed at Andela. The fact that I had little or no experience in the craft and the standard the Andela brand represents made me start doubting my ability to succeed at Andela. I think tech people call it the impostor syndrome.
The Andela Journey
The newly recruited Andela software engineers usually go through a 6-month intensive training program that is sub-divided into two phases — Simulations and Apprenticeship. The Engineers are placed into teams to simulate a real-world software development project with learning facilitators, technical team leads and product owners. The simulations period is a 3-month program after which successful engineers move over to the apprenticeship phase. The Apprenticeship phase is another 3-month program that enables the engineers to work on internal and external products to see if they are fit to get placed on Andela partner engagements. The Andela business model is such that Andela trains software engineers and place them with top tech distributed engineering teams all over the world while still working at Andela as full-time software engineers. The Simulations and Apprenticeship period is a rigorous and intensive program and it’s not for the faint-hearted.
As I write this article I have successfully passed through the simulations and apprenticeship phase of my Andela career and I’m awaiting placement with top tech distributed software engineering teams. I will write all the lessons I learnt and How I made it through the most critical phase of my Andela career.
- Imposter syndrome is a given: The software development craft is always evolving and challenging hence the reason for impostor syndrome. I started dealing with mine when a member of the Andela people team reminded us how we are part of the top 1% of the technical talent that was selected for the fellowship out of thousands of applications. She also said that it’s our skills and technical competencies that earned us the placement. Immediately, I knew that I was doing something right and I just needed to keep at it. I kept reminding myself of how far I’ve come and all my past achievements and I gradually started gaining confidence in my abilities.
- The best way to build software is with a team: I know some people are lone rangers but If you ever build software with a team you will not like to build software alone again. If you must advance in your software engineering career then you must get comfortable around working with teams. It takes great people skills to work in a team because of diversity in technical, academic and religious backgrounds. A team complements you in many ways. I learnt a lot from my simulations and apprenticeship teammates.
- Be self-aware and acknowledge your knowledge and skill gaps: Acknowledging your skill gaps will help you estimate properly when working on tasks because you factor in learning into the estimated time of delivery. I’ve learned that people like working with software engineers that can estimate properly that is under promising and over-delivering on tasks. Self-awareness will also help you come up with a standard learning plan that will help you grow in your software engineering career.
- Always try to understand the business before writing code: I read somewhere that the best code is written without writing code that is “a problem is better solved when it’s understood and logical steps are clearly written down to solve the problem”. Always come up with implementation plans for new features and root-cause analysis for bugs before writing code. This ensures you understand the problem and all the edge cases are covered before solving it and in the cases of bugs that they don’t re-occur.
- Always seek clarity in the case of ambiguities: Asking questions to gain clarity saves a lot of development time and prevents a lot of back and forth in software development. Always make conscious efforts to understand the acceptance criteria for features and always make sure the product owner or client has approved a mock-up design before implementation.
- Always reach out for help when faced with a stubborn blocker: There is this tendency for software engineers to face a problem until they are victorious. However, in the real world, clients or product owners expect their product to be ready when you said it will be ready so there’s limited time to be a super-hero. It takes a high level of discipline and skill to give yourself a time-frame to solve a problem after which you reach out to someone that can help unblock you. Hence, the need for mentorship in your software engineering career. There is a huge probability that your mentor has encountered that blocker before and you will just tap into their wealth of knowledge and clear you blocker within minutes.
Finally, be teachable, stay committed to a lifestyle of continuous improvement and see feedback as an opportunity to grow and not an attack on your person. I trust these lessons will help someone on their journey to becoming a world-class Software Engineer. Cheers!!!