给程序员新手的一些建议

1,242 阅读8分钟

首先我们要知道,在程序员这个职业中,究竟是天赋重要还是兴趣和努力重要?

大多数人提升编程水平,所推荐的方法是一些很基础的事情。如,阅读代码、理解代码、编写代码、参加项目、讨论代码等等……当然,这些作法确实能够帮助程序员提升水平,但其实际效果显然是非常小的。

下面是我想对程序员新手的一些建议和想说的话,希望能对你们有点帮助吧。

不要做一个码农

IT是工科,不是理科,和IT行业相似度最高的行业是盖楼房。而码农的工作和搬砖没什么区别,就是东搬轮子西拼凑,哪里漏水修哪里,会铺个地砖和个水泥,就能把房子搭起来。和工程师的区别在于,搬砖工人是拿不出建筑图纸的,但工程师可以。码农是搞不定项目方案的,但程序员可以。

学好计算机基础

我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了。在当今计算机行业中,会应用是基本素质,如果你懂其原理才能让你在行业中走的更远,而计算机基础知识又是重中之重。

计算机基础知识对于程序员来说非常重要,重要程度高,想成为高级程序员,必须有好的计算机基础。

之前我写过一篇关于计算机基础知识的文章,里面也有很多的好的资源也分享给大家了,有需要的可以去看看:计算机基础知识对程序员来说有多重要?

不要盲目复制代码

不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。

而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题。

学会测试你的代码

你知道你的代码能做什么,而且试了一下,它确实好用,但你实际上需要充分的验证它。分析所有可能的边界情况,测试在所有可能的条件下它都能如期的工作。

如果有参数,传递一些预期范围外的值。传递一个null值。如果可能,让同事看看你的代码,问他们能否弄坏它。单元测试是到达这种目的的常规方法。

提交你的代码之前,找个同事一起坐下来,向他解释你做了哪些修改。通常,这样做的过程中你就能发现代码中的错误,而不需要同事说一句话。

这比自己审查自己的代码要有效的多得多。

让代码变得更简洁

如果你发现写了大量的代码来解决一个简单的问题,你很可能做错了。下面的boolean用法是一个很好的例子:

if (numMines > 0){
   enabled=true;
}else{
   enabled=false;
}

这时你应该写成这样:enabled = numMines > 0;

代码越少越好。这会使bug更少,重构可能性更小,出错的几率更小。要适度。可读性同等重要,你可不能这样做而使代码丧失可读性。

不要使用纯数字

直接把数字嵌入代码中是一种恶习,因为无法说明它们是代表什么的。当有重复时更糟糕——相同的数字在代码的多个地方出现。

如果只修改了一个,而忘记了其它的。这就导致bug。一定要用一个命名常量来代表你要表达的数字,即使它在代码里只出现一次。

避免过早优化

当你要去优化一个已经好用的功能代码时,你很有可能会改坏它。优化只能发生在有性能分析报告指示需要优化的时候,通常是在一个项目开发的最后阶段。

性能分析之前的优化活动纯属浪费时间,并且会导致bug出现。

多思考、多假设

作为工程师,我们享受于高效的工作效率:喜欢不断地创建、创建、创建。

但是如果我们不能用长远的角度看问题,只会作茧自缚,使得最后越来越难构建任何东西。

有时候,我们还没理解问题就直接去写代码,最后导致不得不放弃。

有时候我们的方案虽然对局部问题很有疗效,可却能让事情变得更糟或造成更严重的后果。

有时候我们匆匆忙忙没有完成设计,从而导致后期别人需要花更多的时间来修复。

有时候我们只是懒得用正确的方式写,直接就复制或者借鉴了别人的内容,原因可能是因为忙着赶项目进度不想花时间去好好思考。

学习快速搜索技术、手段

作为一名好的程序员,不仅仅是技能的问题了,而你寻找信息的技巧也非常重要,而这个趋势会越来越明显。

你应该学会,如何接近特定的搜索,以及了解自己实际上想查些什么,信息筛选可以通过组建思维知识图谱来提升。

最后搜索多了,经验上去了,就知道一些高质量的网站和一些通常的说明文档位置,使得你的问题的求解更加容易,包括像应该使用哪种搜索引擎。

在你开始学习编程的第一年,你所遇到的每一个问题都是其他100个人已经遇到的。解决方法在网上已经记录下来了。你越快的学会有效的使用 Google 寻求帮助,你也将变得越开心。提示:如果你不明白代码的原理是什么,永远不要直接从网上复制。

多读优秀代码

在工作中多看看高级程序员写的代码,然后问一问他们为什么以某种特别的方式来完成这个项目,也可以学习他好的编程习惯,从中得到反思。

但值得注意的是不要生搬硬套别人的东西;你要能领会到哪些是能行的通的,哪些是有道理的,然后再模仿人家,并不断摸索适合自己的语言。

有太多的程序员比我们聪明了。他们写了很多代码,只要你需要你都可以阅读。这些代码很有可能在 Github 上。

保持好奇心,不断地学习

如果你没有了好奇心,不愿意学习新鲜事物,不再关心新技术、新语言,那么你还干这一行干嘛呢?

互联网行业有个不成文的约定就是终身学习,层出不穷的框架,各显神通的新语言,不断拓展的未知领域等等,这些都是开发者们孜孜不倦地学习的动力。

态度是关键

如果你不喜欢自己的工作,且目前的水平还是初级,那么如何成为中级的水平或者让情况有所好转,不妨换工作或改职业吧。

反过来说,如果你喜爱所从事的工作,那就好!少一些浮躁,沉下心来体会技术的真正精髓,踏踏实实的做,最终会有一个好的归宿。只要你坚持下去,我保证你能成为一名更好的程序员。

建议写一写博客

坚持将自己每天学习或者总结的内容记录下来,哪怕只是一个很基础、很生僻、很另类的技术点。日积月累,这就是自己的成长足迹。我相信再过五年、十年回过头在看自己写的文章,我想应该别是一番滋味

结语

其实现在我们获取知识的途径太多了,以至于我们都不知道究竟该学些什么,我觉得我们要学会静下心来思考,什么样的知识是真正能够帮助及提高自己的,哪些是浪费时间的,对工作没啥帮助的。精力是有限的,要用在刀刃上。

工作之余别忘记要多运动保持身体的健康,多沟通保持思想的活跃,多分享保持思维的清晰。当然如果能把编程当成自己的兴趣爱好,并能持久的从中获得乐趣,我想你离大牛已经不远了。

每个人都有自己成长的方式,以上建议仅作参考,祝你能够早日找到一条属于自己的光明大道!

欢迎留言交流评论,你觉得有哪些好的建议也可以分享给掘友们,我们一起加油、进步~