Lewis Mwaura: How ALX and The Room changed my life
When Lewis joined ALX as an SE learner and later The Room came calling with job opportunities due the exceptional talent that he was, his life became a software engineer's perfect fairytale.
Hi Lewis, tell us a little about yourself
My name is Lewis Mwaura and I am a Software Engineer currently working as a Full Stack Developer at Serenity. The role is back-end heavy and I got it all thanks to The Room who helped negotiate and secure it for me. My personal and career ambition is to create African solutions to African problems.
Did you always know that you were destined for a career in tech or you stumbled into it?
I was one of those kids that when you give them a computer, they will find their way around it without needing a manual or guidance. I came across coding back in High School but I did not fully understand what it was about. I went to a Kenyan High School hence I chose computer studies and during my final year project, that is when I interacted with code for the first time. However, at that time teachers were giving us the code and then we would do some little bit of interfaces here and there hence there was no writing code from scratch. When I joined campus, I knew I wanted to do something in computing due to my love for computers and I equally did not know anything about Software Engineering since it was a fairly new concept. At University, I undertook an undergraduate bachelor of science degree in information technology.
How did you hear about the ALX software engineering course and what piqued your interest?
In High School, I was the chairman of a group called Junior Achievers and some of our members were enrolled in ALU. For those of us who did not make it into ALU, we stayed back in Kenya and continued with our lives and studies. One day as I was scrolling Instagram, I saw ALX but I ignored it because I was thinking it was just one of the many tech bootcamps out there. The second time I saw it, it was about how ALX is offering a software engineering course in partnership with ALU and that prompted me to click and read further. I went through the first page and I was very excited to read the mission of ALX i.e. upskilling African youths who will be the largest human resource in the next decade. Now remember my ambition is to create African solutions to African problems because currently we import our solutions. So here is ALX doing that so why not be part of such a community? That was my path into ALX and as they say, the rest is history.
You were in cohort 4 hence amongst the pioneers of the #ALX_SE program, take us through the application process back then
I joined in early 2021 and back then the application process was very technical. We had to create a small website within a week as part of the selection process and you equally needed to have substantial prior tech knowledge. For me, it was not difficult because at that point I had 2 years of experience because I started doing software and coding back in 2017 and I was already working at a company called Onfon Media. There was a technical interview back then and once you pass that, you go straight into orientation and coding.
You got a job through The Room, tell us about that process?
On Slack back then, we had a jobs channel where a pathfinder would either post jobs there or we would be asked to drop our CVs in a particular folder. The pathfinders will then advise you on how to improve your CV and then they will match your CV to a job that suits your experiences and skills. So apart from the day to day grind i.e. battling with C and python or fighting with your sandbox or Betty is on your case, we would get emails of certain open jobs. These job alerts started coming in at the end of sprint 1 and I personally got three interviews and I really regret how I fumbled an Amazon Web Services opportunity. I did not take the opportunities seriously at that point hence I failed to prepare adequately and I failed the codility test for the AWS opportunity. However, The Room team reached out to me again when they had 2 opportunities available at Serenity and another company I cannot quite remember.
What helped me stand out is that I had some prior working experience because this was about 6-8 months into the program. At this point, I was already done with C, I had quite mastered python and I was doing aspects such as react to solidify my full stack skills. When Talent from The Room reached out to me with the 2 opportunities, I quickly settled on Serenity because they were doing something that closely mirrors my personal and career ambition of building African solutions for African problems. Serenity is passionate about providing quality but affordable healthcare to Africans because in Africa, you are always one illness away from poverty. I interviewed, I got the job and that is where I am till date.
When Talent from The Room reached out to you, did you ever believe that something would come out of the whole process?
One thing is that I came from the ALU mindset and I intimately understood what they were all about. So I told myself that if ALX is a child or brother of ALU, then they must hold the same values. However, when jobs were being posted in hundreds in the jobs channel and CVs being requested at random, I literally did not think much about it. I used to apply for almost everything and send out an almost generic CV. However, when I fumbled on the AWS Amazon opportunity, that is when I knew there is really something serious going on with the jobs channel. I, therefore, started filtering through the hundreds of opportunities that were being posted and picking those that best suit my skills and experience. I would say what helped me is that I responded to the call that was made e.g. when they asked for people to share CVs, I sent mine and also made an effort to apply. The jobs will not fall on your laps, ALX will not spoon feed you a job, they only create an enabling environment and provide you with access to networks and platforms and it is you to then take full advantage of the opportunities.
What does the interview process for a Software Engineering role look like? What are the do’s and don’ts?
I got the job through The Room hence my interview process was a little longer with 5 stages. I first had a call with Talent and she sought to understand my mindset, skills and which role would be a great fit for me. After that, I got onto a call with the Serenity hiring team for a technical interview where you are given a bunch of questions and you are expected to solve them live on the call. The technical questions revolved around python, DevOps, version control using tools like GitHub as well as frontend questions because the role was for a full stack engineer. There were also questions on data structures which we had learnt at ALX while doing C but since C is hectic, I did it with python.
What advice would you give Software Engineers in the program to pass a Technical Interview?
The most important thing is not to get all the technical questions correct but to demonstrate to the interviewer your thought process and your ability to do hard things. During my interview there were some areas that I would have optimized to provide a better solution but I avoided getting sucked into the temptation of doing everything perfectly. Aim to solve the problem first and then you can optimize later if you still have enough time left on your hands because most of the interviews are short and timed. There will be a review session where you take them through the solutions you have come up with and in case you do not know something, it is better to just admit that you either do not know or you need time to go back and look at your submissions and see areas where you can improve.
The next call was on culture fit for them to see if I fit into their ways of working and it was basically gauging my soft skills. I think for many people in the tech world, they often overlook this part and fail to prepare adequately thinking they can either shoot the answers on the spot or that it will not have much bearing on where they get selected or not. The easiest way to help you prepare and practice adequately for this phase is to use the star method.
Many software engineers, especially at entry level struggle with salary negotiation, what would be your advice?
For me in this recent role I was lucky that The Room team (Talent and Fiona) did all the negotiation for me. I just told them what my expectations were and then I left everything else to them and they did an amazing job. However, if you have to negotiate by yourself, first of all just look at what both your local and global market compensations rates are for the role you are applying for and be realistic with your ask from there. However, if you have to start with a lower compensation, seek to have an agreement on your contract such as after 3 months and having seen what you can do, there is a provision for increase in pay. There are other ways of pushing for better pay for example, asking about other benefits such as medical cover and remote working stipend if it is a remote role. Factor in other costs such as if the job requires you to commute, does the role require you to work overtime or on weekends and when you point out factors like these, it is then easier for you to push for higher pay. Do not be fixated on just throwing up a figure, break it down and justify why that is what is fair to you by including some of these factors to help drive that price. Most importantly, do not get comfortable if you feel you are not being compensated enough, keep working on yourself and keep applying because they say the easiest way to get a salary increment is to switch roles and/or employer.
Based on your role at serenity, what would you say is the day to day work that a Software Engineer does…
First of all, I did the hardest part of ALX which is C while in full time employment. However, after 8 months in the program and when I got the role at Serenity, I dropped out. I dropped with good reason because Serenity is a startup and you get to work more hours than you would in bigger companies where you have several people taking on a project. I love working in a startup because there is an opportunity to keep learning a lot and keep polishing your skills because you do a lot of overlapping roles. I currently do backend, frontend and devops and it may seem like a lot but seeing that I dropped out to focus on this role, I have been enjoying everything because it helped keep me going from where I had stopped with ALX. My official title is a Full Stack Developer and the role is backend heavy hence there are a lot of databases, APIs and deployments. I, therefore, dropped out because of working more hours, learning more things than I thought I could in a very short period of time. I have really enjoyed working at Serenity and that is why I am still here today because I enjoyed building solutions and seeing the software being used by real people, real patients and real doctors making quality healthcare affordable and accessible to all.
Looking back at your ALX journey, what would you say are some of the most important skills you gained that are really helping you in your role?
First of all is grit, every aspect of the program has been designed to help you build your grit even Betty and her checkers. The intensity has really helped me be able to deliver on very tight deadlines. On technical skills, I came to realize that basics are what really matter. From the for loops, the if statements, memory allocation works, it all goes back to the basics and understanding them makes you a better software. It makes you write efficient software. So it's all the basics. That is what I felt that is a technical perspective that I gained from AXL. At the time I didn't see it as much but today when I look back at the journey, if it were not ALX, some of these things I could have just gone to Stack Overflow copied without understanding a thing as long as it works.
Are you team VI or team emacs?
I personally prefer a different one called Nano but if I was to pick between VI and emacs, I will definitely pick VI.
To stay in touch with Lewis, kindly contact him on LinkedIn and Github. Do not forget to join us in this upcoming twitter space on 22nd August to hear more about how to land a software engineering role.
https://open.substack.com/pub/facesofalxse/p/lewis-mwaura-how-alx-and-the-room?r=2i76nw&utm_campaign=post&utm_medium=email
I'm here to provide you with some general wisdom for African youth in the field of software engineering. While the principles of software engineering apply universally, here are a few pieces of advice that may be particularly relevant for African youth:
Embrace lifelong learning: Software engineering is a rapidly evolving field, and it's essential to stay updated with the latest technologies, trends, and best practices. Cultivate a mindset of continuous learning, whether through online courses, books, attending conferences, or joining local tech communities.
Leverage online resources: The internet offers a wealth of free or affordable resources for learning software engineering. Take advantage of online coding tutorials, forums, and open-source projects to enhance your skills and collaborate with developers globally.
Build a strong foundation: Focus on developing a solid understanding of computer science fundamentals, including algorithms, data structures, and software design principles. This knowledge will serve as a strong foundation for your career and enable you to adapt to new technologies more easily.
Seek mentorship and networking opportunities: Connect with experienced professionals in the software engineering field who can guide and inspire you. Look for mentors within your local tech community or online platforms. Networking with like-minded individuals can also open doors to job opportunities and collaborations.
Contribute to open-source projects: Engaging with open-source projects not only allows you to contribute to the broader software development community but also helps you gain practical experience, improve your coding skills, and showcase your work to potential employers.
Develop problem-solving skills: Software engineering is fundamentally about problem-solving. Focus on enhancing your analytical and critical thinking abilities. Practice breaking down complex problems into manageable components and designing efficient solutions.
Collaborate and work in teams: Software engineering often involves working in teams to build complex systems. Develop strong collaboration and communication skills, as they are crucial for successful teamwork. Participate in group projects or hackathons to gain experience in working with others.
Embrace entrepreneurship and innovation: Africa has a growing tech ecosystem with numerous opportunities for entrepreneurship. Instead of solely focusing on traditional employment, consider building your own tech startup or exploring innovative solutions to address local challenges.
Be resilient and persevere: Software engineering can be challenging, and setbacks are a natural part of the learning process. Embrace failures as learning opportunities, stay persistent, and cultivate a resilient mindset to overcome obstacles and achieve success.
Give back to your community: Use your skills to make a positive impact in your local community or continent at large. Consider volunteering, teaching coding to aspiring developers, or contributing to initiatives that promote technology education and access.
Remember, these are general guidelines, and ultimately, your passion, dedication, and hard work will play a significant role in your success as a software engineer. Good luck on your journey!