程序员中的大神和小白的区别

来源:互联网 发布:java中compare to 编辑:程序博客网 时间:2024/04/29 05:11

程序员的价值绝对不在于技术本身,而在于做出好用且好看程序的能力,这是一个开放性的话题,每一个人都是菜鸟过来的,希望每一个做技术的小伙伴都能尽快成为高手。

什么是菜鸟程序员、什么是程序高手,我想他们之间区别体现的最直接的一点那就是工资。可能从事同一个岗位、花了同样的时间,但是最后得到的薪酬却天壤之别。

1、代码的展现,网络的应用 展现题目:一个很小的功能,比如说一个当鼠标移动到一个标题下,在下面显示其可选菜单。 “菜鸟”程序员的代码是什么样子,自己想一下。“菜鸟”程序员的代码往往会会写的比较冗余,而且这些代码不是从书上找来的就是从网上找来的还有可能就是自己会这一部分代码(仅存记忆的提取,真正的原理似懂非懂,好像雾里看花)。 “大神”的代码会写成什么哪?“大神”程序员的代码,当你看的第一眼:简洁;第二眼:真“N”。用最少的代码,把这个程序写的非常精辟了,体现的自己的思维思路。为什么会出现这样的现象? 同样一个小的功能,放在不同的手里就产生不同的结果。这个难道不值得我们去探究原因吗? 真正的原因是:“菜鸟”程序员没有将自己的思维融入代码,代码是程序员思维智慧的结晶。当我们拿到这一个小功能的时候,我们首先一看,这方面的知识自己准备不足,于是就上网找去了。

 

2、基础扎实 技术知识决定一个人能做的技术的层次。基础的知识有计算机组成原理、计算机操作系统、网络原理、数据库原理、计算机图形学、编译原理、数据结构、离散数学、人工智能等等很高深的理论知识。在这些基础知识之上,就是软件开发语言、类库、框架,面向过程、面向对象、面向服务等编程思想,架构思想等等。 这些知识不一定会影响你现在的工作,但一定会影响到你的格局,那格局肯定也会影响到你自身的发展。我碰到过有些理论很差的人,但技术在公司内也是有些影响力的,因此,他们对技术原理就很不屑,甚至为自己不懂太多理论而擅长实战而沾沾自喜。

3、善用工具 工具能解决的事情就用工具去解决,好的工具能节约大把的时间用在更有意义的事情上。工具的范畴很广,比如linux的各种命令、比如团队内部的各种系统、比如顺手的应用、甚至包括上下班骑的自行车。只要能节约时间、提高效率,那就值得一试。在这里我列举几个大幅度提升了我的效率的东西: 双屏显示器 顺手的键盘 google(不是baidu!不是bing!) macmac上的应用:idea、alfread、omnifocus、甚至synergy和istatsmenus之类跟开发本身关系不大的应用。 我更倾向于把“使用工具”作为一种生活态度:是否希望让自己的生活专注于有意义的事情。如果你认同这个观点,那么想一想投入和回报比例,还是很可观的。

4、社交并建立联系 无所事事的时候不要将你宝贵的时间浪费在办公隔间里,也不要装古代小姐自以为矜持不和团队以外的人说话。如果还有其他实习生,也可以去找他们聊聊。在工作之余也应该建立自己的社会关系,建立自己的关系网。了解他们喜欢做什么,在哪里毕的业,以及正在搞什么项目。其中也会有一些刚从学校出来的开发菜鸟,他们非常愿意和你在吃饭的时候谈天说地,回答你提出的问题。你永远也不会知道,这些关系的价值有多大,将来能派上什么用场。总之,现在你要做的就是,交些朋友,特别是如果你到了一个新的地方。


 5、丰富的想像力 不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想像力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重要。

 

6、只看技术水平并不够

 

对于技术水平高但在领导力和交际能力方面都缺乏经验的人,不能直说“在我们这里你达不到高级程序员的标准”,这话太刺耳了。但对于他在团队中能承担的责任来说,我们可以暂时评订为中级,等他把另一方面或者两方面都提高了之后,我们再把他提升为高级。

 

很多公司只根据技术水平来做判断,但这样对于我们这种小型的而且非常依赖合作模式工作的公司来说行不通。其实我非常担心那些只衡量技术能力的公司是认可“孤独的天才开发者”这样的危险想法的,觉得一个人技术水平高,就想当然的认为领导力和交际能力也很好。

 

在大公司中每个人都只负责一小部分工作,我非常乐于见到他们分享对于“高级程序员”的定义,那应该会在技术和非技术的方面都更加全面,让我们工作得效率更高,尤其是在需要与客户打交道的团队里。

 

7、成为高级需要多久?

 

“高级程序员”是不是就意味着“若干年的经验”?事实上我并没有看到过哪个人不用五年就可以成为高级程序员的。要在很短的时间内就把一些特质发展得非常好来在某一方面达到高级水平其实是非常困难、甚至不可能的,更别说在多个方面全部成为高级了。

 

而且“五年经验”并不一定要意味着“五年的软件开发经验”。如果一个人已经在领导力和(或)交际能力上满足了条件,那他只需要提升技术能力,就已经可以发挥高级程序员的作用了。

 

我们招聘的“秘密武器”很大程度上源于我们观察到的事实:对于具有领导力和交际能力的人来说,要再提升技术能力并不需要很多时间,反之则不然。我见过很多这样的人,从代码集训营中出来两三年后就已经成了非常好的高级程序员。

 

8、实践、实践、再实践


有很多原则和道理我们听过无数遍,但是从来没有去实践。如果不经过几十万行代码的锤炼。很难达到一个高度。外部环境的支撑很重要。但是,如果没有这样的机遇,就需要我们创造条件去寻找。高级程序员会不停的实践,总结,再实践。如果觉得有用,请看这本书。

为了方便大家交流学习,我建立了一个QQ群,欢迎交流学习,在首页有。


原创粉丝点击