After deciding this, I had no idea what direction I wanted to take or what I wanted to specialise in.
I’ve been working as a Web and App Developer for the past 5 and a half years and thought I might try and answer some of the questions my colleagues and I had when first getting into programming. Hopefully, these can help anyone else who is considering a career as a developer or has just started a job as a developer.
The first step to getting started is to come up with a project you want to make. It doesn’t have to be anything complicated to start with. A small app, a one page website, whatever you want. All that matters is that you want to make it.
Once you have decided what you want to build, you need to research what technology is going to be best suited for your project, then find a course online that covers that language. Often they will take you through a simple project to get you started. It’s not just juniors that can benefit from this. I did a course recently to learn a new language.
Once you’ve done your first course, you can either try and build a project on your own or do another course to learn even more.
There is so much knowledge about learning to code on the internet nowadays, there's no reason why you can’t learn how to code from scratch.
The short answer is no, you don’t have to go to university. The long answer is, it depends on how motivated you are and how good you are at self-learning.
I personally did go to university and I feel it was the right choice for me, but that doesn’t mean it would be for everyone. It gave me a good foundation of knowledge and helped teach me all the tips and tricks I use to make my day to day life easier that I might not have learnt on my own.
If you don’t want to go to university, that’s ok. There are many courses online that can help you learn how to develop as mentioned above. On the job experience can be just as rewarding and fruitful as a degree. I have work colleagues that do have programming degrees and colleagues that don’t and after a year or two, you wouldn’t know which was which.
The best way to answer this is to decide which sector of developing you want to get into first. If you go to university it’s likely you won’t get much of a choice what languages to learn first but otherwise, it’s entirely up to you as each sector and project will have its own set of languages that are best to learn.
For example: if you want to become a web developer, in the current climate it’s best to focus on HTML, CSS and one of the many Javascript frameworks. If you want to become an app developer, you’ve got options like Java, Swift, or React Native. If you want to do Artificial Intelligence, maybe Lisp would be best for you. There isn’t really a correct answer.
All that being said, if you can’t decide what language to start with, choosing C#, Java, Python or Javascript are all good choices that will allow you to work on a wide variety of projects in the future.
This is a commonly asked question but this isn’t the right place for this endless debate, all I’ll say is there is no best language! However as you begin your journey into becoming a developer you will find which programming language best suits you, your interests, and your career goals.
I’ve only worked for a single digital agency so far but from my experience the main roles of a developer on a day-to-day basis are to develop new features within our existing codebase as well as debug code. One of the other main things I’m asked to do as a developer is to quote on work. This will be more common in an agency setting than an in-house development team, but it’s a useful skill to have regardless. Knowing the tasks involved and how long it’s going to take you to do work will not only allow Project Managers to know what work is stacked up, but also helps you manage your own workload.
Every developer will probably give you a different answer to this, but personally I feel there are two skills that are most important for a new developer and are skills that even an experienced developer needs to be successful.
As a brand new developer, you’re probably going to be spending a lot of time asking your other developers for help and your project managers for clarification on work that needs doing. There is nothing wrong with that but being able to use the right terminology and explain your problems clearly and concisely is going to make everyone’s life a whole lot easier. So the first skill I suggest you work on is just your ability to communicate.
The other skill, that might be even more crucial than communication, is your ability to debug. I work in a digital agency which means that a lot of my work is ticket-based support for multiple clients. While working on new features as well as investigating any issues found, it doesn’t matter how good at coding you are if you can’t find the cause of the actual problem. That’s where debugging skills are so important.
As a junior working in a company, there should hopefully be someone else working with you that will be able to fix an issue if you can’t find it, but often the thing that takes the most time fixing an issue is narrowing it down, so if you can find where the problem is and explain why it’s the cause of the issue to someone more senior than you they will most likely be grateful you’ve not added to their work load and will explain to you how to fix it.
This largely depends on whether you already have a development job or not.
If you don’t have a development job yet; yes, you most definitely should be learning and coding projects in your own time. Showing examples of your previous work is going to be one of your best tools when it comes to job interviews and the more you can show, the better chance you stand.
If you already have a development job, then strictly no, you don’t have to work in your free time. There is nothing to say you shouldn’t if you want to, but it’s up to you. Programming all day is quite mentally tiring and if you don’t want to spend your evenings coding as well, that’s fine. I personally like to spend my evenings going to the gym (when they are open) or playing sports. I spend all day sat in a chair and the evening is my chance to get moving and let my brain unwind.
That being said though, once you get to a certain level in a company, you’ll probably find yourself thinking about how to fix that problem you had during that day, or how you can make something more efficient anyway, or maybe you’ll just magically come up with a new feature in the shower one day. And you’ll probably be interested in the technology you’re working in, so you’ll end up reading articles and technical blog posts in your own time anyway.
I’m not going to lie, programming can be hard. And does it get easier? Yes and no. Over time you should find that things you used to find difficult are easier but there will inevitably be problems that make you feel like you’re a junior again, especially if no-one else you work with has come across the problem before, but once you solve it, it can be the best feeling.
I was once told that you should be able to look at code you’ve written 6 months before and if you’re growing as a developer, you should be able to see ways to improve the work you’ve already done, and generally speaking I’ve found this to be true.
No. As I said before, being a developer isn’t easy and especially as a junior, it’s normal to suffer from imposter syndrome*, I know I did in my first 6 months.
If you’re struggling, the most important thing you can do is ask for help. Ask your peers, tell your managers. It’s fine to admit that you need help because it’s better to ask for help and get a plan put in place to help you sort it than to suffer in silence then get pressure put on you from above which just compounds your worries.
You’ve been accepted for a job because someone saw that you can code so just believe in yourself.
As a bit of fun, I thought I’d poll my colleagues on this answer specifically to see what they said. Here are some of the best answers and my reasonings behind it:
Legacy code – Yeah this can be a nightmare. Sometimes you have to maintain something that wasn’t necessarily written badly at the time, but now it’s just old and bulky and you know of so many ways to do it better in other languages but you’re stuck with it. Very frustrating.
Steep learning curve – As mentioned before, coding is hard and this isn’t often helped in languages like Javascript where often the documentation on external packages can be poor, the errors are misleading or worse, silent and the recommended tech stack moves so fast you can’t keep up, though this is one of its key selling points as well.
Balancing constraints with perfect code – Anyone who has been to university and then joined a development company will probably know all about this. You go from writing the nicest and best code you can, to sometimes just having to do the code that works. Whether it’s due to a time constraint or a project that just doesn’t support the “perfect” solution, it can be frustrating. For instance when working with legacy code or a framework like wordpress. But it’s a sign of a good developer if you know when to be a perfectionist and when a solution will just have to do.
Being the tech guy! – Anybody in tech knows about this one. Just because I’m a programmer doesn’t necessarily mean I know how to fix your computer from your vague explanation to me and I most definitely don’t know how to fix your printer… they often don’t work for us either!
There are loads of pros and cons to being a developer and though I might be biased, I have to say it’s worth it. There is nothing I’d rather be doing. The challenge and the joy of solving problems you get from coding is something you just can’t get anywhere else. I’m in a world that is fast-paced and constantly coming up with new and better ways of doing things - what more could I ask for than that?!
Here’s a word from my boss to aspiring developers and how he can ascertain what a newbie developer is capable of:
"Yes, we can 'test' them, but is this a meaningful exercise? Sending a CV, or arriving for an interview with a variety of examples of personal projects that you can talk passionately about will serve you very well. I have been wowed into offering jobs off the back of a strong portfolio that demonstrates a candidate's potential."
* Find out more information about imposter syndrome.