Table of Contents
- Build clone of X
- Attend hackathons
- Contribute to the open source community
- Learn to type faster
- Epilogue: How to Become a Better Programmer
It is necessary for every programmer to constantly work on his or her programming skills, to strive to become a better programmer. In this article, I will share with you four tips that will help you achieve this goal. Learn these tips, improve your programming skills, enhance your portfolio and create new career opportunities.
16 Tips to Become a Better Programmer Part 1.
16 Tips to Become a Better Programmer Part 2.
16 Tips to Become a Better Programmer Part 3.
Build clone of X
In the second part, you’ve learned the benefits of side projects, an why side projects are not a waste of time. As next, you’ve learned how they can help you not only become a better programmer, but also create new career opportunities. You also know how to find the best candidates for side projects, your passion and scratching your own itch.
Aside to these two types of side projects, there is something else. These are clones of already existing products and services. Creating these clones is another great way to improve your skills and become a better programmer. Actually, I think it is one of the best ways to learn programming in general.
Building clones helps you learn faster, by doing
Learning by building clones is incredibly effective way to learn programming for a number of reasons. The first reason is that you are learning by doing. As we’ve already discussed, learning by doing is by far the most effective way to learn anything. This is why we learn almost everything this way as children.
Imagine you would have to learn to walk, eat, talk, etc. by reading books. Getting a driver’s licence when you are 18? Good luck with that. You would be happy just to know how to run, talk and do some basic stuff. Or, imagine learning to drive just from books. The first time in a real car would be quite a shock. The same applies to riding a bike.
It is no wonder we learn all these, and many other, things by doing. It is more effective and it is better for preparation for a real life. Clones work in the same way, or very similar. You are building something that already exists, that actually works.
And you learn it not by reading about it, but by doing, by actually writing the code. Thanks to this hands-on experience your ability to learn is much better. It is almost like you are on steroids, or some learning drugs.
Building clones gives you clear goals
The second reason why building clones is incredibly effective way to learn is that you start with clearly defined goals. Sure, you can have very well defined goals in other side projects as well. However, there is always some level of uncertainty. You may not exactly know if it will work. You may not exactly know how it will look. And so on.
When you decide to build a clone something that already exists, you know right from the beginning it will work. You also know how it will work. Well, unless you decide to create your own user interface and design. Otherwise, you know exactly how is that thing you are going to build supposed to look like when you are done.
There is basically only one thing that is relatively uncertain. That is how will you build it, what tech stack will you use and how will you implement it. It is relative because you can decide to create 1:1 clone. Meaning, you will use the same tech stack and follow the same structure and implementation steps. So, almost zero uncertainty.
Building clones can teach you good programming practices
The third reason is that you can learn how to do things the right away on the first try. This is especially true i you decide to build that clone using the same tech stack, following specific project step by step meticulously. Many of the products people use are built by advanced and senior developers.
As a result, you are more likely to follow code that is written well, with best practices in mind, and that is also optimized. This may not be applicable to all cases, but it will at least for some. Still, that code will be probably better than code written by absolute beginner someone with shallow understand of the topic.
Building clones makes it easy to start
The fourth big reason for building clones is that it makes it easy to start. You no longer have to think about what are you going to build. Or, to think about how it will look. All this is already solved. The only thing you have to think about is what tech stack will you use and how you implement it. Even these things are often solved for you.
These are usually the main obstacles developers have to deal with when they want to start a side project. When these obstacles are gone, there are no more excuses. There is nothing that can stop you from getting started. Remember, not knowing something is not acceptable. Learning how to do it is your main goal at this moment.
Focus on four main types of clones
The only question that remains is, what thing should you clone? There are four options. First, build clone of something you like. Personal interest is a great source of motivation. It is also a boost for learning. When you are self-motivated everything gets easier. It is easier to start, keep going when things go tough and to ship.
The second option is to build a clone of something you are curious about. Is there some product or service you want to understand how it works? Use that as a reason for building a clone. Doing so will help you understand the product better than any amount of articles, videos, podcasts or talks ever could.
The third option is to build clone of a product of some specific company you want to work for. This will help you in a few of ways. One, you will show initiative. Two, you will show you know programming, that you can write code. Three, you will show you know the company. Four, you know their product and how to work with it. Replace CV with clone.
Fourth, ad hoc. This is the fourth option, build clone of whatever comes around. The main goal of this exercise is to become a better programmer by building stuff. It is about improving your programming skills through hands-on experience. What stuff you are going to build is irrelevant. You just have to code it.
Hackathons are another way great way to improve your programming skills and become a better programmer. I think it is one of the best ways. It is even better than side projects and building clones. So, why are we talking about it now and not sooner? The reason is that one has to have some degree of proficiency in programming.
Hackathons are not that type of events where you can come and slowly learn everything, without any rush. It is the exact opposite. Hackathons are usually timed, with very tight deadlines. You already has to know the basics and also more advanced stuff. Otherwise, you will have a hard time shipping anything on time.
So, if you are not well-versed in the world of programming, spend some more time learning. Also, dedicate some time to building things. You know, side projects and clones. Do some more practice before you decide to attend any hackathon. However, if you are mid-level or senior programmer, or developer, I highly recommend attending hackathons.
Hackathons are like adrenaline sport
Hackathons offer all the benefits side project and clones do. However, there is more. For many programmers and developers, Hackathons are like adrenaline sport. Many programmers and developers who try c once come again. Hackathons can be very addictive. There is element of competition, challenge, progress, flow and rewards.
There is also an opportunity for socializing and meeting like-minded people, especially if you work in a team. For this reason, hackathons can be also very good for team building. Is there a better way to connect with fellow, often introverted, programmers and developers than via writing code, and being in the flow, for the whole day and even night?
The only downside is that you need to have some level of proficiency in programming. Hackathons are not a good choice for beginners. Hackathons are like battlefields. You never go straight to the battlefield. You always start in a training camp. Only when you finish the training camp you can test your skills in the battlefield. Else, you will not survive.
Prepare for the battlefield
So, if you are at the lower of programming skills, learn and practice first. Use tutorials, preferably video, to learn new things and work on your programming skills. You can also supplement this with books and articles. This can help you learn more about specific topics. It can also help make progress in times when you are not on computer or internet.
Then, start working on side projects. As we discussed in part 3, start small. Focus on something you are passionate about or a problem you personally have. As you get better start working on more difficult side projects. It is important to keep challenging yourself. Only this will help you grow, improve your skills and become a better programmer.
Give this some time. Then, ask yourself, are you comfortable taking on difficult side projects? Are you able to finish them? Can you work under pressure? Can you create working prototype in 24 hours? If your answer on these question is yes, then you are probably ready for the battlefield, for your first hackathon. Good luck and have fun.
Contribute to the open source community
Contributing to the open source community is another way that will benefit you in multiple ways. First, it will help you become a better programmer … well, if your contributions are in the form of code. Otherwise, it will not be as helpful. Second, it can help you meet new people and maybe find new career opportunities.
That being said, this is not something that’s guaranteed. It will happen only if you decide to actually engage in conversation with other contributors. In most cases, it is you who has to take the initiative and start talking. Otherwise, if you decide to stay silent, don’t expect you will be able to find new friends.
Contributing to open source can create new career opportunities
Contributing to the open source community can make you more attractive to potential employers, even clients. This is the third benefit. It is one thing to work on your own projects. It is something completely different to be able to work on something with other people, often in different time zones, skills, personalities, code styles, etc.
This is something employers are looking for. They want people who can not only write code, but who can also work with other people in the team. There is a lot of good and great programmers and developers who can write clean code. Unfortunately, many of them don’t work well with other people. They don’t like working in teams. They want solitude.
The majority of employers are looking for team players, or at least people who can handle working in a team. Employers sometimes prefer this to having advanced knowledge of programming. If you are good at working in team, and you can code, you have a higher chance to be hired than someone who is a great programmer, but bad as a team player.
Contributing to open source will expose you to good programming practices
When you contribute to open source, you will also get to high, or higher, quality code. This doesn’t apply to all open source projects. It depends on the community and maintainers of specific project. However, it is often true that open source code is well structured and enforces good programming practices.
Thanks to this, you can learn a lot before you make your first PR (pull request), just by reading the syntax. Then, when you make your first PR, you will learn a lot more. Open source communities usually have high standards, at least those really big projects. They will not accept your contribution until your code meets all their requirements.
Imagine you finish your first contribution and submit your first PR. Soon, you will find out that your PR was not approved. There are some problems you have to fix before maintainers accept it. This can happen only once. However, it can also happen multiple times. In some case, you might be working on the initial solution for, say, one day.
It may take another whole day to fix all problems. It can also take a couple of days until you fix everything, even a couple of weeks. This can be tough, even discouraging. However, no matter how long it takes and how tedious it can be, don’t give up. See it as an opportunity to improve your programming skills and quality of your code.
When your PR is rejected see it as another opportunity to learn something, make your code better, and become a better programmer in the process. So, have patience. Remember that programming is a skill. Every rejection helps you improve it. Soon, you will write better and cleaner code and the number of rejections will start to decline.
Contributing to open source can help you find mentors
Open source communities are also great place to find mentors. You can learn basically everything on your own. However, mentor can help you learn those things faster. For example, by sharing his knowledge and experience or by recommending the best learning resources. Mentor can also help you find your blind spots and correct them.
When you start contributing to open source communities, you will get in touch with other programmers and developers. Many of these people often want to help others learn and get better in programming. They may not necessarily look for the mentor and mentee relationship. This may even sound scary to some, being a teacher.
However, as the times goes, some of your relationships can result in this type of relationship. If not, you can always ask someone to help you learn new stuff and become a better programmer. It is usually better to put it this way than to ask directly for mentorship. So, start with that and see what happens in the future.
Contribute beyond the code
Contributing to the open source community doesn’t have to be only about writing code. This will help you the most to become a better programmer. However, there are many ways in which you can contribute. For example, you can find and report bugs. Or, you can speak at conferences and write blog posts to share your knowledge and experience.
You can also help other developers and programmers learn and get better by engaging in mentorship projects. You can also share your ideas and suggestions and help the community to progress and plan for the future. Whatever way you choose, just make sure you really want to do it, that it is genuine. Otherwise, it will not work and you will not like it.
Learn to type faster
Programming skills are not everything. As long as you are writing the code you also have to be able to type fast. This is one area many programmers often completely ignore. They learn everything they can about programming. They are literally walking libraries. However, when they get to keyboard they can’t type fast.
Great programming skills are useless if you type using just two fingers. Or, if you have to look at the keyboard every time before you press a letter, to make sure it is the right one. If typing with all 10 fingers, or touch typing, is not your thing, or if you type slowly, set aside some time and learn it.
Learning to type fast is often one of the easiest way to become a better programmer. There is no new syntax you would have to learn and memorize. All that is required is just a bit of deliberate practice here and another bit of deliberate practice there. With time, your typing speed will improve.
The faster you type the more code you can write
The connection between typing and your programming skills is simple. Your typing speed determines how many lines of code you can write in a specific time frame. The faster you type the more code you can write. The more code you can write the more you can practice. The more you can practice the better programmer you can become, and faster.
So, make sure you are working not only on your knowledge of programming, and syntax, but also improving your typing speed. Remember that increasing your typing speed can help you make progress faster and become a better programmer sooner. It will also boost your productivity because you will be able to write more code in less time.
Don’t delay this. Learn to type faster as soon as you can. When you learn this skill a lot of things will become easier, working on tutorials and side projects, building clones, competing at hackathons, contributing to open source, writing blog posts, etc. Learning to type fast is a time well spent.
Some good places where you can learn how to type faster are typing, TypingClub and 10fastfingers. Take a look at these websites and try them out. Remember, whatever tool you use to learn how to type fast, make sure to practice it regularly and deliberately. You get better at typing only by doing, not by reading or thinking about it.
Epilogue: How to Become a Better Programmer
These were the last four tips that will help you become a better programmer. Now, it is up to you to take what you’ve learned and apply it. So, what tip will you apply as first? Will you build clone of some existing product or service? Or, will you become active in the open source community, and start contributing to some open source project?
If you want to challenge yourself, if you like that rush of adrenaline, relatively high uncertainty and tight deadlines, maybe attending a hackathon might be the right choice for you. Whatever you choose, make sure to also work on your typing speed. Remember, it doesn’t matter how much you know, how fast you can think or how good programmer you are.
Your typing speed will always determine how much code you can write in a specific time frame. So, don’t make the mistake of neglecting this seemingly unimportant area. Start working on it as soon as you can. It will help you become a better programmer faster.
If you liked this article, then please consider subscribing.