When I tell people 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 hard. 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 hard or difficult at times it really 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 very rewarding. I think the question you should ask yourself is how hard are you willing to work to achieve your desired results?
One of the first thing 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 life long pursuit. At the core programming is a series of puzzles that is 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 6 Months to 1 year to become a JR level developer. At the JR level you can do almost anything with a little help 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 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 basic 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 the help of other people that have been there before and already gone down the paths you are about to traverse. However, you are not going to 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 be able 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 even working with people in the opensource community there is one big separator between those that grow quickly in their skill levels and those that stagnate and eventually quit. It all comes down to how willing they are to solve their own problems and push through the pain and frustration of figuring things out on their own. Conversely, you must also know when it is the right time to ask for help. Many managers have their own guidelines they like to follow for this telling 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 important. My advice here is simple here new hires and inexperienced programmers should look to managers for guidance, but only when you are actually stuck. Managers should try to evaluate the lost time to their own schedule vs what will be saved in the long run if the problem is one that comes up often.
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 truly need to getaway. 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 come up with 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 be learning things and progressing 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 want to always 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 that make and support a single library are able to charge literally 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 that know the ins-and-outs of very complicated technology you can command your level of pay.
Can Everyone Become a Computer Programmer?
It would be dishonest of me to say that anyone and everyone could become a computer programmer. 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 programmers ability and their intelligence but this is only a small 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.
Like mentioned earlier in the previous section some of the things that tend to lead to good programmers are obsession over problems and 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. A lot of 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. What is interesting about this is the correlation that is drawn between conscientiousness and openness possibly leading to higher intelligence. I personally believe those two lead to the later and not the other way around.
So as a recap here you do need to have several of the previously needed traits and you also need to be intelligent enough to perform the task, or driven 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 is about.
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 send a message to another screen, or something more complex like display an entire operating system both come down to programming. The important 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 then they had 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 and for that reason companies are willing to pay well for those that do 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. For many programmers they 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 then focus on the problem you are going to solve and solve it. I can promise you will be rewarded handsomely.
The last thing I will leave you with on this note 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 a 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