给初入门程序员的建议(原创文章)

2016-07-02 18:30:53 +08:00
 jybox

(原发表于 https://jysperm.me/2016/07/suggestions-for-beginners

我们经常看到网络上有很多黑程序员的段子,但那不过是一群居心叵测的人散布的谣言,企图通过给新人们留下负面的印象,进而阻止更多人进入这个行业的方式,来保证不思进取的自己不会被行业淘汰。

解决问题的途径比得到结果更重要

解决问题是一个通用的能力,本应在学生时代习得,若是不擅长解决问题,怕是短时间内很难提升,但在一个具体的领域里,往往「途径」更加重要。

当你在一个论坛或社区提出一个问题时,有些惜字如金的大牛会直接丢给你一个链接,不会多留下哪怕半个字,不要小看一个链接,它可能比直接告诉你答案更有价值。

当你进入一个新的领域,遇到问题时往往不知道应该去哪寻找答案,这时候你会想如果有一个网站,列出了作为新手可能遇到的一切问题该多好。但世上没有这么好的事情,往往这些问题和解答分散在不同的网站上 —— 从这个链接就可以点过去。

不要相信一句话就可以描述的真理

网络上的大牛经常提出提出一些简洁有力的口号,例如「抽象可以解决计算机领域的一切问题」、「好的代码不需要注释去解释」、「动态类型语言才能提高编码效率」、「 PHP 是世界上最好的编程语言」等等。

并不是说这些观点是错误的,但它们就像「苹果总是会落到地上」这种简单的理论一样,描述的情况是片面的,而非普适的。有些结论是前辈们花了大量的时间和精力探索出来的,但光知道一个结论对你的编程是没有太多指导意义的,更多的细节隐藏在得出这个结论的过程中。

所以如果提出这些观点的人没有深入介绍、你也不打算自行了解,索性不如忘掉这些话。

深入了解你使用的工具

在编程的过程中,我们需要借助大量的工具来完成版本控制、调试、重构、构建和部署等工作。包括你的编辑器( IDE )和操作系统都是必不可少的工具,选择一组好用的工具,并且不断地学习和配置它们,这样才能逐渐提高工作效率。

每个人在选择工具的过程中都会掺杂大量的个人喜好,但我建议大家在选择工具时考虑下面几个因素:是否是免费软件或开源软件、是否有公司在维护、是否有大量用户和活跃的社区、是否支持插件或拓展、是否支持多种平台。

写出可以运行的代码只是最基本的要求

当一个程序可以运行起来了,不要高兴得太早,这只是一个开始。例如你是否考虑到了各种边界情况;当程序收到非预期的输入会发生什么;所依赖的外部服务出现异常会怎样,发生错误时是否能从日志中还原出现场;如果程序处理的数据量或运行时间提高几个数量级会发生什么;构建、测试和部署过程是否做到了自动化;代码是否为将来的修改做好了准备等等。

先精通一种语言,再广泛涉猎

很多新手会各种编程语言搞得头晕目眩,不知道先从哪个学起,索性不如左右开弓,同时学习。

一旦你这样做了就会发现很难将同时学习的两种语言的知识区分开,因为它们实在太像了。但如果你先精通一门语言,了解了它每个语法的工作方式之后再学习其他语言就很轻松了,因为你对已掌握的语言已经足够了解,不会和新语言混淆。而且你会不由自主地用已掌握的语言去和新语言比较,更容易发现它们之间的差异,发现各自语法的内在逻辑。

(原发表于 https://jysperm.me/2016/07/suggestions-for-beginners

3730 次点击
所在节点    程序员
16 条回复
lechain
2016-07-02 18:37:24 +08:00
非常棒,支持一个~
Reign
2016-07-02 18:39:25 +08:00
jy 和 sperm 不是同义词么?跟你头像一样
isCyan
2016-07-02 20:58:10 +08:00
第三点显然在挺 Atom 太明显了
tcdw
2016-07-02 21:02:06 +08:00
这篇文章还是比较中肯的
murmur
2016-07-02 21:09:02 +08:00
@isCyan 阿童木不差啊 插件比较多 就是比宇宙第一记事本 VS Code 卡一点
VSCode 那个自己改 json 弄配置太 geek 了 阿童木管咋的还有个图形化界面
jon
2016-07-03 02:16:53 +08:00
「 PHP 是世界上最好的编程语言」

为何要挑起战争?
asj
2016-07-03 06:28:58 +08:00
"不要相信一句话就可以描述的真理"
比如说上面这句话
lowzoom
2016-07-03 10:20:11 +08:00
太空了,还不如出道算法题给新人练习实在
Patrick95
2016-07-03 11:59:06 +08:00
@asj 233
leeloto
2016-07-03 12:37:50 +08:00
@lowzoom 编程是技艺,算法已经属于科学范畴了,我发现好多人都不明白这个,好多人回答别人如何学习编程总有人推荐什么计算机原理,算法呀等等,真实无语
fuxpro
2016-07-03 20:30:34 +08:00
@leeloto 其实别人有这种混乱也是正常的,国内和国外的实际情况还有很比较大的差别的
lowzoom
2016-07-03 22:06:35 +08:00
@leeloto 做算法题本身就是代码实践,轻视算法题的人,都是一些半路出家基础不行的代码民工
mingyun
2016-07-03 22:43:50 +08:00
博主也是 phper ,哈哈
leeloto
2016-07-04 21:04:12 +08:00
@lowzoom 我没有说算法不重要,我只是说一个阶段一个任务,学习要有阶段有方法
lowzoom
2016-07-04 21:25:03 +08:00
@leeloto 是的,学习要有阶段有方法,所以在程序初入门的时候,就应该做一些初级算法题来练习,我相信这个问题,我们是有共识的,你可能只是将我说的算法题,误解成了对算法的理论研究而已,握个手
wizardforcel
2016-07-25 19:06:50 +08:00
@lowzoom 初入门应该做算术而不是算法。没学会走就想跑??

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX