Two years ago I made the decision to change my career from structural to software engineering. I currently work as a developer consultant, which is my second job as a software developer/engineer. I typically work with web applications.
Towards the beginning of my career change, I wrote Why I changed careers. In this article I will revisit my decision.
Expectations and Reality
There is a lot of innovation happening in the tech industry. Before, I thought becoming a software developer would bring me closer to bleeding edge technology such as self-driving cars and augmented reality. Developing software was supposed to keep my brain fit within an exponentially changing world.
Highs and Lows
Writing code can be frustrating. My most memorable bug was while writing the code for my thesis in Fortran. Don’t laugh! In Academia, a lot of number crunching is still done in Fortran today.
I looked for the bug for six weeks before my supervisor figured out that I was missing parentheses from a really long formula. This resulted in the order of operations being wrong.
Remember how α + β * γ is not the same as (α + β) * γ ?
Looking for the bug was not fun at all. Non-working software can be very frustrating, but the high you get from working software trumps it.
As developers, we often get instantaneous feedback from the code we write. It’s addictive. The first time I ever had this feeling was also while I was working on my thesis. I had to implement an algorithm that was used to plot a graph using MATLAB. I remember the first time I got it working I was so shocked (in a good way) that I took the rest of the day off. This feeling is still awesome three years later.
Learning something new is often very accessible for developers. You can read a book, browse articles on Medium, complete a tutorial, or take an online course — and you can get started straight away.
It’s great to see evidence of your progress. I remember when I started out as an intern. I had Fridays off for self-study where I would learn about anything that was relevant to the project I was working on. I would learn something on Friday and I was able to apply it on Monday. It was awesome, and it allowed me to catch up quickly.
In the last two years, I have learned that just like anything, the deeper you get into something, the more your progress decelerates. However, the satisfaction you get when applying something you have learned still remains.
Delivering software can be very collaborative. I find the idea of working in an Agile team particularly appealing. What I didn’t realize when starting out was how much of a loaded term Agile could be! When we work with clients, they are often taken aback at how closely we work together.
For us, Kanban, pair programming, test-driven development (TDD), and Continuous Delivery is the norm and everything else is an exception. We also have regular Stand-ups, Retrospectives and Showcases. I expected Agile Software Development to be effective, but it actually blew away my expectations. I have even convinced some friends in other industries to implement some of the Agile ceremonies, which has improved their work as well.
Software development attracts a lot of people who are willing to share their work with Open Source. Funnily enough, I have found it quite difficult to get in to this space. There are a lot of resources out there for developers to submit their first pull request and contribute here and there, but I still haven’t found a project to contribute to regularly. However, that is not say that I don’t use Open Source Software all the time! This is truly something that sets our industry apart from others in a positive way.
As you can probably tell, I am very happy with the decision I made two years ago. If you compare this article to Why I changed careers, which I wrote at the beginning of my developer career, you will see that the reasons have pretty much stayed the same — and hopefully now have a bit more wisdom to back them up.
Before you go… Thanks for reading the article! I write about my professional and educational experiences as a self-taught software developer, so check out my blog or subscribe to my newsletter for more content.
You might also like:
- Learning material — software development is a list of recommended resources that I have used and regularly update. It starts with Introduction to Computer Science.
- Is full-stack web development worth learning?
- Applying the open-closed principle to UI components