HACKER Q&A
📣 chenshuang

What is the best way for the average programmer to grow?


Everyone's way of doing things has some skills, and these skills can avoid taking a detour, Can you teach me what you think are the most valuable ideas, tips, or experiences from your career as a programmer? Thank you very much ---From a rookie programmer who is not willing to be mediocre


  👤 brailsafe Accepted Answer ✓
It depends on what you mean by programmer. Do you mean good at the act of programming or good at a job that requires you to program?

In terms of pure programming, I recommend playing with different depths of the stack and different disciplines like graphics, web front end, web back end, C++, etc. The most important general skill there imo is troubleshooting and debugging. Beyond that, you want lots of exposure to different problems within whichever toolkit you like, and it's nice to have a set of patterns you can employ to tackle them.

In terms of career, it seems like getting boring things done quickly is the most important programming skill to develop, the rest are communication and showing up on time.

For both, learning to estimate your time and measure/test your skills are things I'm learning to be important. It's easy to think you know x, but just go try and do it well, then decide.


👤 gregjor
Work with code you didn’t write. Jump into unfamiliar code and fix problems and improve it. Don’t worry about learning languages first — if you know a couple of languages already you can probably read others with help from reference materials. Lots of legacy code out there.

Learn how businesses work (known as domain knowledge). Ask questions, listen to non-programmers. Domain expertise plus technical skills make you more valuable to employers and clients.


👤 Torwald
Over time people notice how you tend to comment your code (and do other documentation tasks.) They may not talk to you directly about it, necessarily, in the heat of the battle. But they notice and I've seen this making the difference when it comes to career advancement decisions.