(原发表于 https://jysperm.me/2016/07/suggestions-for-beginners )
我们经常看到网络上有很多黑程序员的段子,但那不过是一群居心叵测的人散布的谣言,企图通过给新人们留下负面的印象,进而阻止更多人进入这个行业的方式,来保证不思进取的自己不会被行业淘汰。
解决问题是一个通用的能力,本应在学生时代习得,若是不擅长解决问题,怕是短时间内很难提升,但在一个具体的领域里,往往「途径」更加重要。
当你在一个论坛或社区提出一个问题时,有些惜字如金的大牛会直接丢给你一个链接,不会多留下哪怕半个字,不要小看一个链接,它可能比直接告诉你答案更有价值。
当你进入一个新的领域,遇到问题时往往不知道应该去哪寻找答案,这时候你会想如果有一个网站,列出了作为新手可能遇到的一切问题该多好。但世上没有这么好的事情,往往这些问题和解答分散在不同的网站上 —— 从这个链接就可以点过去。
网络上的大牛经常提出提出一些简洁有力的口号,例如「抽象可以解决计算机领域的一切问题」、「好的代码不需要注释去解释」、「动态类型语言才能提高编码效率」、「 PHP 是世界上最好的编程语言」等等。
并不是说这些观点是错误的,但它们就像「苹果总是会落到地上」这种简单的理论一样,描述的情况是片面的,而非普适的。有些结论是前辈们花了大量的时间和精力探索出来的,但光知道一个结论对你的编程是没有太多指导意义的,更多的细节隐藏在得出这个结论的过程中。
所以如果提出这些观点的人没有深入介绍、你也不打算自行了解,索性不如忘掉这些话。
在编程的过程中,我们需要借助大量的工具来完成版本控制、调试、重构、构建和部署等工作。包括你的编辑器( IDE )和操作系统都是必不可少的工具,选择一组好用的工具,并且不断地学习和配置它们,这样才能逐渐提高工作效率。
每个人在选择工具的过程中都会掺杂大量的个人喜好,但我建议大家在选择工具时考虑下面几个因素:是否是免费软件或开源软件、是否有公司在维护、是否有大量用户和活跃的社区、是否支持插件或拓展、是否支持多种平台。
当一个程序可以运行起来了,不要高兴得太早,这只是一个开始。例如你是否考虑到了各种边界情况;当程序收到非预期的输入会发生什么;所依赖的外部服务出现异常会怎样,发生错误时是否能从日志中还原出现场;如果程序处理的数据量或运行时间提高几个数量级会发生什么;构建、测试和部署过程是否做到了自动化;代码是否为将来的修改做好了准备等等。
很多新手会各种编程语言搞得头晕目眩,不知道先从哪个学起,索性不如左右开弓,同时学习。
一旦你这样做了就会发现很难将同时学习的两种语言的知识区分开,因为它们实在太像了。但如果你先精通一门语言,了解了它每个语法的工作方式之后再学习其他语言就很轻松了,因为你对已掌握的语言已经足够了解,不会和新语言混淆。而且你会不由自主地用已掌握的语言去和新语言比较,更容易发现它们之间的差异,发现各自语法的内在逻辑。
(原发表于 https://jysperm.me/2016/07/suggestions-for-beginners )
1
lechain 2016-07-02 18:37:24 +08:00 via Android
非常棒,支持一个~
|
2
Reign 2016-07-02 18:39:25 +08:00 via Android
jy 和 sperm 不是同义词么?跟你头像一样
|
3
isCyan 2016-07-02 20:58:10 +08:00 via Android
第三点显然在挺 Atom 太明显了
|
4
tcdw 2016-07-02 21:02:06 +08:00 via Android
这篇文章还是比较中肯的
|
5
murmur 2016-07-02 21:09:02 +08:00
@isCyan 阿童木不差啊 插件比较多 就是比宇宙第一记事本 VS Code 卡一点
VSCode 那个自己改 json 弄配置太 geek 了 阿童木管咋的还有个图形化界面 |
6
jon 2016-07-03 02:16:53 +08:00
「 PHP 是世界上最好的编程语言」
为何要挑起战争? |
7
asj 2016-07-03 06:28:58 +08:00 via iPad 2
"不要相信一句话就可以描述的真理"
比如说上面这句话 |
8
lowzoom 2016-07-03 10:20:11 +08:00
太空了,还不如出道算法题给新人练习实在
|
10
leeloto 2016-07-03 12:37:50 +08:00
@lowzoom 编程是技艺,算法已经属于科学范畴了,我发现好多人都不明白这个,好多人回答别人如何学习编程总有人推荐什么计算机原理,算法呀等等,真实无语
|
13
mingyun 2016-07-03 22:43:50 +08:00
博主也是 phper ,哈哈
|
15
lowzoom 2016-07-04 21:25:03 +08:00
@leeloto 是的,学习要有阶段有方法,所以在程序初入门的时候,就应该做一些初级算法题来练习,我相信这个问题,我们是有共识的,你可能只是将我说的算法题,误解成了对算法的理论研究而已,握个手
|
16
wizardforcel 2016-07-25 19:06:50 +08:00 via Android
@lowzoom 初入门应该做算术而不是算法。没学会走就想跑??
|