Tips on staying sharp as a developer
[This article was originally published on our Medium blog—check it out for career tips and best practices in the field!]
Programming is not a stagnant discipline. Being a developer—in my case, a full-stack developer—means you’re always learning to keep up with the constant changes in tech. Having a broad understanding of tech tools, platforms, techniques, and how they fit together is fundamental for developers to make the best decisions on real projects.
My recommendation on keeping my programming skills sharp
Personally, I have two intertwining practices that reinforce each other. The core practice you shouldn’t miss is consistently training your programming/algorithmic logic. The second is keeping up with the latest developments in tech.
Dynamic Programming
When it comes to exercising your algorithmic problem-solving skills, I’d say this is the most efficient way. To challenge yourself, you can participate in dynamic programming challenges to keep your coding skills sharp. You can improve your programming skills by participating in competitions. So, coding events or debugging events can gradually improve your programming skills. Nowadays, there are many amazing platforms that provide many challenges to sharpen our skills, and there are several famous websites such as Hackerrank, Hackerearth, Codechef, Codewars, and so on, where we can hone our skills through competitions.
Why practice with algorithmic problems?
Code challenges are small tasks in which you are asked to solve an algorithmic problem by writing a small program and solving these challenges. You usually earn points, and it gets progressively difficult as you advance through the levels. It’s also an interactive way to learn from your peers as you get to analyse how other developers solve the same problem, build up a repository of code references, and eventually improve your programming techniques for finding the most elegant solution.
So, code challenge websites are awesome because they not only help you to apply what you’ve learned in tutorials but also force you to become creative and think of new ways of problem solving. As a result, they make you a much better programmer. And, of course, they help you translate your solution into code that works.
Image caption: Example of problem in Hackerrank.
Image caption: Answer submission can be in any programming language.
Solving algorithmic problems teaches programming techniques that can be applied in different contexts. You can sharpen your skills on any challenging problems. Another advantage is they are fun and exciting to do ??. It always keeps me motivated, because I’m making progress on my algorithmic problem solving skills. And, by the way, you can usually solve dynamic programming problems in any language. Most platforms accept multiple languages, and some even accept your solution in pseudo-code. Whether their machine can translate your answer into code is a whole different topic! ??
Real-world projects
After training your programming muscles in these virtual dojos, it’s time to apply your skills to real world projects (yay!). This is what I call the second exercise, or rather, the final implementation of your algorithmic problem-solving skills. When it comes to doing real world projects, the problem is not always linear; you’ll need more than just the algorithmic problem-solving skills in your toolkit. Let me give you an example: suppose you’re asked to build a full-text wide-site search function for your website. As a programmer, you’ll definitely have to bin the problem into steps. You’ll need to think of: 1) What technology should you use 2) How to integrate it in your website 3) How to apply and structure it into your code base following all the principles your project follows 4) How to make sure your code is efficient and performs well.
Getting used to solving dynamic programming problems will help you a lot, especially in step four! The first couple of steps you need is to deepen your knowledge of the technology and use the available syntax/API as efficiently as possible in your chosen technology frameworks. There’s no way (at least in most cases) that you’d need to build the search library and algorithm from scratch if you’re developing in a rapid and constantly changing product development environment. Unless you have really specific needs, or no one has done a library you can integrate with your app.
Good news: both benefit each other!
The difference is that in dynamic programming, we only need to code and run our solutions without thinking about other aspects, such as having a deep understanding of technology and thinking of integrations in real-world projects. Does that mean that you should just skip doing dynamic programming and get to doing real projects? It’s a fair question. I’d say yes, of course you can, but exercising your algorithmic problem-solving skills will be tremendously beneficial for you, and I’d say it’s good practice. My take for dynamic programming is it helps you a lot in making your code efficient and perform well, as you’re always forced to think about how to make your solutions as efficient and fast as possible.
There’s no right or wrong answer here, but let me quote one of my favourite persons in the world:
Stay hungry. Stay foolish . — Steve Jobs
Let me end this piece with a little meme:
Image taken from: https://www.reddit.com/r/MemeEconomy/comments/6ajmaf/programmerprogramming_memes_are_still_a_safe/