<

How to be a good programmer?

Published: 2025-02-02

I am not talking about a great programmer or developer, but a good one. I feel like "great" leaves room for too many subjective opinitions. On the other hand, I think we can all agree on the bare minimum of being a "good" one though. First of all, a good programmer needs to be efficient and pragmatic. Given a new task or feature, that should be done with good standard, and check all the requirements. You should be able to get started on writing code without wasting time over-designing the architecture, which eventually leads to premature optimization and abstraction. In the end, you are creating a product for some kind of business and customers probably don't give a f*ck on whether your code is clean or have good follow good standards or not. Just get something done and running. This can link to the next point of don't be too attach to your code. They're just texts in the end. Be isolated from your code helps you to focuse more on the actual problem instead of the minuate details of the code. In your lifetime, it is highly likely that not a lot developer will read your code, except if you make linux kernel or something like that. However, this does not mean that you should never refactor your code, especially the code that you write as foundation for the whole company. Don't be too attach to your code but don't also be too reckless and over-optimistic about your code. Because in case you're writing the next operating system, some intern will read it and they will submit a pull request roasting your legacy code. You'll also need to learn how to work with others, not just developers but also product managers, designers, marketers, your boss, or even customers. Efficiently explain your code and also listen to others' feedback is a must. I realize that most of the time dealing with people is actually the true challenge of a programmer or an engineer in general. Juggling multiple feature request and jira tickets is probably the not the most gramouring part of the job but it is the majority of it.

Next, you shouldn't be too attach to a technology or a frameworks. Most of the time, these technologies evolve into higher level abstraction and you will then receive another pull request from your intern saying that this framework is outdated. It is great to be specialized in something but you also need to traverse to other part of software to understand the full picture. Be a polyglot, be a renaissance man or woman. By having a more general knowledge of different facets of software, you'll able to solve more problems and be more efficient. Then, having your best programming language or expertise are still highly relevant. Be an experts first before becoming a generalist. Having great fundamentals is also a must. Data Structures and Algorithms are language agnostic so you maybe able to know all lower level or system programming language but you still can not implement a linked list in python is not a sign of a good engineer.