As a kid growing up, I didn’t want to be a software developer even though computers and I were a natural fit. My route to becoming a software developer is pretty unconventional. I can remember as a little child wanting to be a solider, a policeman, a pastor, an assassin, and finally a solider.
I became a soldier and after a little while, realized it wasn’t really as glamorous as I thought. Computers and technology always made sense to me as a kid, and a teenager so I jumped back into computers and haven’t looked back!
The Technology Doesn’t Necessarily Matter
The technology whether it be languages or stacks that you use won’t really matter in five years time. It will change, but the fundamentals of computer science and writing code won’t.
It’s much better to spend your time understanding the what and why instead of the how in a particular language or framework. Once you understand the what and the why it’s easy to understand the how. For most people understanding a particular algorithm won’t matter all that much, because they probably won’t use them all that much in most of their day to day jobs.
Change Takes Time And a Lot of Practice
To become a professional developer and be able to do a lot of meaningful work in the context of the team is going to take a lot of time and a lot of practice.
The key is to really focus in one technology and one area of the stack before trying to become a full stack developer. I recommend picking a particular language, and really trying to understand the fundamentals of it.
Watch tutorials, follow along with them and then try to make some small changes after you finished the video or reading. Try and use that new knowledge to build another small application or script.
Over time, you should have built up quite a few small related apps that you can use as part of your portfolio to land the next job and keep going. After you understand a lot of the fundamentals you should be able to learn some related technologies and be ready for the next big role.
Taking breaks regularly while working is really important especially while debugging. In my post How to Be A More Efficient Debugger I talk about the need to take breaks.
Writing code is both a creative endeavour and a scientific endeavour, so getting into a state of “flow” can be really difficult. I recommend trying to lump meetings and all the busy work together in the afternoon or morning so you have long amounts of time to concentrate.
Develop a Brand
Developing a personal brand is a lot more than the number of followers or fans you have. Developing a brand is about becoming a thought leader and an influencer.
To develop a brand you need to provide value in at least one niche, so that people associate your name with that niche or industry. The easiest way to develop a brand is to do something you like and something you’re good at. The reason why this is important is that because it’s a lot easier to convince yourself to do things you’re good at and enjoy doing.
Motivation for things like fame or money won’t last. And, you won’t be happy with yourself.
Developing a well established network is really important when you need support, or need to find a job. The easiest way to find a job is to use somebody from your network as a reference.
The easiest way to build a network is to develop a relationship with the people you already know (friends, family, coworkers, classmates, etc).
Attending events is import even if it’s little coffee and code events because you’ll find out about a lot more people.
Writing Code Isn’t the Only Part of the Job
Writing code and being able to read code are really important parts of being a software developer but they aren’t the only important things. Communication and being a good team player are equally if not more important.
If you want to grow into a senior position or into a leadership or management position you’ll need to be able to explain technical concepts to not technical people.
Learn From Every Experience
To get better in everything that we do, we need to learn from every experience we have. It’s important to reflect on everything that happens and learn from it.
For example, why did I have an infinite loop that took down everything in the middle of a Saturday night? Why didn’t I write more unit tests?
Learn One Language at a Time
It’s really important to try and only learn one language or environment at a time.
If you focus on learning these concepts you can master a lot of languages very easily:
- Data types
- Expressions vs statements
- Boolean logic & conditionals
Don’t Bring Your Ego to Work
Being driven by your ego will cause others to not want to work with you. Instead of only making yourself look good, you need to focus on bringing the entire team up.