原文: https://www.quora.com/What-are-some-things-you-wish-you-knew-when-you-started-programming/answer/Ken-Mazaika

1. You learn by doing. The only way to get better at programming is to actually program. Don’t let an analysis paralysis prevent you from ever starting.

2. Programming isn’t like studying for a test. Memorizing stuff doesn’t matter all that much.

3. Cheating is completely acceptable. I use Google to solve most of my problems, and so do most programmers.

4. Letting problems pile up without checking is a poor strategy. I used to make endless changes to my code and expect it to work right away. The problem with this approach is that it stacks one problem on top of another, and it becomes difficult to figure what went wrong.

5. Learning by yourself is really tough. Talking about code and collaborating with other aspiring developers is a better way to learn for most people.

6. Let go of your emotions. You’re going to see error messages on your journey to becoming a programmer. When screwing up is such an integral part of the process, you need to be ok with making mistakes in order to grow.

7. You don’t need 5 monitors. Contrary to what Hollywood might tell you, you don’t need an insane external monitor setup to be a programmer. The computer that you own right now is probably good enough to use to start programming. Don’t waste your money.

8. There’s a BIG difference between a capital letter and a lowercase letter. It took me a while to get used to noticing subtle differences between similar symbols, and it can be pretty frustrating until you get used to it.

9. Trying to understand everything is a lost cause. In the beginning, I tried to chase down the “why” to every problem I encountered. This isn’t necessary. Computers are so complex and there is so much to learn, and you’re never going to understand everything. That’s ok.

10. Pair program as much as possible. There is no faster way to learn how to code.

11. Changing bad code is part of the process. I used to think that every piece of code I wrote needed to be perfect. But making improvements to your code is normal. You’re not writing a book that can’t be changed once it’s published.

12. There’s a right way to ask for help. Everybody needs to ask for help at some point. And when you do, make sure that you do these 4 things:

  • Overcommunicate details that you see.
  • Explain exactly what you think should be happening.
  • Explain exactly what is actually happening.
  • Explain why you think it should be working differently.

When you go through this process, you’ll often come across a solution without ever asking for help. It makes you think about problems in a holistic way.

13. You don’t need to be a math genius. If you’re not a “math person,” that doesn’t mean that you can’t be a programmer.

14. Always celebrate the small wins. Building stuff with code is really cool. I never would have arrived where I’m at if I hadn’t stepped back and admired the awesome things I was building along the way.

15. Meet-ups are incredibly valuable. In the beginning, it was pretty intimidating to get myself to the point where I felt comfortable attending these. But once I did, I realized that there were a ton of developers just like me.

16. Avoiding merge conflicts makes you happier. Merge conflicts are annoying. So when I realized that I could sneak a feature in before a teammate so that he/she had to deal with these instead of me, I was super excited.

17. It’s ok to admit what you don’t know. When you land your first programming job, you might be inclined to “fake it till you make it.” Don’t. Nobody expects you to know everything right away.

18. It doesn’t take 10,000 hours to be good enough to land a job. In reality, you need to be good enough to know how to self correct and get back on track when problems arise. This takes far less time than 10,000 hours.

19. You’re going to wake up in the morning thinking about code. And when it happens, it’s really freakin’ cool.

20. It’s ok to make big mistakes. I once made a mistake that cost my company $10,000 dollars. In the process, I learned the most important lesson of my programming career.

21. An algorithm is like finding a name in a phonebook. Algorithms are a step-by-step approach where there is exactly one correct next step. An easier way to think about this is the strategy that you would take to find one specific name in a phonebook.

22. You’re never going to feel like you’re ready to program full time. Imposter syndrome is real. Try to remember that it’s normal to not know everything. The most important thing is understanding that you can figure out the stuff that you don’t know.

23. Programmers never stop learning. New technologies come out all the time, so the programmers that succeed are the ones who continue to learn and develop their craft on an ongoing basis.

24. Make the computer think like a human. Too many people have the impression that you need to think like a computer. It’s actually the opposite.

25. Programming is about using the right tool for the job. There are so many different open source libraries, tools, and frameworks at your disposal. So you need to grow your developer toolkit and understand which tool makes sense for each problem that they encounter.

26. It’s common to give up right before change is about to happen. Learning to code (especially to the point where you can switch careers) is a lot of work. It takes time and a lot of discipline, but it is possible. Too many people make the mistake of doing almost enough work to to get where they want.

27. Learning to code isn’t easy. But that’s why it’s worth doing.

就算未必係 Developer 嘅你都可以閱讀一下,睇下世界各地 好嘅 Developer 嘅心路歷程💪🏻

但係如你係老板/高層更加要睇,文章入面提到有好多阿 Gap 認為香港有好大部份公司骨子裡缺少嘅 Programming 文化,阿 Gap 深信如果做到嘅話,貴 公司一定可以減低流失率!

點解要試啲新 Language 、新 Framework?

有朋友(好傳統跟大隊嘅 Developer)問過我:

點解你成日試啲新 Language 、新 Framework? 公司都未必有機會會用啦 🤔!

阿 Gap 答佢:

一個廚師都要識用十幾種廚具,先能夠成為一個大廚 ; 例如有個客人要一碟楊州炒飯想加 Scrambled eggs上面撈嚟食,但係你如果只係識得用一個炒鑊,好多人會索性用個炒鑊嚟煮埋,最後煮到不輪不類搞砸埋碟飯。

你問我學識用平底鑊煮 Scrambled eggs 係咪真係咁難?其實唔係,只不過個 Client 等唔到你學有所成嘅時候先出碟飯。就算你識得降龍十八炒都好,用炒鑊煮 Scrambled eggs 永遠唔會係一隻好嘅 Scrambled eggs。

另外,當你學習用平底鑊嘅同時,你會經歷無數次失敗,廚藝亦會因為學嘅過程令你烹調食物嘅時候變得更細膩,係屬於一種整體提升。

每次學新嘅 Language 、Framework、Tools,每次都會反思自己曾經寫過嘅 Project 面對住呢類新技術會唔會比下去,諗下會唔會用新嘅方法做會做得更好,為嘅就係下一次寫 Code 嘅大躍進。」

再致各位有心嘅 Developer

Your employer can't force you to be a good programmer; a lot of times your employer isn't even in a position to judge whether you're good.
If you want to be great, you're responsible for making yourself great. It's a matter of your personal character."