What does that mean?
No matter how good you are or how good you think you are, you can always improve. Sharpening your tools is about constant improvement; it’s the little things that you can do all the time that will enhance your current skills. Some of the techniques are passive and don’t require much effort at all. Others are very time consuming and may require sacrificing one or more nights a week on a regular basis.
Why?
Outside of becoming a six figure developer there are several reasons why everyone should spend time sharpening his tools. In software development things are changing fast, so fast that every time you turn around there is some new technology or a different pattern that everyone is expected to know how to use. Because the speed of change is so fast, a developer cannot rest on her laurels lest she be left behind and completely irrelevant in the ever changing world of software development.
How can I sharpen my tools?
As I said before, there are many ways to sharpen your tools. I will cover some of the simpler less time consuming techniques in this article and will cover some of the techniques that require more time and dedication in a later article.
- Learn editor shortcuts
- Listen to podcasts
- Read blogs
- Read more code
Learn editor shortcuts
Most of us use some form of IDE (Integrated Development Environment) and those IDEs have many shortcuts that can do some pretty cool things. Every editor that I know has cut, copy, and paste functionality using ctrl+x, ctrl+c, and ctrl+v respectively in Windows and Linux. For OSX use cmd+x, cmd+c, and cmd+v. It doesn’t stop there though. Generally you can find a shortcut list for your editor. Go and find that list. Pick one shortcut from the list and focus on learning that one shortcut. Whatever it is that shortcut does, don’t do it any other way than by using the shortcut. Once you have mastered that shortcut, choose another and repeat. This technique is pretty simple and doesn’t require too much effort or dedication as adding one shortcut to your repertoire should be pretty easy.
Listen to podcasts
I’m going to make a wild assumption that most of you spend some time in a car or bus on a regular basis. That time is largely wasted for no reason. I spent that time listening to music until a few years ago when I found that I could passively increase my development knowledge simply by replacing the 30 minutes I spent in the car listening to music with 30 minutes in the car listening to podcasts about programming. The podcasts you choose don’t have to be about programming. More specifically they should be about the topic you think will help you reach your goals. I would suggest finding podcasts about your preferred languages and technologies, professionalism, and health and fitness. Technology will make you better at your job, professionalism will make you better at your career, and health will make you better at life.
Read blogs
Reading blogs will get you the same benefits as listening to podcasts except blogs have the ability to go deeper or be more specific. As an example you won’t find a podcast that will give you code samples. Blogs do require more time and dedication, but it doesn’t have to be a whole lot of time. You are already here so I’m hoping that you already read a few blogs, but if you are here by chance, my suggestion is to read between 5 and 10 blogs on a regular basis. Good blogs tend to release a new article on a regular basis. Most times that interval is between 1 article a week and 1 article a month. You should be able to read new articles with no more than 30 minutes a day. At least when you are getting started you don’t want to exceed that time or you will get discouraged by all the time you are having to dedicate to learning. After you have been going for a while feel free to add as many blogs as you can manage.
Read more code
We are affected both consciously and subconsciously by the code we see. At a conscious level we might see code in a project and immediately be aggravated by it. In the past I found that to be the only emotion I experienced when looking at the code I encountered. All too often I found out that I wrote that code. This is a common reaction to seeing something we don’t understand. Humans have the knee jerk reaction to be afraid or angry at things they don’t understand. The best way I know to get over reacting that way is to understand more. The best way I know to understand more is to experience more. In the context of code this is actually quite easy. Just go to github and browse the trending repositories. Now just choose the language you develop in as a filter for the trending repositories and crack open the code. Look around fork the code and make changes. Debug the code your looking at, step through it and see what it does, how it behaves as it travels through it’s execution path. If you do this enough you will find that opening that project from work doesn’t seem all that bad anymore. You will find that you pick up on new code faster. You will find yourself using techniques that you discovered in some random repository on github. All of these things will make you a better developer.
That’s all for now
I promise that if you put the 4 techniques I discussed above to use that you will find yourself rising above your peers in short order. My main focus is improving your development abilities and we will discuss all kinds of ways to work on that in future articles. Until then, let me know how the above techniques work for you. Also if anyone has any specific languages or tools they use and would like to know resources for getting better, I program in several languages using several tools and would be glad to site specific resources once I know which ones would be helpful.
Clayton has been programming professionally since 2005 doing mostly web development with an emphasis on JavaScript and C#. He has a focus Software Craftsmanship and is a signatory of both the Agile Manifesto and the Software Craftsmanship manifesto. He believes that through short iterations and the careful gathering of requirements that we can deliver the highest quality and the most value in the shortest time. He enjoys learning and encouraging other to continuously improve themselves.