Whether you are brand new to coding or have been at it for the past decade, odds are that there is some area that could use improving when it comes to your code. I myself am not free of this either. Which is why I've compiled this list of 9 things that you can do starting right now to one-up your coding game.
I take part in many of these in order to stay sharp and have done so for some years now. Number 1 on the list I find to be the most interesting, so you will want to stick around for that.
9. Code reviews
Most tech organizations have code reviews scheduled throughout the month. They typically involve picking a project, more specifically a module within that project, and then having lead developers discuss the pros/cons of what they are seeing.
If your code is on display often, you are probably not a fan of code reviews. But they are important as they help to bring you out of the echo chamber that is your perfect code. Often times we get so involved in our work that we don't really spend any time at all wondering whether it is the most ideal or optimized way of doing things. Code reviews help to bring out any issues, or potential issues, out into the open.
If you are going to have someone look at your code though, find someone that is more advanced than you. You want a genuine look at what could be improved. If you ask someone that is your junior, then you might hear that 'everything looks fine' much too often. Or even worse, you might hear advice that isn't accurate.
Take a look at your current network and politely ask the most skilled person on that list to spare 30 minutes to take a look at your code. And whatever you hear back, be sure to not take it personal.
8. Learn new skills
There is nothing that causes more anxiety than trying something new for the first time and being terrible at it. But that's also where we learn new things and gain new skills. It also reinforces what you already know by allowing you to compare multiple tech stacks, frameworks, methodologies, etc.
Note that I do not mean drop your current technology stack and to go all in on something that is completely obscure and new. Stick with your stack and work towards mastery. But on the side, pick another piece of technology that you might be interested in and work it into your current projects.
A few examples could include:
- Trying a NoSQL technology on top of your SQL
- Implementing a new API
- Not learning an entire new language
That last one is important. By new skill, I also don't mean learn a new language. Learning a new language takes months to years of time, at least if you want to do it at a high level and to do it well. If you don't want to spend months and you don't want to learn it well, then I can't recommend anyone to partially learn a new programming language. This is definitely time that could be used in further strengthening your current tech stack, which is much more valuable in the long run.
7. Stay up to date with your stack
Programming languages and frameworks tend to go through revisions frequently. New things are added and older things are dropped much of the time. Most programmer's do not do a good job at keeping up with these updates at all. I myself am guilty of that as well.
Truth be told, keeping track of language changes is difficult. Most programming languages that are popular and in wide use today have had years to mature and to gain advanced features. Which means that any new changes made are bound to be more complicated and require more time to learn and to integrate into your current coding projects. Many of these features involve memory management, optimization or data access functionality.
How do you track language changes you may ask? Well, it's not actually as simple as it sounds. Most popular programming languages in use today are maintained by large tech companies and they either have active marketing teams pushing out content about this tech, or they don't. You have to find out where these companies are hiding their documentation essentially, which might not always be the easiest task.
Here's an example. As a C# developer, I have to rely on Microsoft to keep me up to date on language changes. And so far, they do a fantastic job of doing so. With the latest C# 9.0 release, I can easily browse through their documentation page and find the C# 9.0 What's New article.
But again, not every programming language has this level of documentation so it's important to do the work if needed to stay up to date.
6. Refactor your code
Refactoring code essentially comes down to one main thing. And that's code re-usability. Programmer's tend to copy and paste frequently as they progress through working through a project. We have deadlines and typically they tend to be short. So sometimes we cut corners in the hopes that we can come back to it later to clean things up. This is the refactoring portion.
It's important to make time in order to go back and to not make your decent code into a future mess. This is the time where you can actually analyze what you did and to really architect out a more optimized solution.
You might need to create new generic functions or to externalize functionality so that it can be used on other projects. You will probably also end up fixing many bugs along the way as you navigate once more through the maze that is your code.
I typically refactor the code on this blog on a weekly basis. I set aside time on the weekends after all the emails are written and after articles are scheduled for publishing and I move page by page looking for anything that stands out as a potential point of future failure.
I also keep most of my generic code in a single DLL library that I reference in many projects. You can read more about how I do that in this article.
5. Attend workshops (remote)
One of the best ways to learn about what is actually happening in the tech industry is by hearing the people that are actually building these things talk about it.
In the past this typically meant having to spend thousands of dollars in order to travel to another state for a 2-3 day developer conference. These days however, as everything has moved online, you can still find these conferences except now most of them are either free, or have finally become affordable for pretty much anyone.
I recently attended a 2-day virtual conference for GatsyJS and truthfully, it was surprisingly helpful in seeing all of the latest happenings with the technology and to do so from my couch essentially.
Find where the community of your particular stack lives and pay them a visit from time to time. You might surprised sometimes just how much things are changing almost on a daily basis without your awareness.
4. Read more blogs
There is alot to read about when it comes to technology, particularly in the web development and software engineering realm. The problem is that this news does not tend to hit the evening news or to even trend on any social media site.
That's why having a good source of content to read daily or weekly is important. Because if the social media sites won't keep you informed on programming trends, then nobody will.
Here are a few of the currently bookmarked sites on my browser that I read weekly.
3. Fix your bugs
I can assure you that there is not bug-free software anywhere that exists on the planet. Most software bugs however, are lightweight and safe. They won't cause any real harm to the system or to the user experience.
These might include a warning message in the browser's console window, or an error in your server logs that you just never got around to taking a proper look at.
I often tell newer programmer's that the only real difference between a junior and a senior programmer is that a senior programmer has read more error messages and found solutions to those errors.
Akin to refactoring your code, setting aside time to fix 1 or 2 bugs in your code that you have been ignoring is one of the best ways to strengthen your overall programming skills. Not because it's challenging and difficult to achieve. But more so because once you find an adequate solution to whatever you have, you won't ever have to make that mistake again.
And if you are thinking, "well, lucky for me I have zero errors in my code", well, odds are that you aren't looking hard enough just yet.
2. Delete more code
If you haven't deleted large chunks of your code in years, then odds are you have not been keeping up well with technology (See #7 above).
Code, much like everything else in life, gets old. And not in a cool mature way. No. Not like that at all. More like in a 'bridge about to collapse' way. You wouldn't want to drive on a bridge that was built in 1880 and in that same light, you probably don't want to be relying on code that was written in 1998.
I myself have code written in 2014 still live somewhere on this blog. I know because I comment a timestamp whenever I create a new function or add a major update to my projects. Most of that code is still valid and functional.
But the same can not be said for all of it. Some functions have been deprecated since that time, and while still able to run, not guaranteed to do so in future framework changes.
1. Stop building more things
And number one on the list is probably the most important, in terms of actually learning to focus on one thing at a time. You should put down all 5 of those side-projects that you have going on right now. Put them down, and pick only one to work on.
Pick the one that interests you the most and then work only on that. At least for a while. Until you've added that one feature that you have been meaning to add but never got around to.
And the reason will be obvious once I say it. The longer a project has to mature, the more complex it becomes. And the newer a project is, the least complex it is. Developers that have 2-3 projects running concurrently, typically don't get too far in any single one in order to reach that complexity zone.
Setting up the 5th login form on a new project isn't going to make you into a better more robust programmer. In fact, doing the same thing over and over again might make you stall out and prevent you from really getting to where you need to get to.
Don't get rid of those other ideas mind you, just put them aside long enough for you to really get some work done on the one project that you prioritize.
For me personally, that happens to be this blog. While I have 4-5 other websites currently live and running, this has become my primary project, and I can easily say, it has become one of the most complex so far.
I hope a few of these resonated with you and that you go forth and use them how you will in order to become a more productive programmer in this coming year.