So, you just switched careers and now you are into tech, a software engineer or you have been doing the programming, coding thing for a few years and the same question is burning through your mind, how do I get my programming skills from 10 to 300mph in less than no time like a state of the art sports car?

Yes, you already know becoming a Dan Abramov (co-author of Redux and create-react-app) or David Heinemeier Hansson (creator of the Rails framework) takes time, however, time is what you do not have and like me, you’re looking for smart ways and hacks to gain proficiency in as little time as possible.

The bad news is everything worthwhile takes time and you’re not going to wake up next week an expert programmer.

The good news is that you can be very deliberate about your growth and cut your time in more than half. You can wake up next week a much better programmer/software engineer than you were today.

To be clear this article does not necessarily address how to grow your career, branding yourself and looking good to the software community. You can appear amazing and not know shit. While the techniques discussed here are definitely transferrable to growing and branding yourself, it is not its main focus.

The focus here is to increment the substance you are made of. Your knowledge base and ability to solve problems like they are nothing, how do you get to become a world-class engineer capable of leading global engineering teams in as little time as possible by employing battle-tested hacks? Let’s take a deep dive.

Practice the basics

It seems like a no brainer but it’s amazing how many software engineers do not really understand the language and tools with which they work with every day. A consequence of this is a lack of confidence and not being able to bend these tools to your desire, how could you? You don’t know the quirks, highs, and lows of these tools. Learn the underlying language and the framework will be easier to work with. Learn JavaScript properly and React or Vue will be much easier. Of course, nothing stops you from starting with the framework first but learn the underlying technology especially if its a framework you use regularly. Who knows you just might build your own framework.

Learn how to learn effectively and fast

The software development world moves very fast and tools that are really popular today might be out of fashion a year later as we discover better and more efficient ways of doing things. Learning how to pick up new tools and languages fast as a software engineer is essential sometimes to even keeping your job. Studies show that you learn and remember more when you participate actively. This is achieved by building something small with that tool or language. Also, realize that in most cases you do not need to learn every nuance of that tool. You only need a working knowledge. In the end, employers care mostly if you can solve their problems not necessarily the amount of knowledge you have on the language or tool. I’ll dive deep into this in another article. Stay tuned.

Study Algorithms

If you do not have a computer science background, chances are that this one will get you frowning. However, you need to embrace it to eventually change your game fast. While you may not use most of the algorithms you study in a real-world scenario, you’ll encounter situations that require you to have knowledge of them. You need to understand space and time complexity and how they affect your application. Additionally, algorithms will help expand your brain’s ability to cope with complexity and improve your problem-solving skills. Also, most top software engineering jobs will make you write algorithm tests and whiteboard solutions. You will cruise through them if you have a good grasp of these. You can improve your algorithm skills using platforms like Hacker rank, Codewars, Leetcode, and exercism.io. The ultimate goal is to solve challenges and get battle scars.

Improve your communication skills

Great software engineers can explain their code and how it proffers a solution to a problem. Good speaking skills are very essential to your growth. You will need to communicate with your team, designers and other people who are not tech-savvy and the mere mention of anything remotely technical gives a headache. Your ability to flawlessly communicate what you have in mind will determine how these people rate your skills. This will likely hurt you the most. Learn to communicate or you’ll remain mediocre.

Study design patterns and clean architecture

One of the things I love about web development and tech, in general, is that things move fast, languages and tools evolve. However, the basic principles remain mostly the same. If you know these principles and design patterns, you’ll most likely pick up any programming language or tool with ease. Learn these software paradigms and they will serve you for a really long time and differentiate you from the pack. As you become more senior, you’ll realize that it’s not enough to get your code to work. that’s just the first step. It has to be reusable, maintainable, follow established best practices and most importantly, simple for other software engineers to understand and work with. You can start with books like Clean code by Robert C Martin, Patterns of enterprise application architecture by Martin Fowler, Design patterns: Elements of Reusable Object-Oriented software.

Learn from other software engineers

One of the ways to quickly get to where you want to be even in other fields unrelated to software engineering is to look for people you believe are where you want to be and speak with them, associate with them, follow them on social media, listen and learn from their wisdom and mistakes. As a wise software engineer that wishes to grow exponentially, seek out those that have made it big in your given stack, listen to their talks and podcasts. If you code Javascript, for instance, listen to JSconf, Jamstack conf, React conf, Pycon if you do python, RailsConf if you do Ruby/Rails. These conferences have free videos on youtube. Subscribe to developer weekly newsletters Eg Hackernewsletter, Frontend focus, Javascript weekly, Mybridge (I personally love this one). If podcasts are your thing, Syntax FM by Wes Bos and Scott Tolinski is particularly good. Ask others (this can be other developers with more experience or even less experience! Just learn.) questions about things you do not understand. Nobody understands everything and we all get stuck. It’s what you do when you get stuck that matters.

T-square your knowledge

As a software engineer, you will sometimes be tempted to learn other seemingly in-demand, attractive tech. There’s always a new, hot technology you should be learning. While it’s important you have an attitude to always learn new things, If you are going to really grow, you need to find a niche for yourself and not jump from one language or framework to another too early. Pick one technology and its associated tools and learn it very well. Go deep first in one language after which you can now explore other technologies. Usually, most of the concepts you learn from a programming language will be transferrable to other languages once you learn it well. There will always be something hot on the block anytime you’re ready. Be an expert in one thing, have a base first before expanding your horizon.

Do deep work

In this age of social media, the ability to focus for extended periods of time without distraction is becoming difficult. However, to really churn out good software at a great pace and learn proficiently, you need to find a way to concentrate and practice your craft for extended periods. You will be surprised at how your productivity and retention will improve. Cal Newport goes into detail about this in his book Deep work or you can read a summary of the concepts here or in this article.

Read other peoples code

Most of your life as a software engineer will be spent understanding other people’s code, fixing it, optimizing it while adding your own bugs which you may still need to fix later. To get ahead in your career, you need to make a habit of reading other people’s code and patterns. You can begin by looking at popular open-source tools in your stack. Study the code, google and ask questions about parts you don’t understand, breaking things down one after the other. At first, it will give you a headache but after some time it will start making sense, then you can start contributing. That alone is a good validation of your skills. Imagine going for a React interview and the interviewer finds out you’ve been contributing to React’s source code!.

Sit down and actually code

Finally, all the best techniques in the world will not help you if you do not sit down and get your hands dirty. To really learn how to swim, you need to get into the water. To become an expert software engineer, you need to spend time coding. No way around that. You have to put in the work. Pause and think back for a moment, how many hours did you spend actively coding yesterday, how about 2 days ago. The more time you invest, the more you will learn and grow. It’s that simple. You need to also constantly challenge yourself while doing this. There’s no real gain to keep doing or working with a technology you know so well already. Move to untested waters, integrate what you know already with tools you do not know. Beware of the comfort zone, it’s a growth killer.

Good luck and see you at the top.

featured_image
About the Author

Divinelove Chukwuemeka

Software Engineer at Andela

Thanks for subscribing!

 

More Insights

December 9, 2019

Battle-tested hacks to grow exponentially as a software engineer

Divinelove Chukwuemeka

So, you just switched careers and now you are into tech, a software engineer or you have been doing the programming, coding thing for a few years and the same question is burning through your mind, how do I get my programming skills from 10 to 300mph in less than no time like a state of the art sports car?

Yes, you already know becoming a Dan Abramov (co-author of Redux and create-react-app) or David Heinemeier Hansson (creator of the Rails framework) takes time, however, time is what you do not have and like me, you’re looking for smart ways and hacks to gain proficiency in as little time as possible.

The bad news is everything worthwhile takes time and you’re not going to wake up next week an expert programmer.

The good news is that you can be very deliberate about your growth and cut your time in more than half. You can wake up next week a much better programmer/software engineer than you were today.

To be clear this article does not necessarily address how to grow your career, branding yourself and looking good to the software community. You can appear amazing and not know shit. While the techniques discussed here are definitely transferrable to growing and branding yourself, it is not its main focus.

The focus here is to increment the substance you are made of. Your knowledge base and ability to solve problems like they are nothing, how do you get to become a world-class engineer capable of leading global engineering teams in as little time as possible by employing battle-tested hacks? Let’s take a deep dive.

Practice the basics

It seems like a no brainer but it’s amazing how many software engineers do not really understand the language and tools with which they work with every day. A consequence of this is a lack of confidence and not being able to bend these tools to your desire, how could you? You don’t know the quirks, highs, and lows of these tools. Learn the underlying language and the framework will be easier to work with. Learn JavaScript properly and React or Vue will be much easier. Of course, nothing stops you from starting with the framework first but learn the underlying technology especially if its a framework you use regularly. Who knows you just might build your own framework.

Learn how to learn effectively and fast

The software development world moves very fast and tools that are really popular today might be out of fashion a year later as we discover better and more efficient ways of doing things. Learning how to pick up new tools and languages fast as a software engineer is essential sometimes to even keeping your job. Studies show that you learn and remember more when you participate actively. This is achieved by building something small with that tool or language. Also, realize that in most cases you do not need to learn every nuance of that tool. You only need a working knowledge. In the end, employers care mostly if you can solve their problems not necessarily the amount of knowledge you have on the language or tool. I’ll dive deep into this in another article. Stay tuned.

Study Algorithms

If you do not have a computer science background, chances are that this one will get you frowning. However, you need to embrace it to eventually change your game fast. While you may not use most of the algorithms you study in a real-world scenario, you’ll encounter situations that require you to have knowledge of them. You need to understand space and time complexity and how they affect your application. Additionally, algorithms will help expand your brain’s ability to cope with complexity and improve your problem-solving skills. Also, most top software engineering jobs will make you write algorithm tests and whiteboard solutions. You will cruise through them if you have a good grasp of these. You can improve your algorithm skills using platforms like Hacker rank, Codewars, Leetcode, and exercism.io. The ultimate goal is to solve challenges and get battle scars.

Improve your communication skills

Great software engineers can explain their code and how it proffers a solution to a problem. Good speaking skills are very essential to your growth. You will need to communicate with your team, designers and other people who are not tech-savvy and the mere mention of anything remotely technical gives a headache. Your ability to flawlessly communicate what you have in mind will determine how these people rate your skills. This will likely hurt you the most. Learn to communicate or you’ll remain mediocre.

Study design patterns and clean architecture

One of the things I love about web development and tech, in general, is that things move fast, languages and tools evolve. However, the basic principles remain mostly the same. If you know these principles and design patterns, you’ll most likely pick up any programming language or tool with ease. Learn these software paradigms and they will serve you for a really long time and differentiate you from the pack. As you become more senior, you’ll realize that it’s not enough to get your code to work. that’s just the first step. It has to be reusable, maintainable, follow established best practices and most importantly, simple for other software engineers to understand and work with. You can start with books like Clean code by Robert C Martin, Patterns of enterprise application architecture by Martin Fowler, Design patterns: Elements of Reusable Object-Oriented software.

Learn from other software engineers

One of the ways to quickly get to where you want to be even in other fields unrelated to software engineering is to look for people you believe are where you want to be and speak with them, associate with them, follow them on social media, listen and learn from their wisdom and mistakes. As a wise software engineer that wishes to grow exponentially, seek out those that have made it big in your given stack, listen to their talks and podcasts. If you code Javascript, for instance, listen to JSconf, Jamstack conf, React conf, Pycon if you do python, RailsConf if you do Ruby/Rails. These conferences have free videos on youtube. Subscribe to developer weekly newsletters Eg Hackernewsletter, Frontend focus, Javascript weekly, Mybridge (I personally love this one). If podcasts are your thing, Syntax FM by Wes Bos and Scott Tolinski is particularly good. Ask others (this can be other developers with more experience or even less experience! Just learn.) questions about things you do not understand. Nobody understands everything and we all get stuck. It’s what you do when you get stuck that matters.

T-square your knowledge

As a software engineer, you will sometimes be tempted to learn other seemingly in-demand, attractive tech. There’s always a new, hot technology you should be learning. While it’s important you have an attitude to always learn new things, If you are going to really grow, you need to find a niche for yourself and not jump from one language or framework to another too early. Pick one technology and its associated tools and learn it very well. Go deep first in one language after which you can now explore other technologies. Usually, most of the concepts you learn from a programming language will be transferrable to other languages once you learn it well. There will always be something hot on the block anytime you’re ready. Be an expert in one thing, have a base first before expanding your horizon.

Do deep work

In this age of social media, the ability to focus for extended periods of time without distraction is becoming difficult. However, to really churn out good software at a great pace and learn proficiently, you need to find a way to concentrate and practice your craft for extended periods. You will be surprised at how your productivity and retention will improve. Cal Newport goes into detail about this in his book Deep work or you can read a summary of the concepts here or in this article.

Read other peoples code

Most of your life as a software engineer will be spent understanding other people’s code, fixing it, optimizing it while adding your own bugs which you may still need to fix later. To get ahead in your career, you need to make a habit of reading other people’s code and patterns. You can begin by looking at popular open-source tools in your stack. Study the code, google and ask questions about parts you don’t understand, breaking things down one after the other. At first, it will give you a headache but after some time it will start making sense, then you can start contributing. That alone is a good validation of your skills. Imagine going for a React interview and the interviewer finds out you’ve been contributing to React’s source code!.

Sit down and actually code

Finally, all the best techniques in the world will not help you if you do not sit down and get your hands dirty. To really learn how to swim, you need to get into the water. To become an expert software engineer, you need to spend time coding. No way around that. You have to put in the work. Pause and think back for a moment, how many hours did you spend actively coding yesterday, how about 2 days ago. The more time you invest, the more you will learn and grow. It’s that simple. You need to also constantly challenge yourself while doing this. There’s no real gain to keep doing or working with a technology you know so well already. Move to untested waters, integrate what you know already with tools you do not know. Beware of the comfort zone, it’s a growth killer.

Good luck and see you at the top.

featured_image
About the Author

Divinelove Chukwuemeka

Software Engineer at Andela

Thanks for subscribing!

 

More Insights

Talks At Andela: Building Engineering Teams at Scale

What does “building engineering teams at scale” mean to you (as an engineer or team lead) and yo...

19_February_2020

How to Build a CRUD App in Vanilla PHP

Introduction During a recent technical assessment, I was tasked to develop a simple CRUD events man...

17_February_2020

Continuous Deployment(CD) Using Bitbucket Pipelines and Ubuntu Server

Introduction: In this tutorial, you will learn how to set up Bitbucket Pipelines for a PHP & No...

22_January_2020

How To Stay Productive When Dealing With Anxiety Disorder

Disclaimer: This isn't really a hack. There are no eight steps to beat any kind of disorder. If you'...

8_January_2020

Setting Expectations for Software Engineering Teams

Introduction When I started at Andela as CTO I had an opportunity to introduce myself and set expec...

19_December_2019

Remote Heroes Kampala: Event Recap

The Remote Heroes event in Kampala was held on 21st November 2019 at Innovation Village in Ntinda. G...

29_November_2019

Partners

Tap into a global talent pool and hire the “right” developers in days, not months.

Developers

Accelerate your career by working with high-performing engineering teams around the world.

BECOME A DEVELOPER

Hire Developers

We take great pride in matching our developers with the best partners. Tell us about your team below!

preloader_image

Thank you for your interest

A member of our team will reach out to you soon.