Do you have a dream of becoming a programmer? Do you think programming is all about coding? If so here are some obstacles that might get in your way while pursuing that dream. Are you ready for a challenge?
1. Learning every day.
Do you like to learn everyday? When you are a programmer, you have to. There is no other way to evolve and progress in that profession. The code you are writing today is getting obsolete at the moment you are writing it. Tomorrow there will be a new shiny version of the language, library, or API waiting for you to take advantage of.
2. Programming is not all about writing code.
If you dream about writing code all day, think again. In early junior years, it is true for most of the time. The more advanced you get in programming the less programming you really do. Syntax of a programming language is the easiest thing to learn but very often the least important. What matters most is understanding the domain of the problem and understanding the processes behind it.
3. Dealing with boring stuff.
There are different stories about exciting coding experiences and there is a lot of truth in them. While you can have a lot of fun doing a programming job, to be closer to reality, usual programmer work is often a very boring task. It requires patience and a methodical approach. Almost every day you will have to do the same and the same things again and again. You can automate some of them, others can’t, and won’t be automated in the near future.
4. In the end it’s all about writing.
Coding is a lot of writing, can you write well? Can you express yourself in a clear manner? To the contrary of common belief, you don’t need that much math (unless you work as a quant developer) but you need to be creative with your writing. It’s not only following the syntax of the language but also the way you are doing it. The best developers have more from writers than from the mathematicians.
How persistent are you? Programming problems are usually complex issues, you can spend hours looking for a bug and finding out you just missed a semicolon. The more experienced programmer you become the worse problems you have to solve. It grows to the point you start to think there is no easy one left.
6. Communication and collaboration.
Can you imagine yourself immersed in focused coding work? Nothing is far more away from the truth. To finish your assignment or project you need to communicate and collaborate with a lot of people. Even worse you have to communicate and do it well enough. It all starts with requirements gathering, goes through multiple iterations of the software development cycle and ends up with software maintenance and support.
7. Being methodical.
Can you think in a linear way and follow problem-solving patterns to find a solution? Problems in software engineering won’t fade away there are only two answers 1 or 0. Can you try multiple times per day to solve the same problem using different approaches, fail miserably, and do it all over again the next day? Can you learn from what didn’t work one day and do it better the next day? Can you repeat the change/test/fail/feedback loop until you find a solution?
8. Attention to detail (often under pressure).
A missing semicolon, wrong “if” statement, hidden dependency etc. Are you able to spot the difference? Can you pay attention to multiple params which might cause an application crash? Can you do it every day knowing if you let the bug pass to production it will cause serious loses?
9. Health risks.
What health risks can be related to a coding job? At least the same one as related to any other office job and some more. Sitting most of the day at the computer (and often after hours) doesn’t help with staying healthy. Posture issues, bad eating habits, obesity, overdosing energy drinks including coffee plus eye problems that’s what you can get if you are not careful. There is more to it in the next point.
10. Mental health – developer burnout or brain fatigue.
You might ask how it is possible with a dream job like software programming? They seem to be having fun all day at Google with all those slides, games and so on. But it’s true and it’s happening more often than you think. Programming is not an easy job, your brain has to solve a lot of complicated issues every day and if you don’t rest it in a proper way, you might find yourself in serious trouble.
You are going to make mistakes, actually a lot of them. If you are afraid of being wrong most of the time, programming career is not for you. Remember “If you don’t fail you won’t learn.” If your mistakes are detected in a safe development environment where you can make them without consequences other than your hurt pride, it’s great. However, if your mistake makes it to production it’s not gonna be pretty. A bug propagated into production can lead to serious trouble not only on a personal level but can also have company-wide consequences. You can learn more about it at https://fuckupnights.com/. In any way, if you won’t learn from your past you don’t get far in software development.
What is the ownership of projects? The best simplification that comes to mind is that it’s being responsible for a project or an assignment from start to finish. Meaning until somebody takes over from you or an application/product is no longer being supported you are solely responsible for maintaining and developing a particular application or a part of it. Are you ready to own you work? There is a lot more to it and I’ll extend on that topic in another post.
13. Can you ask the right questions?
Can you ask the right questions? Starting a new job in any profession is usually not an easy task. You have to learn a lot of new things and ask a massive amount of questions. While questions related to the business domain of the problems are always welcome asking someone to solve problems for you will quickly get you into trouble. Obviously, if you are stuck you need to ask questions, ask for help. On the other hand, you can’t overuse someone’s patience with googleable problem solution. If you hear the answer: “Let me google it for you” – https://lmgtfy.com/ – you know you are going too far. Here again, soft skills come into play.
14. Are you a self-starter?
The term is often used in job offers and there is a reason for that. For a good developer, it’s a must. Pursuing tasks on your own, learning on your own, even if the company doesn’t support it.
If you are still with me at this stage it looks like nothing will prevent you from becoming a programmer. In my next posts, I’ll shed some light on the bright sides of a programming job.