原文来自 Quora:What are some things you wish you knew when you started programming?
我希望知道许多东西,但我想起来的只有27件事。
全面披露:我把最重要的事情放在第 14-26 条上(综上所述),因为我想让你阅读完整的答案。我想你会喜欢的。
1、通过实践去学习。
提高编程技能的唯一方式就是去动手实践,不要让一个卡壳的分析阻挡了你的开始。
2、编程不像应试学习。
记忆的东西并不重要。
3、拷贝是完全可以接受的。
我使用 Google 来解决我的大部分问题,大多数的程序员也是如此。
4、不去检查,让问题一直堆积是糟糕的策略。
我曾经对我的代码进行了无线的修改,并且期盼能立即工作。这种方法的问题在于你将一个问题叠加到另一个问题之上了,这样,找出错误出现的地方将会变得很困难。
5、自学真的很艰难。
对于大多数人,与有抱负的程序员合作和讨论代码是不错的学习方式。
6、释放你的情绪。
在你成为程序员的旅途中,你将会遇到许多错误信息。你要明白,搞砸了是不可或缺的一部分,在错误中你将会成长。
7、你不需要有 5 台显示器。
可能与好莱坞告诉你的相反,作为一个程序员,你并不需要一个疯狂的显示器来调试。你现在拥有的电脑足以开始编程。不要浪费你的钱。
8、大写字母和小写字母之间的差异很大。
在相似的符号中发现微小的差异,并使之成为习惯,花了我不少时间,直到你习惯了,否则你会感到格外沮丧。
9、试图去理解一切是感到的失落的一个原因。
在一开始,我想要找出所有我遇到的问题的原理。这不是必须的。计算机本来就很复杂,我们要学的还有很多,你不可能去理解每一样东西。这没关系。
10、尽可能的去编写代码。
在学习编程的路上没有捷径。
11、优化代码是编程的一部分。
我过去想要我写的每一行代码必须是完美的。改进代码是正常的,你不是在写一本出版后就不能更改的书。
12、寻求帮助的正确方式。
每个人在某一时刻都需要求助,当你求助的时候,你需要做这4件事:
- 你看到的通信细节
- 确切说明你认为应该发生什么?
- 确切说明实际发生了什么?
- 确切解释为什么结果会不一样?
当你经过这些步骤,你经常会无意发现解决问题的办法,而不是去寻求帮助,这会让你更全面的去考虑问题。
13、你不需要成为一个数学天才。
如果你不是一个数学天才,也不意味着你不能成为一个程序员。
14、总是庆祝小胜利。
用代码去创造东西确实很酷。如果我没有退后一步去欣赏那些我路途中创造的令人敬畏的东西,我永远也不会到达我所处的地方。
15、创客聚会是非常有价值的。
一开始,我很乐意去参加这些让我感到很自在的活动。一旦我做到了,我就意识到像我一样的开发者有很多。
16、避免合并冲突会令人很愉快。
合并冲突让人很恼火。因此当我意识到我可以在队友之前插入一个功能,让他不得不处理这些事情,这让我很兴奋。
17、承认你不知道是可以的。
当你从事你的第一份编程工作时,你可能会倾向于 “假装直到你做到”,不要这样做,没有人指望你马上就知道一切。
18、胜任一份工作完全不必去花费 10000 小时。
现实中,你需要足够好去直到如何自我修正和问题出现时回到正轨,这样花费的时间就远远少于 10000 小时。
19、你会在早上醒来思考代码。
当它发生时,真 TM 酷!
20、犯大错没关系。
我曾经犯了一个错误导致我的公司损失 10000 美元,在这件事中,我学到了我编程事业生涯中最重要的一课。
21、算法就像在电话簿中寻找一个名字。
算法是一种循序渐进的方法。
22、你永远不会觉得自己准备好了全职编程。
冒充综合症是真实的。试着记住,什么都不知道是正常的,最重要的是明白你可以找出你不知道的东西。
23、程序员从不停止学习。
新技术一直不断的出现,所以那些成功的程序员就是那些继续学习并不断提升他们技术的人。
24、让电脑向人类一样思考。
大多数人认为,你需要向电脑一样思考,事实上这正好相反。
25、编程就是使用正确的工具进行工作。
现在有许多开源的库、工具和框架供你使用。因此你需要扩充和开发你的工具包并了解对于遇到的问题,哪些工具是奏效的。
26、在即将发生改变之前放弃是常见的。
学习编程(尤其是在你转行的时候)是一件很辛苦的工作,这需要大量的时间和纪律,但这是可能的。太多的人为了达到目的地做了许多错误的工作。
27、学习编程并不轻松。
这是值得做的事情。
事后看来,我真的很高兴我当初太天真了。知道这么少的回报给了我批判性思考我后来学到的一切的动机。
现在我开始花时间帮助别人通过编程来实现他们的目标。还有什么比这更好呢?
太多的初学程序员担心什么时候才能准备好开始全职编程,所以我写了这个标志意味着你已经准备好跨越了。