Whether you have been programming for years or you are just learning how to code, it is natural to ask yourself what does it take to become a great developer. I am going to start off by saying that there’s no right or wrong answer to this question. If you ask a hundred experienced software engineers this question you’ll get a hundred different responses. The reason why there is no clear-cut answer is that development is truly an art form, therefore asking this type of question about programming is similar to asking what makes a great artist?
Even though the idea of becoming a great developer may seem like a daunting task, there is a practical process that you can follow in order to attain your goals. In preparation for this article, I asked various developers, read blog posts and listened to a number of different Podcasts that all talked about this topic. As you’d expect, the components of becoming a great programmer are pretty extensive in this video I want to give you an overview of the processes and requirements that I found to be the most effective myself.
6 Steps to becoming a better Programmer/Developer.
The following are six traits that encapsulate the key characteristics found among great developers. I have also included some practical strategies for working with each of these attributes on a regular basis.
1. Working through difficult features
Starting off with one of the most challenging traits, I found that the only way I improve as a developer is to work through challenging concepts I find it disturbingly easy to fall into a routine where I only perform the same tasks again and again. I have been working as a developer for a number of years and I have a nice arsenal of tools and equipment that I am very comfortable with. But I have discovered that if I simply keep building features that I’m already comfortable creating I won’t grow. It’s only when I bear down and dedicate myself to work through a difficult task that I’ve never performed before that I really become better.
Having the requirement of working through difficult practice isn’t a concept related solely to development. The book P researched Pete performers in music athletics and essentially every other skilled profession. The results of the research showed that individuals only show improvement when they are working through challenging concepts. This means that if concert violinists played the same music day after day and never challenge themselves, their skills would just be stagnant. The same concept holds true for developers, if you want to become a great coder, you need to work through difficult topics constantly. If you do not know where to start with finding challenging features to build, visit some of your favorite websites. You could look at Twitter or Facebook or Pinterest from there you can compile a list of advanced features that you have never built before.
Examples would be components such as infinite scrolling, Asynchronous notifications or multi-page authentication.
Community contribution: With the growth of the programming industry, the open-source community has expanded exponentially. The popular languages and frameworks in the world such as Python and Ruby weren’t created by corporations but were created by programmers interested in the common good and making everybody better. Depending on your level of experience, community contributions will vary pretty widely. If you’re a senior level engineer, you could build an open-source library or build a feature for a programming language. However even if you barely have any experience at all, you can still contribute. New developers can assist other individuals who are just starting to code.
As great as it is to give back to the open-source, community there is also significant benefits to contributing. If you are building a code library that other developers will see, you will most likely be very careful to ensure that the code base is properly tested and bug-free. This type of development will make you an even better programmer and will help you in the long run.
2. Artistry
When it comes to development it is easy to get caught up in the day-to-day minutia of a project and forget that at its core, programming is really an art. In order for your code to be artistic, it must be elegant and for it to be elegant, it must be simple. Some of the best projects we have worked on ended up having the most straightforward codebases, however, writing simple code is not as easy as you may think. It is about simplicity, if you can not explain it to a six-year-old, you don’t understand it yourself. This may seem like an odd concept, however, if you have ever attempted to build a complex project that maintained an easy-to-follow code design, you know that it’s true.
The more you improve as a developer the more straightforward your code should be.
3. Craftsmanship
Craftsmanship is closely related artistry, however, there is an important distinction. When you are a craftsman, you truly take pride in your work. Over the years, I have met all kinds of developers. From programmers who simply treated each project like a widget on the assembly line to developers who made sure that every code file they worked on look like a piece of art, personally I found a cross between the two to be the most effective. Like many other concepts, craftsmanship is not isolated to programming. Growing up, I have learned to have what I call a “spirit of perfection” and I implement this everywhere I work including FincoApps. This meant that no matter what I do or what I am working on, I have to take pride in it.
If you are taking time to perform a task, you should as well do it well. I feel I take pride in my work. Craftsmanship is one of the concepts I struggle with the most. I find this principle challenging because it can be difficult to find the balance between well-written code and perfect code. As the saying goes “Perfection is the enemy of great” therefore it is important to ensure that you work hard to properly design your codebase. However, do not pressure yourself to achieve perfection. It is also important to have the mindset that no project is ever truly completed. When it comes to craftsmanship, few have taken the same level of pride in their work as Steve Jobs, this is what he had to say about craftsmanship: when you are a carpenter making a beautiful chest of drawers you are not going to use a piece of plywood on the back even though it faces a wall and nobody will ever see it. You will know it’s there so you’re going to use a beautiful piece of wood on the back for you to sleep well at night.
4. Adapting to change
This the one thing that junior developers find really hard to do. If you have worked on any real code projects, you can attest there is one true constant and that’s change. Great developers set themselves apart from novices by how they adjust to changing requirements for an application. There are two main ways that new coders struggle to change. Firstly,, they have no flexibility with their code design. This means that when a new requirement is added to the project they’ll need to completely reconfigure the code in order to allow for the additional functionality.
Sometimes, it means they have to start from scratch. Secondly, they plan for the wrong feature: a developer may have developed a mental model of what the end project is going to look like, however, the estimation rarely matches reality. Imagine that you are building an accounting application and you think the client is going to eventually ask for a system to be completely project-based, you will make design decisions based on the workflow hierarchy that you have in mind and everything will go into what you have in your mind. However, if you are wrong, you will be forced to reconfigure the entire app. Both of these pitfalls are normal to come across on your coding journey, however, an experienced developer finds a balance between no design and premature design by building well-constructed code bases.
The great programmer writes modules, they have flexible interfaces that can adapt to change. They also understand that project requirements change and that the code should have low coupling. This means that changes to one feature in the application should have little to no impact on other parts of the program. Back with our accounting example if that change is required to the payroll module, it shouldn’t require you to rewrite the personnel management feature.
5. Continuous learning (VERY IMPORTANT)
One of the most important factors in reaching your development goals is having a thirst for knowledge. Thankfully, you have a hundred percent control over this requirement. Regardless of how much experience you have, as a programmer, you won’t ever reach a stage where you should stop learning. There will always be improved processes, new frameworks and new languages to learn.
I have asked some senior developers how they organize their learning methods and they gave me the following recommendations.
Firstly, learn a new framework or language each year. Make sure that you also build a production application during the year. It is easy to follow tutorials and build hello world type applications however when you create a real program, you will be forced to work through challenging constructs.
Secondly, read multiple books daily. I personally have over a dozen books I read every single day related to development.
Thirdly, follow advanced tutorials. Many of the developers I work with admitted that they prefer to learn new coding techniques by reading blogs or watching videos from other programmers. There are a number of guides available online that you can go through. They will teach you how to build advanced features into your applications.
6. Subscribe to newsletters
I subscribe to a number of newsletters that are sent to me. This includes newsletters on PHP, WordPress, Java, and JavaScript. These type of newsletters are a great way to stay up to date with changes in a language or framework. They curate some of the best blog posts and they also have some great tutorials from around the web.
I hope that this has been a helpful guide and will help you answer the question of “What does it take to become a great programmer?”.
If you have any questions or contributions, feel free to post them in the comment box below :).