Starting your career as a developer?  Here's some advice
Image courtesy of Negative Space on pexels.com

Starting your career as a developer? Here's some advice

I recently had a conversation with one of my colleagues. This post was inspired by that conversation. 

My colleague recently started their career, and they were looking for some advice. I’ve learnt a lot of (sometimes expensive) lessons throughout my career and I thought that some of it might be worth sharing. Here's what I've learnt.

Practice makes perfect

Programming, I believe, is best learnt by doing. As much as someone can try to convince you that you can learn a new language in 24 Hours, 21 Days, or a few easy steps – chances are that that will not make you a good programmer. Sure, you’ll learn the syntax of a language and how to string a bunch of commands together, but there’s a big difference between knowing the syntax of a language and actually being able to build something useful in it. 

When you learn something, don’t just look at the “how” (e.g. this is how you declare a class in Java) but also the “why” (e.g. why should I use a class here and what are the benefits of object-oriented programming?). This will help you to understand how to break down a problem and solve it with the tools that you have at your disposal.

Please don’t let me dissuade you from learning new languages but understand that reading a book or doing a course won’t automatically make you a good programmer. You’ll have to practice. Therefore, put some effort into applying everything that you learn. Once you have grasped the basic syntax of a language, find something that excites you that you would like to build. As an example, I am interested in finance and investments, so I've written a program to help me choose stocks to invest in. What excites you? How can you build it?

There are also other options to help you practice what you learn. When I started my career, I spent a lot of time working through some of the problems on Project Euler. Back then, computers weren’t quite as fast as they are now, so this really forced me to think about how I can optimize my code. CodeWars and Advent of Code are other options worth looking at.

There’s more to it than just a programming language

When you’re just starting out in your career, chances are you’ll do quite a lot of one thing (in my case it was Java) and you’ll become pretty good at it. However, don’t fall into the trap of believing that that’s all you need to know. Systems have many, many different moving parts and while you can’t be an expert at all of them, it helps if you know your way around the things that exist in your world.

Personally, I’m sceptical of the idea of a true “full-stack developer” – the tech ecosystem is just too broad. Ten years ago, it was easier – if you built a web app in .NET, the front-end was ASP.NET; if you built your app in Java, the front-end was JSP or JSF – so ultimately, it was all more or less the same tech throughout the stack. 

Nowadays, we have a wealth of different technologies on the front-end and the back-end, and it’s harder to be an expert that all of it – so don’t feel bad if you don’t know everything about everything. Nonetheless, recognize that it helps if you know a bit of everything. You might hear people refer to this as being T-shaped

Off the top of my head, in addition to your primary programming language, things that I think are useful to know include:

  • SOLID principles and design patterns (this applies if you use an object-oriented language – it will help you figure out how to structure your code)
  • HTML, CSS and a web front-end framework (think Angular, Vue, etc.)
  • SQL and databases (this helps immensely with debugging – for some reason, things always seem to go wrong in the database - there's a lot that happens behind your ORM)
  • Infrastructure* (basics of networks, firewalls, and other things relevant to how your software is deployed and executed)
  •  Your IDE (shortcuts and tools – the right tools can help you be a great deal more productive)
  • Your operating system (if you use Linux, the Bash command line can do wonderful things)
  • Version control software (in our day and age, this is almost always Git)
  • Continuous integration and continuous deployment (how does code go from your machine into production – what happens in the process?)

*Interestingly, if you do an entry-level cloud certification like the AWS Cloud Practitioner or Azure Fundamentals, the training material often teaches you quite a lot about infrastructure. 

Find a mentor

Have you ever come across anyone that you really admired? If so, why? What made them stand out and what can you learn from them? This brings me to my next piece of advice – find a mentor.

You’ll (hopefully) work with people with a fair amount of experience who will be willing to share some of the lessons that they’ve learnt with you. A good mentor should be able to help you figure out what you need to focus on in order to grow in your career. They’ll also help you to figure out a way to address those gaps. I’ve been fortunate enough to have some great mentors. 

So, how do you find a mentor? As awkward as it might feel, it’s actually pretty easy.

Step 1: Identify a potential mentor.

Step 2: Go up to them and go “Hey, I really like how you do <insert what you like> and I would like to ask you to be my mentor.”

I haven’t met many people who will deny a request like this. If someone does turn it down it for any reason (perhaps they are just really busy and don’t want to let you down), find another potential mentor and try it again.

Once you’ve found a mentor, try to meet with them regularly – at least an hour every two weeks or so. Remember that they are offering up their time to help you, so be sure to prepare and do your part as well. Go into your mentorship sessions with specific questions, and be open to feedback (positive and negative) from your mentor. 

Find opportunities

There’s a dangerous trap that you can fall into – doing the same thing over, and over, and over again. When this happens and you look back at it ten years later, you end up with one year’s worth of experience ten times, rather than ten years of experience.

Don’t let this happen to you. Don’t grow too comfortable in what you’re doing right now. Put your hand up when new projects come along. If you feel that you’re no longer growing, have an open and honest conversation about it with your manager. A good manager will try to find a way to help you and to expose you to the new things that you want to learn. If you work for a software consultancy that has a variety of different projects across different clients, it also makes it easier to move between projects and get exposure to different technologies and domains.

If, despite your best efforts, your manager isn’t able to address your concerns, don’t be afraid to look for another job – even if you decide to stay where you are, there’s no harm in looking at what’s happening in the industry. 

There are many, many different job boards that you can try. In South Africa, OfferZen is a great place to start. If you do decide to go this route and you land an interview, be honest with your interviewer about what you’re looking for. Don’t move from one unsatisfactory job into another. While we’re on it – the opportunities that you pursue should be aligned with your values – don’t take a high-paying job doing something that you don’t believe in; that’s a recipe for being miserable.

Of course, you could always contribute to an open-source project if there’s something specific that you want to get some experience with. Lastly, if your company has hackathons, get involved there and use it as an opportunity to play with something that interests you.

You own your career

I’ve spoken about finding a mentor and looking for opportunities to learn, but there’s one thing that I want to reiterate – you own your career. You are responsible for the decisions that you make, and the investment that you put into yourself and your career.

You might be lucky enough to find people who will help you (and I hope you do), but ultimately, you are responsible for your career. Don’t expect someone to hand you your dream job on a silver platter – you have to work for it. 

Put together your own plan for your career, and find people who can help you to execute that plan; just don’t expect them to do the work for you.

Get involved in a community

I was a good four years into my career before I discovered that there’s a vibrant software development community. I wish I had known about it earlier!

There’s a lot to learn from engaging with other, like-minded, passionate software developers – and thanks to sponsors, you can attend a lot of events for free. I recall one of the first user group meetups that I attended – someone presented a lightning talk on a particular testing framework that I thought was really cool. Not too long after that, I convinced my team to start using it. 

Aside from learning, you also get to meet some great people and build relationships (it’s an important component of your career). Once you’ve attended a few events and you understand how they work, submit a talk and go and present at an event – it’s a great way to build your personal brand. Speaking is a scary prospect, but it’s really not as bad as it seems. If you’re keen to try it but you’re nervous, find someone who has spoken at events before and ask them for some advice.

A few events that I can recommend (some are free, and for the paid ones, ask your company to buy you a ticket out of the training budget – it’s worth it).

Share what you learn

During the first few years of my career, I was doing a lot of work with Enterprise Java Beans and Java Swing (the desktop UI framework). So, I discovered that people on the Sun Java forums (this was before StackOverflow) could answer some of my questions and help me solve some of my problems. Then, I discovered that I could do the same (i.e. helping others), so I became a regular contributor on the forums. Through helping other to solve the problems that they were running into, and sharing some of my knowledge, I was able to gain a better understanding of the tools that I was using.

What I’m getting at here is this – don’t just trawl StackOverflow for answers; start answering questions that other people post as well. Learn from the problems that they run into. At the same time, this also helps you to build a personal brand – your StackOverflow profile is visible to everyone, including potential employers. 

In my experience, writing is also a good way to refine what’s going on your mind. By writing something down for someone else, I often gain a better understanding of it for myself. So, once you’re up for it, start a blog. Write some articles and publish them on Medium, LinkedIn, DZone, or any of the other options that you like. Share what you’ve learnt.

It’s not just about code

I’ve always been an introvert, and when I started working, I suddenly had to deal with a multitude of different people every day. This isn’t saying that introverts can’t deal with people, but it didn’t come naturally to me. 

A large part of your career will be spent working with people – your team, your boss your customers.  It’s not just about writing code. 

Development is a team game, and if you want to do well in your career, you need to learn how to work well with others. What motivates them? How should you engage with them? What are their objectives? How do adapt to their context when you speak to them?

I found the book “How to Win Friends and Influence People” to be incredibly helpful in my own journey. I think it’s worth a read.

Take care of yourself as well

It’s likely that you’ll end up spending a few late nights trying to solve a crisis. The first instance that I can remember in my career involved a SQL query without a “WHERE” clause. There have been many more since then.

Those late night firefighting sessions are great opportunities for learning, especially if you have more experienced people supporting you. However, don’t allow this to become the norm in your career – the nature of our chosen line of work is that this happens once in a while, but don’t work 16 hours a day, seven days a week. That’s not healthy and it’s not worth sacrificing your physical and mental wellbeing for someone else.

Burnout is nasty and I would suggest that you do everything you can to avoid it.

Learn how to manage your finances

You are entering a career that can be quite lucrative. I’m not going to lecture you on money, but learn how to manage it well. Don’t get into lots of debt; rather allow your money to work for you. This speaks to things like setting up an emergency fund for unplanned expenses, considering how to save for your retirement, and learning at least some of the fundamentals of investments.

Oh, and don’t believe anyone who wants to take your hard-earned cash and promises you easy money for minimal effort.

Here’s some worthwhile reading and a few Twitter accounts worth following (use it, don’t use it – up to you):

Keep on learning

I’ve always been an avid reader. I know I said that books and courses alone won’t make you a good developer, but I do think that reading added value to my career. I’ve read loads of brilliants books on tech, but if I had to narrow it down to one single book, I would have to recommend The Pragmatic Programmer.

Aside from tech, l also enjoy books on business, finance, psychology, and philosophy. Finance books give me some insight into the financial sector, which is a domain in which I work quite often. Business and psychology help me to understand the companies and the people that I work with. Philosophy helps me to understand the world better. I think that many of the books that I’ve read have contributed, in some small way, to my career.  I suspect that this is why.

Of course, if you’re not a fan of reading books, there are also a multitude of blogs and online courses that are frequently updated that you can use to keep on learning.

~

The advice that I’ve shared here is entirely based on what has worked for me. So, this means that it’s biased and that your mileage may vary. Nonetheless, if you are starting out in your career, I hope that my learnings can offer something useful. Good luck!

Feel free to drop a comment with thoughts, suggestions, or advice for other developers.

Jan Naude

Software Architect at FNB Core Banking Platform

2y

Some good points there Riaan Nel. Thanks for sharing.

Mfanelo P. Mbele

CSE1@AWS - Systems Engineer specializing in DMI Cloud Support | Former DevOps Systems Developer | Former Sales Exec | Passionate about Business, Engineering and Tech | A Science and Philosophy Enthusiast | A Speaker.

3y

Thank you Riaan, It appears I needed this after a massive switch I made from BMW sales to software development, I went back to university to study Electrical Engineering majoring in Computer Systems for this industry. On my pipeline from today. - Get a mentor - Find the lucrative part of the industry 😄.

Thabo Ncube

Functional Test Manager Discovery

3y

This is a great

Adrian Tonkin

Agile Programme Manager

3y

I especially like your advice about learning to manage money. People in good paying jobs can be surprisingly ignorant about how to invest and grow their personal financial security. Top job, Riaan. Thanks for sharing this insightful piece.

Ashley Modisane

Lead System Analyst at FNB South Africa

3y

Love this

To view or add a comment, sign in

Insights from the community

Explore topics