When I tell people that I’m a programmer, I inevitably get one of three responses at some point in the conversation. They all center around either working at google or how smart I must be because programming must be complicated. However, in this article, I hope to give you some actual insight into what I think about programming and difficulty.
Answer: While programming can be frustrating and often described as complex or challenging, it is like any other skill. As long as you are willing to put in the time and effort, you can learn, and the results can be gratifying. The question you should ask yourself is how hard are you willing to work to achieve your desired results?
One of the first things people often say or hint at when I tell them I’m a programmer is always along the lines of, “you must be so smart; programming seems very hard.” In general, there is a little wisdom in the statement, but I think you would not be looking the subject up unless you were at least interested and possibly confident in your ability. So keep reading if you want to get more insight.
How Many Years Does it Take to Become a Computer Programmer?
There is no doubt that programming can be a lifelong pursuit. At the core, programming is a series of puzzles solved by making the problem smaller and smaller until it is easily solved.
But if you only want to know how many years it takes to become a developer, the simple answer is six months to 1 year to become a JR-level developer. You can do almost anything with a bit of help at the JR level, and technically you are a programmer.
I know some of you are going to reject this answer outright. If you want to talk more about it, I will post a link to the video on this subject after it is made.
After becoming JR, the level progressing further depends on the path you choose to follow. I put together some questions and options that might help you progress as fast as possible.
What Can Help Me Advance My Programming Career or Start Programming My Career Faster?
There are steps you can take to maximize the speed at which you advance your career and maximize your results. Here I focus on the primary things that every programmer should think about. Additionally, there are several things you can do with standard goals and productivity practices that will help further, but that is all to come in future articles.
Choose Your Own Programming Adventure:
Can You Learn Programming Faster in a Team?
One of the fastest ways to learn is with other people who have been there before and have already gone down the paths you are about to traverse. However, you will not get the maximum results from this unless you have a willingness to listen to and learn from the people you are working with. Conversely, you will also need to be able to explain and defend your ideas. It is not easy to defend a position while also examining the merits of opposing views, but developing this ability in yourself can help you progress much faster in your skill and, therefore, in your career.
Are You Willing to Push Through the Most Annoying Problems?
When I have been hiring or training new programmers or working with people in the open-source community, there is one big separator between those that increase their skill levels and those that stagnate and eventually quit. It all comes down to how willing they are to solve their problems and push through the pain and frustration of figuring things out independently. Conversely, you must also know when it is the right time to ask for help. Many managers have guidelines they like to follow to tell their employees, typically based on some arbitrary time value, when you should ask for help. However, word of warning to these managers there is an art to figuring out the proper balance of how long you should let someone work to figure something out vs. just asking. Each time interruption for a simple problem, especially one that will be repeated often, is time you could have spent doing something more substantial. My advice here is simple: new hires and inexperienced programmers should look to managers for guidance, but only when you are stuck. Managers should try to evaluate the lost time to their schedule vs. what will be saved in the long run if the problem often comes up.
Are You Willing to Obsess Over Something Until You Figure it Out?
Similar to the last question but more about what you are doing away from your computer. Do you like to think about things, solve puzzles, or obsess for a solution? Many times if I can’t think about something clearly when I’m working at my computer, I might have reached my limit for the day, but later that day, when I’m watching TV or relaxing, the problem is churning in my head. Maybe I’m going for a walk or taking a shower, and I will come up with the solution that I was looking for earlier in the day. This kind of obsession is going to help make you a better programmer faster.
Conversely, it took me years to learn this, but sometimes you genuinely need to get away. Leave the problem behind in your mind and work on another hobby or outlet to give yourself some space. Once you are away from the problem, you will allow your mind to do the creative thing it does and develop some new or unique solution.
Will You Always Strive to Learn Something New?
New frameworks, technologies, standards, security practices, and industry-level changes are always happening in the technology space. You always need to learn things and progress if you want to progress in your career and grow in your skill. Many jobs and many people in the world get their foot in the door, and then that is it for them. However, in programming, you always want to be learning something new. Conversely, specializing and going very deep into a subject can be a great way to advance your career increase your pay to the maximum level. Often, the people who make and support a single library can charge any price they want for their services. When you only know the standard stacks, you are more of a commodity, but when you are one of 3 people who know the ins-and-outs of highly complex technology, you can command your pay level.
Can Everyone Become a Computer Programmer?
It would not be very ethical of me to say that anyone and everyone could become computer programmers. However, what I can say is if you searched and found this article and now find yourself reading it, chances are very high that you can become a programmer.
There is a strong correlation between a programmer’s ability and intelligence, but this is only a tiny part of the picture. Through the experience of hiring multiple freelancers, two separate teams at different companies, and hiring for other positions that are not programming, I have learned a lot about what kinds of traits tend to produce good programmers.
As mentioned earlier in the previous section, some of the things that lead to good programmers are an obsession with problems, solving them, communication with team and supervisors, and a willingness to learn new things continuously. Not mentioned in the previous section are things like conscientiousness, openness, and intelligence. Many exciting things have been happening in the intelligence arena over the last several years, with many links to increased intelligence being drawn from reading more and solving more puzzles, both things you will end up doing a lot in programming.
In many ways, reading someone else’s program is like reading a foreign language, but one that follows similar syntactical rules to the one you already know, allowing you to decipher what they are saying until you fully understand what is written. Interestingly, this is the correlation that is drawn between conscientiousness and openness, possibly leading to higher intelligence. I believe those two lead to the latter and not the other way around.
As a recap here, you need to have several of the previously needed traits, and you also need to be intelligent enough to perform the task or drive enough to force your plastic brain into adapting. But if it takes so much work, you may be wonder if it is all worth it, and that is what the next section covers.
Is it Worth Becoming a Computer Programmer?
The barrier to entry can be high but so can the rewards.
The ability to control computers in a meaningful way to do something simple like sending a message to another screen or something more complex like displaying an entire operating system comes down to programming. The critical thing to note here is that it was a programmer that did that programming to make those things happen.
Someone had to think through the problem and come up with a solution to build what they thought of as code. Once they had enough code written, it is eventually a program. As mentioned in the previous section, not everyone can become a programmer. For that reason, companies are willing to pay well for those who go the distance and learn the skills needed to become developers.
Bottom line, companies, governments, and even end users are willing to pay for solutions to their problems or perceived problems. Many programmers only want to focus on the task at hand, but if you want to maximize your earning potential and your real-world value as a programmer, focus on the problem you will solve and solve it. I can promise you will be rewarded handsomely.
The last thing I will leave you with on this note is going back to what I said above if you are worried about the amount of effort you will put in vs. the pay, you will get out. I can tell give you some real-world numbers.
Programmers that I know or hired:
- Only know general stack: $20-40 /hr
- Manages others: $40-65 /hr
- Specialized in technology or area: $50-150 /hr
- Built a solution and sell freelance/consulting: $250-500 /hr
- Built a solution that is an app or SaaS (a good one): $5,000+ /hr