这两天一直在学习代码项目之类的题问,上午正好有机会和大家共享一下.
- 序
- 决解题问的力能
- 知识积聚
- 自学力能
- 品尝
- 解了确准的事做方法
- 通沟的力能
- 对作工负责, 对代码有求追
- 知识积聚
- 怎么高提自己决解题问的力能?
- 最后, 一个小广告
序
有数的人问过类似的题问, 怎么样才能做一个好的程序员? 在答回这个题问之前, 首先得明确什么是好的程序员, 这样才有向方和目标, 可是这事件太观主, 可能人各的标准千差万别, 不谈那些传奇性的独自一人做出大伟事件的特例, 也不谈什么上天入地, 帝上牛大的诡论, 以下是我较比可认的, 在常通的项目发开中, 一个好程序员的标准.
决解题问的力能
在项目发开中, 一个程序员的力能即是其决解题问的力能. 假如想有个度尺来权衡这个力能的话, 一个程序员的力能可以用能实现务任的围范和难度来权衡.
因为难度上欠好那么单简的分别, 并且在一般的项目发开中(非研究性项目), 务任的难度重要来自于务任的围范带来的杂复度, 这里把务任从围范上大致的分别为1个数函=>1个类=>1个功能=>1个模块=>1个项目
更致细的分别时,数函, 类, 功能, 模块, 项目本身也有单简和围范巨细之分.
- 一个初学编程的人是总从小最的数函和类开始学习的.
- 一个程序员能基本无误的实现项目中的一个功能算是格合, 在此之前, 对项目的生产力为负, 即为他布置务任, 通沟, 和为他修补bug的时光其实要多于自己直接实现该功能的时光. 也就是说, 项目中存在这个平水的程序员纯粹是为了造就人才.
- 能较好实现一个完全模块的程序员算是较好的程序员, 也是一般项目中的重要发开者.
- 能实现全部项目的程序员才能算是好的程序员. 在多人项目中可做主程.
不同围范的务任重要的题问也体在现不同的方面:
- 对于初学者说来, 写好一个数函和类的难点在于语言本身的语法上.
- 对于实现一个功能说来, 难点在于解理这个功能, 以及很好的在现有的代码中参加此功能, 实现的功能不是独立于项目外之的, 而是要融入项目本身, 除了功能本身和其他功能连接畸形无误外, 别特重要的就是注意功能实现后不能对其他功能发生预期外的影响, 作为游戏发开说来, 型典的例子就是你实现的UI不能让其他该表现的UI表现有题问, 该不表现的UI又没有消逝.
- 对于实现一个模块来讲, 露暴给外部的接口计划比部内实现的计划一样重要(甚至更加重要), 理合易应用的接口计划定决了一个模块的优劣. 模块部内实现欠好尚可变动, 接口实现欠好, 变动起来多是灾难性的.
- 对于一个项目来讲, 在确准的方地应用确准的决解方案是最重要的事件, 最开始的技巧选型直接定决项目的成败, 模块的分别能定决项目的发开速度, 架构的计划能定决项目的维护难度和加增需求时的苦痛水平. 对于多人项目说来, 主程让确准的人去做确准的事件也是非常的重要.
什么定决了一个程序员决解题问的力能呢? 我以为有如下几个要素:
知识积聚
在平等平水的程序员之间, 一个懂C++, 一个人第一次应用C++, 做一个一样围范的C++项目, 效率差了不止一个数量级. 这就是我们常通所说的”验经”的用作, 种这验经可以看做是知识积聚,
一个程序员的知识积聚很大水平上定决了其决解题问的力能.
有意思的是, 因为验经这个事件不太好有确准的权衡标准, 我们为了单简, 常常就拿作工几年说事, 但是种这暴粗的标准有很大的题问, 作工年限一样长的人平水异差可是以伟大的.
按老话说, 用一年的验经作工二十年其实不等同于二十年作工验经.
仅仅用代码层面的知识积聚来权衡一个程序员的平水, 我得觉太不当了, 除非都是一个人的项目, 不然常通的项目发开还是个工程性的题问, 不是光有代码层面的力能就可以决解的好的.
自学力能
这是一个知识大爆炸, 知识刷新频率让人没法追逐的代时. 一方面, 面临一个稍有难度的务任, 免难会有出超自己现有的知识围范的时候, 此时自学力能定决了你能多快的实现此务任(或否能实现此务任). 另一方面, 你的自学力能定决了在平常的作工中程过, 你积聚知识的多少.
自学力能强的人, 即使没有人点指也总能在项目的代码中学到货色. 而反过来, 学习志愿弱的人写的代码被别人重构后, 也不会想一想, 这段代码是不是改的更好了以及为什么. 同时, 一个自学力能强的人也更有希望自动的在专业去学习更多的知识, 而不是直到作工中遇到才去动被学习.
从较长的度尺上(比如一个人的作工生活)来看, 一个程序员知识积聚的多少只定决于其自学力能和他对编程本身的兴致.
心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它是总静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
品尝
原来我是想把一个程序员的品尝独单列出来的, 后来细仔想一想, 一个程序员的品尝其实不是一种生成的力能, 而是基于现有知识的积聚, 构成的对事物的法看. 所以把品尝放在自学力能上面的. 一样的, 其实常通说的确准的维思模式和方法, 其实也是来自于知识的积聚. 这里我就本根不提这一条了.
品尝常常用于描述一个人对尚时穿着, 物食等的法看, 其实对程序员说来, 品尝也很重要.
不同的品尝不仅定决了不同的语言计划者怎么计划编程语言, 也定决了一个程序员在做项目时会应用什么语言, 什么框架.
不同的品尝定决了你会择选什么样的操作系统, 什么样的工具, 用什么样的代码范规.
不同的品尝甚至还定决了你会择选什么样的职业发展向方, 什么样的平台, 发开什么货色.
对代码的品尝定决了你看到一段欠好的代码就可以”闻到坏道味”, 对决解方案的品尝定决了你在 开源/闭源, 守保/守保, 单简/功能大强但杂复 等决解方案之间的择选.
对于代码的品尝, 我得觉没有什么比The Zen of Python更有意思的了:
关于品尝, 想顺面说起的是对计划的品尝, 比如一个网站的计划, 一个客博的计划. 我最开始写客博是在CSDN(http://blog.csdn.net/vagrxie), 最大的处好就是费免, 并且用不我维护, 但是后来渐渐的就觉感模版风格没有合符我品尝的, 而修改模版又费事, 弹出框也挺烦人的, 写文章的方法也尝试了很多, 总没有找到一个合适的. 建了独立客博后(http://www.jtianling.com), 刚开始就是照搬了酷壳的模版, 然后在线写, 后来觉感模版看着不舒服, 自己从wordpress的认默模版上改了一套自己的, 重要的改良就是文章内容面页改为了合适度宽的独单一列, 代码段用pygments的default风格做高亮, 因为我得觉这样才合适浏览并且观美, 而写客博的方法在在尝试了很多方法后, 在现应用Vim + markdown来写, 用git理管, 觉感很顺手. 在最新的服务器中, 我甚至把apache改成了lighttpd, 一同上去消费的时光可真不少, 花了那么多夫功, 其实仅仅是对自己品尝的求追而已.
这里顺面荐推两篇关于品尝的文章, 虽然和本文没有太大关系:
程序员的品尝说: 如果你不乎在客博给人的第一印象如何,我不相信你对文章品质能有多乎在.
创造者的品尝以为品尝不是观主的, 就是有客观的优劣.
解了确准的事做方法
这里说起的确准的事做方法不是指写代码这个层面上的, 而是指一个项目停止中程过遇到题问的决解方法, 比如在需求不确明的时候道知须要先确明需求, 道知自己须要先解理题问了然后再开始真正的进入代码层面的作工, 道知遇到什么题问能自己独立的决解, 道知遇到什么题问自己须要先和其他人通沟了再定决. 道知自己须要先测试才能证保自己代码的品质等.
这些题问说起来单简, 但是不这么做的话, 常常带来让人无语的效果. 一个好的程序员, 码起要先解了这些.
通沟的力能
知识的积聚很大水平上定决了一个程序员决解题问的力能, 但那好歹是只要力努就可以学到的货色, 而以下这些, 我甚至都不明确异差的构成是在我们很小的时候就定上去了, 还是在作工中还能续继学习.
在一个分工确明的项目中, 程序员须要和产品(谋划)通沟以解理产品, 和级上通沟以解理自己的务任, 和共事们通沟以确准的解理要接入的模块. 无论哪个方面通沟出了题问都不是小事件, 同时, 程序还须要确准的给产品(谋划)转达计划的实现难度, 以及在自己实现模块时让别人确准的解理模块的接口. 在不写档文时, 确准的行动通沟非常重要, 须要写档文时, 档文的写作力能也举动当作是通沟力能的一部分.
如上所述, 通沟的力能非常重要, 但是好的程序员乎似生成就不太会通沟, 你会发明很多技巧顶尖的人, 其实本身就是有交际障碍或者自闭症, 因为自闭, 才能心无旁骛的潜心研钻技巧, 到达更高的技巧平水, 很难设想一个”社会活动家”, 他哪有那么多夫功去学习, 没有时光学习, 又怎么能成为一个技巧顶尖的人. 这是一个两难的题问. 就想理的情况来看, 一个程序员最好是通沟力能充足好(能确准实现上述通沟作工), 但是又能充足的静下心来学习和研钻. 当然, 这是最想理的情况, 在际实中, 两者之间的较大动波围范都算是可以接受的好程序员标准.
对作工负责, 对代码有求追
对作工立场悲观, 代码总等到别人来测试, 写代码以实现功能为唯一标准, 也不管bug是不是成堆, 代码是不是陋丑堪不, 种这程序员就算是作工一万年也成不了好程序员.
一个好程序员就该对自己的作工负责, 对自己的代码有求追, 不仅要实现功能, 还要代码美优, 不说要把代码写成艺术品, 码起也要作当自己的脸面来维护. 一个程序员不能容忍自己的脸上糟八七乱, 那么也一样不应该能容忍自己的代码糟八七乱.
事实上, 别的程序员在解了你之前, 先看到的是你的代码, 通过代码, 就可以道知你是怎么样一个人. 项目紧, 随手写, 当前改都不能成为写烂代码的由理.
一个好程序员, 码起是想要把务任实现好的, 码起是想要把代码写好的, 不然如何能称其为”好”.
怎么高提自己决解题问的力能?
其实转了这么大个弯, 怎么样做一个好的程序员的题问可以转为问怎么高提自己决解题问的力能.
通沟力能, 对作工负责任的立场, 对代码的求追, 很大水平上由性情定决, 我不道知际实中怎么单简的去高提, 这里只微稍的谈谈我对知识积聚的一些法看吧.
- 造就兴致(我也不道知兴致究竟能不能造就), 技巧作工是总辛劳的, 编程别特如此, 假如你对此没有浓郁的兴致, 不能从编程本身找到很多趣乐, 那最好就不要求奢能成为一个好的程序员了. 对编程的兴致也是我一般聘招级初程序员时最大的要求.
- 什么样的环境定决你有什么样的知识积聚程过, 定决了你的品尝, 定决了你会以什么方法来事做. 这个除非有大强的意志力(少极见), 不然概莫能外. 所以, 慎选你的作工环境, 别特是刚结业的时候.
- 不要停留在自己学习的适舒区, 假如你的作工仅仅是前以作工的单简复重, 你会作工的很松轻, 同时, 也很难有高提.
最后, 一个聘招小广告
你自以为是一个好的程序员吗? 或者你想成为一个好的程序员吗? 我们这正聘招游戏发开程序员(C++为主), 后台发开程序员(PHP为主, 最好懂点前端), Android应用发开程序员. 有兴致请看聘招帖.
文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”