I hear of stories of many software engineers who always knew they were going to work with computers because they started tinkering with them when they were kids. Or they had a computer club in school. Or their parents bought a computer when they were and they thought coding was fun. All these are very common for software engineers in the US & Europe but for many of us in Africa? We didn't see a computer until we were halfway through high school. And when my dad finally bought a PC and set it up at home, it wasn't a “tinkering machine”. This was for work! ðŸ˜‚
I remember seeing one of my uncles installing an operating system that looked totally different from the Windows 2000 and Windows XP I was used to. I asked him what it was and he said “It's Linux”. He was a network administrator back then and had a huge book full of commands that he had to refer to while he was working. It looked so scary to me, I was like “nah this is madness, lemme go play some video games”.
I didn't do any programming until University. C++ was boring to me. I could do it but had very little motivation to go beyond class assignments. My first semester ended and my dad insisted I do some extra curricular activities so he enrolled me into a programming class where we learned Visual Basic and .NET. I really liked Visual Studio and the whole drag and drop method of building windows forms. That still didn't really motivate me.
It was when I came back to school that I had an epiphany. We had to go pay our school fees at the bank, which was outside the school then go back to the Finance Office for an official receipt. Then use that receipt to register for each course we are taking. At every step, you have to wait in a queue for 2–3 hours. It took 3 to 5 days to actually finish the entire registration process. As impatient as I am, I started asking myself: “Isn't there a better way? Why do I have to provide the same information over and over and go to multiple places to complete my registration?”. I started researching web development, databases, windows applications development and told myself I could build this thing. Not to resell it, just to prove a point.
So something that frustrated me literally got me motivated. And that's how I started learning how to code seriously. Since I was already familiar with VB, I thought I could build the Students Information System as a Windows Application using VB. I started with designing the forms with the fields, did all the validations and then I got stuck with this: “How do I actually save this? What do I need to do to be able to store this information and query it later?”
I paused with VB and then jumped into how to use Microsoft SQL Server and the SQL language itself. Once I was comfortable with that, I went back to my application to make it connect to the database server and do the basic CRUD operations. At this point, I had a working system to manage students and courses. Now how do I make students register online for their courses? I can't build another windows application and expect them to download it.
That's what led to learning about web development using ASP.net. Seeing as I knew no HTML then, that's what I started with. Then I learned CSS. This was quite painful because there was no CSS framework like bootstrap. But I kept going because I really wanted to build this thing.
When I eventually built it, I was really happy. I felt accomplished! And since then, I've always approached learning new tools, frameworks, technologies based on what I wanted to achieve.
So no, I didn't become a software engineer because I enjoyed coding or grew up around computers or any of that. I became a software engineer because the problems I cared about solving required me to learn how to code.