Becoming a software developer can, at times, seem like an overwhelming and daunting task. In a fast-growing forest of emerging technologies, it’s easy to lose sight of where to focus your efforts to become a better developer. In this article I’ll attempt to distil some of what I believe to be the most important skills and the steps you can take to make the journey easier.
#1 Learn how to focus and improve concentration
It goes without saying that as a developer you will be spending long periods of time sitting behind a desk. Programming requires focus and concentration. This is one of the most underrated skills that beginners overlook. I call it a skill because it is possible to improve how to focus if you actively work at it.
Before you sit down to start work, clearly define what the tasks at hand are. It’s easy to take your eyes off a task and get distracted if you don’t know what the task is in the first place. When you complete tasks and move forward, you’ll be motivated to continue.
If you struggle with focus, it helps to work with a timer. Allocate 25 minutes for uninterrupted focused work. After which you can take a 5-minute break, then rinse and repeat. Small wins are the key.
#2 Master the fundamentals of programming
When learning to code, your first aim should be to master the fundamentals of a programming language. What usually separates great coders from the rest is having an advanced understanding of the fundamentals and knowing how to use this knowledge in sophisticated yet elegant ways.
Learn the set number of language constructs such as variables, arrays, functions, loops, conditional statements, classes, interfaces, inheritance etc. Most software, no matter how big or small, use these same building blocks. Grasping deep understanding of these core concepts will make it far easier to pick up another programming language in the future. Many of these concepts are shared across numerous programming languages albeit having different syntaxes.
Once comfortable with the language constructs, shift your focus to libraries and frameworks. Look to get a general idea of which ones are available for your chosen programming language. In simple terms, a library is a collection of useful code pre-written by someone else that is available for you to use. A framework is essentially a collection of libraries and prescriptive ways to use them. We use libraries and frameworks to save time and stop us from re-inventing the wheel. It’s good to have a broad knowledge of which libraries and frameworks are available and how to use them appropriately.
Once you’ve passed the beginner stage, you should focus more on learning data structures, algorithms, design patterns, and best practices like the SOLID principles. These more advanced techniques are also transferable. As a professional it’s likely you’ll find yourself jumping across different languages, libraries and frameworks. Your end goal should be to become language agnostic and draw upon many of the transferable skills you’ve collected. Let use-cases of projects dictate your tech stack and the tools you use for the job. After all, programming languages are just tools.
#3 Learn how to learn - Learning strategies
Software engineering is an ever-changing field. Every few years the landscape changes with the introduction of new technologies, libraries, frameworks and sometimes languages. This makes it important to regularly review your skill-set to identify and plug emerging holes in your knowledge. If you let yourself stagnate as a developer, you could potentially miss big opportunities. This is why it’s important to know how to learn.
Books are good as reference material or for when you need to dive deep into a particular topic. But be aware that because technology moves so fast, some books might be past their use-by date. It’s best to first skim through the online developer docs to get a broad knowledge of what a particular language or framework can do. This will let you know how big the subject matter is before diving in. Choose what you need to learn and focus on getting results. You learn best when you apply what you’ve learnt.
It’s often easy to get stuck setting up environments before you even get a chance to practice what you’re learning. It’s good to practice in an interactive web environment like FreeCodeCamp when you are still getting your toes wet. Online tutorial videos on sites such as Pluralsight and Udemy are another great way to learn and pick up new skills at your own pace.
Without a doubt you will encounter bugs or get stuck on something. Google and Stack Overflow will be your best friends as a software developer. Learn to search for solutions or ask clear questions with sufficient detail in forums, so people can help you. The chances are high that what you are stuck on has already been solved before and a solution posted online. But a word of warning, make sure you understand the given solutions before copying and pasting dubious code snippets. Be aware that the first solution you find might not always be the right solution.
Follow blogs from top developers in your field. Listen to audiobooks on Audible or software engineering podcasts. Audio content is perfect for consuming whilst working-out or commuting. Although you can’t learn how to program by audio, it will help improve your general knowledge and awareness of emerging technologies and conversations happening in the space.
Remember, it’s not how long you spend learning, it’s about how often. It’s better to spend 30 mins everyday than 3 and a half hours on the weekend. Frequency and consistency are the keys.
#4 Build projects
Get your hands dirty and start building projects as soon as possible. I can’t stress this tip enough to aspiring developers. It helps you learn languages more deeply and gives you a chance to put coding fundamentals into practice.
Project building is the fun part of software development. Create a web or mobile application that solves a problem for you or someone else. The trick is to choose something you are interested in doing. This will keep you motivated. Keep it simple to start with to avoid analysis paralysis. Break large features down into small chunks. You can always expand upon it in the future.
Start using version control software such as Git. Version control allows you to create checkpoints of your code as you develop and rollback whenever you make mistakes. You can also publish your code to GitHub as a public portfolio of your source code.
By building projects, not only do you learn but you can put these projects on your resume. You can also start generating side income from them if you chose to grow and monetize them.
#5 Find a Software Developer job
Developer jobs are in high demand and this doesn’t seem likely to diminish any time soon. Once you have good knowledge of programming fundamentals and some projects under your belt, you can start applying for jobs! I would personally recommend getting into web development because there are plenty of job opportunities for developers at all levels of experience.
Take a look at this web developer roadmap to see which possible career paths you could head down. It further highlights some of the important technologies you might need to learn.
This final tip will accelerate your software developing abilities. Being on a good team is like a power-up for your skills. If you can, find a mentor at your company. You will get to learn from their experience and hopefully avoid major pitfalls. Look for someone who has done what you want to do, or is where you want to be.
Learning to program is not easy, but it is not impossible! From time to time it will leave you feeling stupid, but as a developer you should get used to this feeling because if you are not being challenged, you are not learning. The learning process pretty much never ends.
As a final thought, understand that no developer knows everything and you have to learn a lot less than you think to get started.