What to expect as a software developer
Jack Finlay - August 30, 2018
On the back of my previous article, I want to put forward some experiences and situations you should expect to encounter in your career as a software developer. The life as a developer can be full of fun and excitement, but there are also hard times. Your first accidental commit straight to master, your first failed peer review, your first awkward stand-up. These all form the start of your career, and here’s to that!
You can’t and won’t always be right.
You will be wrong about some things in your career. What matters is what you learn from it, there are many opportunities for this to take place. You might suggest a pattern that might not be suitable, you might suggest a solution that doesn’t meet the brief, you might make assumptions that you shouldn’t have.
Expect to be wrong. It’ll happen, and it’s a good thing. Why? Because you will gain an opportunity to learn something new. When this happens, it’s a chance to be vulnerable and admit you made a mistake. Being vulnerable is what opens us up to making the best connections with those around us. It is a chance to improve your knowledge and make better connections with your team. Admit your mistakes early and you’ll find others more likely to help you fix the problem you may have caused.
Making incorrect assumptions
You will make the wrong assumptions at some point, everyone does. Many times I’ve seen others, and myself, make the wrong assumptions about a piece of work and end up not meeting the requirements. The easiest way to avoid this is to ask questions early and try not to assume anything.
This is another opportunity to learn from your mistakes. If you do end up making the wrong assumptions, own up to it and work forward from there.
Building the wrong thing
This is generally a combination of the above. Many times I have built a feature wrong, or created something that doesn’t meet the requirements. It’s easy to get carried away with something when you are having fun with it. Be careful though, and make sure you are doing what is actually expected of you.
I’ve seen developers spend so much time on other people’s work because it was more fun than theirs, only for them to end up not having done their own. This isn’t to say you shouldn’t help others, just prioritise your own work first. Put your oxygen mask on before helping others.
Equally important to being wrong is the ability to be right, and to express when you know you are correct. This helps others to appreciate your abilities and know that you have earned your place. If you don’t challenge what people think of you, you’ll never grow. You need to be careful about how you go about this one though, as over-confidence will generally not work in your favour.
Over-confidence often doesn’t pay. It might help you in interviews, but when it comes to actually getting work done, no one really cares how good you think you are. They care about results. I’ve seen many developers crash and burn as they fly too close to the sun, elevated by their own ego.
Life begets change and change begets challenge.
Most facets of software development will involve fulfilling predefined requirements. The problem is that these can change as you are working on something.
Sometimes the client doesn’t really know what they want. This is one of the hardest challenges in software. There are tools and techniques to try alleviate this, but some clients just won’t play along. You will face difficult clients, there’s no doubt about that. I’ve faced a few and I can tell you it’s not a lot of fun. Every situation is different, use your knowledge and tools carefully as you try to navigate these treacherous adventures.
Job-hopping is on the rise. It can be normal to only spend a few years at a company. Anecdotally, a lot of people just aren’t as loyal to their companies as our parents or grandparents were.
Even if you don’t want to change jobs, it can be great experience to interview for other positions. I’ve been to interviews for roles I wasn’t overly interested in, and the practice was super helpful for the one I actually wanted.
Not everything can be easy.
There will be times where you just can’t fix an issue. This happens to practically everyone. I’ve seen even lead developers stop to take time to ask questions to other developers. Sometimes you just need to hit a full-stop and ask someone else. This is an opportunity to learn something new and grow from it.
Pressure and stress
You will face stress and pressure at some point. Things won’t always be smooth sailing. This can come from many different sources, including yourself.
There will be pressure to perform to expectations. There’s not only pressure from your superiors, but the pressure you will put on yourself. This pressure you put on yourself is often greater than that from others.
One source of this stress can be Imposter Syndrome. So called because it makes you feel like an imposter, like you aren’t worthy of your post, or that you will be found out for being a “fraud”. It’s difficult to get through. The best way I’ve found to get through it is to just keep doing your job, celebrate your achievements, and practice and work on your technical skills. You’ll get through it.
Assumptions of your lifestyle
When people hear you are a software developer. They often only hear one thing. Big money. Now, in most of the world, this isn’t true compared to the ridiculous amounts you see new graduates getting in Silicon Valley. For example, here in New Zealand, you can expect to earn slightly more than the average salary at first, raising to a pretty good amount of money after some time. It’s nowhere near what you see elsewhere, but on average, you’ll be better off than a lot of others. Money can make things difficult between friends, and even family. Though most troubles can be avoided by simply not talking about it, that’s not always the best approach. So try to keep this in mind.
People won’t understand your job
The other thing people tend to hear when you tell them you work in software is that you “know computers”. I can’t even count how many times I’ve had to explain that “No, I can’t help you fix your computer”, or “No, I can’t stop you from getting spam emails”. Although you may be able to help, it pays to pretend to be ignorant sometimes. The second you touch someone else’s computer, everything becomes your issue, or your problem to fix. I’ve seen it first hand, it can be a nightmare to deal with other people’s computer problems.
People will ask you to hack things
So far in my career, I have been asked to hack into someone’s payroll system so they get paid more, change a billing system to make them pay less for power, and to change people’s grades at their university. These are real life examples of the things people have asked me to do, and I declined them all.
Though most of these requests are in jest, it pays to be serious with people when you decline their commissions to do what is not just wrong, but very, very illegal. People see it as a joke when they ask these kinds of tasks, but the reality is that, often, you may just actually have the ability to do as they ask, so it’s a good idea not to reveal as such.
So far it all sounds a bit gloomy, but there’s plenty to look forward to as well!
Although software development brings about many challenges, it also brings about a lot of opportunity to have a lot of fun.
It feels great to be able to program most of your day and see something tangible build up day-by-day. It’s even better to be paid for it. I love that I get to do what I enjoy every day.
You will learn a lot. Seriously, you might think you know a lot if you are at the start of your career, but that is simply not the case. There are the technical things you will learn, like how to use tooling and languages, but also things like soft-skills and how to work in a team. Time is humbling and teaches you more about things you thought you already knew.
Not all your co-workers will be like the programmer stereotype, but sometimes they are and you may be too. Generally people with the same interests tend to get along pretty well. So don’t be surprised to make some great friends.
Jack Finlay - Software Engineer in Melbourne, Australia. Exploring the writing process and developing my skills through the occasional article on life as a programmer. Follow me on Twitter for updates.