Good morning everyone. I recently crossed the 3 year mark in my career as a developer and finished my master's in software engineering. After reflecting on all this time of eating, sleeping, and breathing code, I thought up some things I wish I'd known before I started. I would like to share those things with you now.
I've written about this before so I won't belabor the point too much, but it's still important to remind newcomers.
The language you choose to start learning programming with doesn't matter. Sometimes people get analysis-paralysis trying to think of which language they should start with when really they just need to start with anything.
This is all to say that no matter what language you start learning, the most important thing is that you start. Cultivating your ability to solve problems with code is what matters. Which brings me to my next point.
This is a lesson more for people starting their careers than those starting their learning journey.
One of the things I've noticed is that no matter how many cool technical things you know, knowing the intricacies of your industry is invaluable. For example, if you work in the Oil and Gas industry, you should have at least a basic idea of how oil is drilled for, refined, and distributed; and you should definitely understand your company's role in that supply chain.
I'm not saying you need to be a petroleum engineer to work in O&G or a medical doctor to work in healthcare, but some foundational knowledge of how your industry works will make you better at understanding what your customers need and foresee problems they might have.
Writing code is a lot of fun and is one of my favorite things to do. However, there's more to software engineering than just coding.
In addition to the code repository, you will have servers, databases, networks, 3rd party libraries, and end-user machines in pretty much all modern software systems. That's a lot of technology that interacts with your codebase, knowing a little bit of each part of the stack goes a long way.
This one is similar to the last one, but different enough to get its own section. Aside from writing code, it's helpful to also know how to get that code to your end users.
For example, my team uses Git for version control, Circle CI for continuous integration, and a combination of Docker files and Bash scripts for deployment. Additionally, we use a Kanban approach for getting user requests from inception to production.
While you definitely don't have to be a scrum master or be able to build a whole CI/CD pipeline on your own to be an effective developer, having some knowledge in these areas will help you fit in with your team as well as give accurate estimates on features and bug fixes (a skill you will actually never perfect).
Like I said at the beginning of this article, I lived programming for the last 3 years. This was often at the expense of my other hobbies and occasionally my friends and family.
Programming is fun, and if it's your hobby, that's wonderful. But if you're like me, it's just a means to an end (that end being keeping a roof over my head).
Something about the software development culture tends to get people thinking they have to spend every waking moment writing code. For most of us though, this is a destructive way to live. Don't forget to hang out with your friends, tell your loved ones you care about them, spend time on your hobbies.
There's more to life than writing code and a well-rounded, well-rested, and happy developer is a lot more effective than a tired, boring, sad one.
Thanks for taking the time to read my article, I have not written here in quite a while. I hope this article as well as my other writings have helped you, please don't hesitate to reach out for anything :)