Career transitions are never easy, but sometimes they lead to unexpected and fulfilling paths. My journey from civil engineering to software development taught me valuable lessons about adaptability, continuous learning, and following your passion.
The Starting Point
My fascination with computers began long before university. I still remember the first time I encountered those hunched-back Windows computers at my cousin's house over a decade ago, I was mesmerized by how these machines could respond to commands and create things on screen. I was equally fascinated by the internet, this "magical" network that could connect me to information and people anywhere in the world.
When I finally got my first mobile phone at the age of 16, it was like holding the future in my hands. I spent so much time discovering online gaming, classics like Need For Speed, Asphalt 7 & 8, Subway Surfer, and Real Football showed me the incredible possibilities of interactive technology. That phone became my gateway to understanding technology in a more personal way.
In secondary school, I naturally gravitated toward the sciences, with computer science and mathematics being my absolute favorite subjects. Although the computer science curriculum wasn't as exciting as you might imagine, mostly theoretical concepts with limited practical applications, it still fueled my curiosity. I held onto the hope that one day I would be able to fulfill this burning passion for technology.
The Civil Engineering Detour
When it came time to apply for university, I had my heart set on studying Computer Engineering at the University of Ilorin. It seemed like the perfect fit, a chance to combine my passion for computer science with my love for engineering. I wanted to understand how technology worked, from the hardware that powers our devices to the software that brings them to life. I even spent 6 months in the school's pre-degree program (let's just say those 6 months weren't exactly what I'd call thrilling), filled with determination that this would be my path to finally diving deep into the world of technology.
However, life had different plans. When the admission results came out, I was accepted to study Civil Engineering instead. It wasn't what I had dreamed of, but I decided to embrace this unexpected opportunity.
The Transition Period
Early on in my university days, I realized I didn't want to be just another average civil engineer. Understanding how tough the job market could be and the importance of technology in engineering, I decided to learn various software tools and became increasingly interested in the computational aspects of engineering. I knew that to stand out, I needed to embrace technology and develop skills that would differentiate me from my peers.
I became proficient with industry-standard software like AutoCAD for drafting, SAP2000 for structural analysis, and ETABS for building design. I also learned Revit for Building Information Modeling (BIM), which introduced me to visual programming through Dynamo, Revit's computational design environment.
But I didn't stop there. I explored programming languages like MATLAB for mathematical modeling and eventually dove into Python for automating repetitive calculations. Python was the real turning point, it brought me back to that original fascination with computers and programming that I had felt years earlier. Suddenly, I wasn't just using software; I was creating solutions, writing code that could solve engineering problems in ways I had never imagined.
Learning How to Code
Despite the disappointment of not getting into Computer Engineering, I was determined not to let go of my passion for programming. What followed was one of the most intensive and rewarding learning periods of my life, a double life where I attended classes during the day and transformed into a coding student by night.
The Night Shift
My routine was simple but consistent: attend lectures during the day (when I could drag myself there), and then code until late into the night. Some nights I would find myself programming until 2 or 3 AM, completely lost in the flow of solving problems and building things. It wasn't always easy, especially when I had early morning classes the next day, assignments to submit, or tests to prepare for, but the excitement of learning something new every day kept me going.
YouTube: My Programming University
If there's one resource that truly changed my life, it was YouTube. Since I wasn't studying computer science formally, It became my virtual university. Youtube is a goldmine of programming tutorials, from absolute beginner content to advanced software engineering concepts.
The Learning Process
My self-taught journey followed a pattern that evolved over time:
Phase 1 - The Basics: I started with fundamental programming concepts - variables, loops, conditionals, and functions. YouTube tutorials made these concepts accessible and engaging in a way that textbooks never could.
Phase 2 - Language Deep Dives: I focused intensively on specific programming languages, following comprehensive tutorial series that took me from beginner to intermediate level.
Phase 3 - Independent Project Building: Armed with basic knowledge and the confidence to work independently, I started building small projects from scratch. These weren't tutorial projects, they were solutions to problems I encountered or ideas I wanted to explore. This is where real learning happened.
Phase 4 - Expanding Horizons: I began exploring different programming paradigms, frameworks, and tools. I learned about web development with HTML, CSS, and JavaScript, and later delved into backend development with Node.js and Python.
The Challenges
Learning to code alongside a full academic load was tough. It meant sacrificing social time and carefully managing every hour. There were nights when I felt overwhelmed or stuck on a particular concept, and the lack of immediate feedback or structured curriculum made it easy to feel lost. Learning alone meant missing out on the collaborative aspects of traditional computer science education, forcing me to find other ways to connect with the programming community. With so much content available on YouTube and other platforms, it was sometimes difficult to know which resources to trust and follow.
The Breakthrough Moments
The Project That Changed Everything: I built a project I was particularly proud of and decided to share it on LinkedIn. Within days, a startup founder reached out, impressed by the work, and offered me my first opportunity. That initial project led to more opportunities, and the startup eventually offered me a full-time position. It was surreal, going from coding alone in my "box" to being hired by a real company, all because I shared my work publicly.
Working at Startups
My first software development roles were with very early-stage startups, which proved to be the perfect training ground for rapid development and scaling. In the startup world, shipping is better than perfection, building in days rather than weeks. The startup environment forced me to wear multiple hats. This breadth of experience was invaluable, giving me direct impact where every line of code affected the business, fast feedback loops with user responses within hours, and a deep understanding of how technical decisions influence user experience and revenue. The resourcefulness, adaptability, and end-to-end thinking I developed in startups became skills that transferred everywhere in my career.
Key Lessons from the Transition
Transferable Skills
Engineering disciplines share fundamental problem-solving approaches that translate well to software development. Systematic thinking helps break down complex problems into manageable parts, while attention to detail ensures understanding that small errors can have big consequences. Take time to identify your own transferable skills from your background, they're often more valuable than you realize and can give you a unique advantage.
The Learning Mindset
Software development requires continuous learning due to the rapidly changing nature of technology, where new frameworks, languages, and tools emerge constantly. Being eager to learn continuously and upskill regularly isn't just beneficial, it's essential to stay relevant in the field.
The Rewards
The software industry offered opportunities I hadn't anticipated. I found myself building products used by people worldwide, working with cutting-edge technologies like AI and ML, collaborating with some of the most talented people from around the globe, and being part of amazing developer communities that thrive on knowledge sharing.
Finding work that aligns with your interests makes a huge difference. Software development is both analytical and creative, bringing new challenges to solve every day. The field rewards curiosity and growth through continuous learning, and there's deep satisfaction in creating tools that improve people's lives and work.
Advice for Career Changers
Start small by building side projects in your spare time, taking advantage of online learning resources, contributing to open source projects, and networking with developers in your area. Leverage your background by using your domain knowledge, bringing a different perspective to software teams. Most importantly, be patient with yourself. Imposter syndrome is normal, learning curves are expected, celebrate small wins, and focus on where you'll be in 2-3 years rather than immediate perfection.
Looking Back
The transition from civil engineering to software development was one of the best decisions I've made. It taught me that passion matters, working on something you're genuinely interested in makes all the difference. The tech community welcomes and embraces people from all backgrounds, and software development offers endless opportunities for continuous growth and learning.
Are you considering a career transition? What's holding you back, and how can the community help you take the first step?