程序人生 ’ 目录下的文章存档

程序员生存定律-打造属于自己的稀缺性

假设说你想在江湖里谋求一定的地位,那么你可以练习独孤九剑成为超一流高手,也可以练习医术,成为绝世神医。这两者在江湖里都是有地位的,也都是稀缺的,一者是因为杀伤力,二者是因为人都有山高水长。

程序员也一样,增值也好,改善表达力也好,最终都要在某种环境下达成一定的稀缺性,这样一个人才有价值。稀缺性同时受两个维度上的力量影响:一个是自身的努力,比如前文所提到的增值和表达力;一个是大环境的变化以及对这种变化的适应。在这一章里主要关注的是后者。

稀缺性可带给你什么

既然稀缺性对个人有如此大的影响,那稀缺性到底可以带给一个人什么样的影响,我们来看一个简单的例子:

在日本曾经有这样一个故事。一个人在某电信公司负责一个大型系统的维护,收入虽然不菲,但时间一长,这个人就对薪资发展不太满意,因此最终选择了离开。结果他一离开,这大型系统立时跑的磕磕绊绊,无奈之下,这家电信公司只得以高职厚薪把这个人请了回来。可以想见为了达到这一目的,这家电信公司,无论在收入还是职位上必然都开出了让这个人无法拒绝的条件。
阅读全文

程序员生存定律-选公司前要干的事:分类

目录

  1. 给公司分类
    1. 分类的方法
    2. 具体类别的点评外包行业
    3. 具体类别的点评互联网行业
    4. 具体类别的点评外企
    5. 具体类别的点评受非市场因素影响大的公司

在武侠的世界里,帮派本身借助了个人的力量而成其威名,但反过来个人却又因为帮派的力量而被烘托的更高。如果我们把公司类比为帮派,把程序员类比为一众江湖人士,那么帮派和成员间这种异化、同化的过程就几乎在每一个程序员的身上都可以看到。

牛顿说过一句广为流传的话:如果说我比别人看得更远些,那是因为我站在了巨人的肩上。选择在什么样的公司里工作,几乎等价于选择站在什么人的肩膀上。再形象点讲就是选错了公司等价于输在起跑线上。

公司提供的岗位决定了你所接触的技术、人物,进一步决定了你的眼界、能力和人脉,也一定程度上决定了你履历的价值。这些都是对一个人至关重要的东西。

假设说一个人在大学里非常的优秀,以较高的薪资加入了一家做生僻技术的公司,5年后,这家公司倒闭了,这时候这个人可能会陷入困境,甚至变的不如很多大学里成绩比他差很多的人。这类事情往往并不是因为个人不努力,往往是因为选择不慎而把自己给憋到死角里了。

每个人要想争得选择权往往并不容易,大学四年的努力挣来的选择权却可能在一时不慎下毁于一旦。这种选择往往很难很精确,但有几个基本项目还是可以考察的。这些项目将在下面各节里逐步展开。

 

给公司分类

公司是一个含混的词,要想弄清楚公司对人生的影响,那么先要给公司分类。一说到分类大多数人可能首先会想到好公司或者坏公司,但其实这是分类的结果,在好和坏背后往往都有着一打的因素来支撑一个公司是好还是坏。不了解这些背后的因素,单纯根据一个笼统的好或坏实际上是很难判定一个公司是不是适合自己的。

 

 分类的方法

一个人要想做对选择,一要有选择权,二则要了解待选项。在这里待选项就是公司的类别。可以有非常多的视角对公司进行分类,这里主要列举和职业发展紧密相关的几个。

 

  • 分工所处位置的视角

 

帮派间是有食物链的,比如东方不败的魔教就凌驾在黄河帮之上。还不用东方不败或任我行这种大头目出来,只是盈盈就可以让这些帮派鞍前马后了。

类似的关系也存在于公司与公司之间,但这时这种关系则是有产业分工时公司所处的位置所决定的。即使我们不用心去做非常详细的调查,也可以看到iPhone生产背后的三层结构:苹果 + 富士康 + 元器件供应商。

这种链条的一个根本特征是上游的企业人少但分享的利润更高,当然其承担的创新风险也更大。

在这里无意对这种分工模式是否合理进行更多的探讨,想强调的则是,这是影响个人工作和发展的一个很重要的维度,不考察是对自己不负责任的。

商业社会中的公司所处的位置可以做简单理解:筹码多的,控制权、发言权大的在上端。比如:付钱的在上端,靠别人给钱的在下端。垄断的或接近于垄断的在上端,被垄断的在下端。比如说:公司A把业务分包了给公司B,那么公司A在食物链的上端,公司B则在下端。比如说:公司G直接面向客户,占有了市场份额60%,其他公司分享其他的40%,那么G在上端,其他公司在下端。在这个视角下可以把公司分为发包的公司,接包的公司。从分工的角度看,一个公司所处的位置越靠后,其利润空间可能也就越微薄。

与这类分工相关的场景还有很多,比如:母公司与子公司、发包的和接包的、做操作系统的和必配指定操作系统的硬件厂商、做电商平台的和各个产品制造商等等。

从选择公司的角度,应该尽可能考虑上游的公司,因为这种分工上的位置对成长空间和收入会有比较大的影响。

 

  • 行业的视角

 

在这个视角下,公司往往被分为电信、金融、互联网、ERP、游戏、嵌入式等。很难讲那个行业相对另一个行业具有绝对优势,但有两点需要额外注意:

一是软件是不是公司的主营业务对发展空间往往会形成一定限制。制造业的工厂里也做软件,但不太可能选几个做软件的去做厂长,金融公司里程序员也很难发展成为总裁。

另一点是有的子行业处在成熟期,发展相对平缓,而有的子行业则处在告诉发展期,发展很迅速。后者机会更多,年轻人尤其是容易在全新的领域出头。这是因为在全新的领域中没有既定的利益格局,所有人都在同一起跑线上。

从选择公司的角度看,无疑的要尽可能选选主营是软件并在高速发展子行业的公司。而之所以选择行业非常重要,根本原因是一旦选择了那个行业,那很可能一辈子就会干这个了。做金融的很难去做互联网,做互联网的也很难去做嵌入式。

 

  • 时间轴的视角

 

从生命周期来看,公司可以分为发展期的公司,成熟期的公司和衰落期的公司。

从选择公司的角度看,极力要避免的是衰落期的公司。识别衰落期的公司简单的办法是财务数据和市场地位。已经赤字的或市场地位已经排位靠后的都是相对比较危险的公司。

而选择发展期的公司还是选择成熟期的公司上,要依赖于个人选择。通常来讲选择成熟度较高,市场地位较高的大公司会比较好,便于做技术积累。

 

  • 核心竞争力的视角

 

有的公司是核心竞争力偏向于销售渠道,有的则是技术,有的则是两者并重。

比如对于信息管理系统销售渠道就比较重要。从这个视角看,有核心竞争力的公司总是比没有的更好。而在有核心竞争力的公司里,技术导向的公司无疑更适合程序员。前面曾经提到过,非技术导向的公司里,技术路径通常会短。比如说:只做信息管理系统的公司技术路径通常不会长。

 

  • 地域的视角

 

从这个视角可以把公司分为一线城市的公司,二线城市的公司。地域主要影响可流动范围。

在2012年曾经发生了一起很有点影响的事情:摩托罗拉移动因为经营的原因,关闭南京摩托罗拉移动,裁掉了整个团队,这个时候南摩员工联合起来,一起拒绝在离职协议上签字。员工和公司前后经历多轮谈判,员工方坚持不让步,其中的一个关键理由就是:500多人一起在南京找工作非常困难。与此相对应的则是,同样是裁员,但北京方面所有员工皆较快签字走人。

这一事请本身的是非很难去评论,但南京和北京员工的不同反应却可以一定程度上折射出城市(或者说地域)所带来的影响。

南京已经是非常发达的城市,但500人的队伍已经会担心很难被吸收掉,在北京恐怕这500人就掀不起什么波澜。这很好理解,一升水倒在矿泉水瓶子里,会溢出来,但如果倒在小河里,就几乎等价于不存在。但这种城市对人员的容量对可流动性、对发展空间却会形成一种刚性的制约。

当一个人选择了某个公司的城市,也就选择了其背后隐含的一切,对于大多数人而言与城市的关联度将会随着时间的流逝而越来越高(这体现在学校、房子等方面),所以适当对此进行考察是有必要的。

总的来看越是期望快速发展,越是希望开创一番事业,对自己越是有信心,越适合到一线城市发展;而相应的越是希望安稳,越是侧重生活和工作的平衡,二线城市就更适合一点。

 

  • 公司文化的视角

 

如果去翻阅管理相关的书籍比如《基业长青》,《赢》等,你就会发现公司的文化被放在一个非常高的位置上。极度优秀并可存续的组织无疑是需要一种共同的价值取向来镇压气运的,但这和现实其实有点远。现实中的很多公司更可能是规则和个人双重驱动,而没有什么明显的文化特征。所以这种分类视角被放在了最后。

很难讲那种企业文化一定会成功,但如果从负面来解读文化的话,有一种文化却几乎一定会使公司挂掉。这种文化可以叫做蠹虫文化。典型特征是:一盘散沙,所有人都一起糊弄工作,工作上的事情能推就推。这类公司几乎一定会比较快的走向毁灭,除非是有某些垄断性的因素可以确保其生存。

 

具体类别的点评:外包行业

 

很难笼统的讲外包行业好或不好,有前途没有前途,因为外包也有很多层次。

假设说一家公司把一款手机从设计到制造的所有环节都外包给一家公司,只是最后自己进行贴牌,那么对于承接这种外包业务的公司而言,单纯从技术角度看与自己进行产品开发并无差别。

假设说一家银行把需求之外所有的业务都外包给一家公司,那么对于承接这种业务的外包公司而言,就更像是银行的IT部门。

上面这类外包与特定企业的核心业务相关联层次是比较高的。与此相对应,外包业务的层次可以逐级降低,比如:同样是银行业务,在外包过程中也可以把基础设计都完成之后,把量较大,但没有技术难度的编码工作外包给其他公司。这类工作往往是由成本控制而触发,所以在分工链条上所处的位置越低,工作越容易辛苦,且收入较低。

这点上可以看一点数据,当前国内最大的外包公司是文思海辉,根据公开数据,文思海辉在2012年总计有员工23270名,总收入是3.59亿美元,大致是22.7亿人民币,平均每人年创造不到10万元的收入。与之相对应,腾讯2012年总计有员工24160名,总收入438.9亿人民币,平均每人年大约创造181.6万元。这种数据大致可以说明从分工链条的角度看,国内的外包公司仍然有很大的提升空间。

那究竟加入外包公司是怎么样的一种选择?

这不能说是很差的选择,但如果让我来排个顺序则首先是知名的独立软件开发商(ISV),其次是前景比较好的独立软件供应商,接下来才是做高端外包业务的公司,做低端外包业务的公司大多时候不是什么好的选择,因为对个人成长不利。

 

具体类别的点评:互联网行业

如果说IT行业是朝阳行业,那互联网绝对是朝阳中的朝阳。在这个领域中我们看到了门户网站,看到了搜索引擎,看到了社交网络,看到了各种云平台和大数据,但故事应该远未终结。未来究竟出现什么样的产品很难预测,但未来的产品会和互联网紧密相关这点错的可能性很低。

所以在行业选择上加入一家以互联网业务为核心的公司是不错的选择,从发展的角度看很同等条件下要比加入通信、金融这样的行业更有优势一点。

假如一个人想创业,那这就更是一种必然选择,互联网是智力密集型的工作,需要一定资本,但对资本的要求并不高,几个人拉到风险投资后,假设网站开始创业怎么也比研发路由器开始创业更适应于一般人一点。

这里面在分类上有一个微妙的地方需要注意,搜索引擎、大数据、社交网络可以认为是互联网,但挪到互联网上的ERP也还是ERP,不能算是互联网行业,这个差别很大,考察公司的时候要注意。

具体类别的点评:外企

按国别来区分企业,误杀的几率很大。但毕竟同一国家的企业还是有些共通的特征,因此这里择取两个视角做一个简单的分析。一个视角是透明天花板的高低;一个则是规范程度。

什么叫透明天花板?职业路径被封死在某个高度以下,但这种封锁在可见制度层面又不存在,这就是透明天花板,往往是做到一定高度的人对此感受的更为清晰。平心而论,透明天花板在那里都有,本身倒不一定就具有贬义。但不同企业中其高度确实不同。如果要排个次序,那就是是国内企业高于欧美企业,欧美企业高于日韩企业。

理论上讲一个人在国内企业里的发展是不受高度限制的,可以想见联想,阿里巴巴未来的接班人还是个中国人,空降个黑人或白人CEO的可能性不大。而欧美企业相对开放,至少在大中华区,高层人士里还主要是华人,但想再往上走则很艰难。这可以从李开复老师的自传里读出些端倪,李老师无疑非常优秀,但从自传里绝对看不到成为微软或者Google CEO的可能性。高晓松老师在优酷上做了个很有意思的节目叫《晓说》,里面更是很直接的谈到这一点:在好莱坞就是犹太人升迁快,华人虽然收入高,但就是有天花板,要很辛苦工作来维持自己的收入。

在日韩企业这点上就收的比较紧一点,各个子公司的负责人基本上会选本国人。

所以假如说你认为自己非常优秀,并且期望无限的发展空间,那么优选本土公司(也许注册地不是中国)是对的,虽然它们的CEO没准也是美国华裔,虽然它们可能会有一些负面的报道,虽然不管怎样成为CEO都是一种可能性非常低期望,但至少存在着这种可能性。

顺道说一句,从这个角度上看,我们真有理由希望这个国家和对应的企业强大,只有如此,大多数和本土的优秀人才会有更加光明的未来。

从规范程度来讲,越是本土企业,反而可能会越差一点,这也符合知己知彼百战不殆原则,虽然有点黑色幽默。而跨国企业往往是些大公司,在规范性这点上都会非常的注意。我个人倒是感觉,只要没滑落到无赖公司的地步,稍微有点不规范也是可以接受的,犯不上刀兵相见。所以说单纯的希望成为优秀的工程师,那么优秀的外企仍然是个不错的选择。

具体类别的点评:受非市场因素影响大的公司

非市场因素影响大的公司是个诡异的类别,完全是我杜撰出来的,这个类别的公司特征是可以因为特别的机会(某个大单或某项特别资助)在短时间蓬勃发展,但接下来又很可能会在短时间轰然倒下。在IT业中最典型的例子托普,有点年纪的IT人应该还记得这家公司。

我个人倾向于认为应该规避这类公司,因为这类公司通常并不会把精力放在产品的开发上,而会放在非市场因素的经营上,这对个人成长并不是很有利,尤其是走技术方向的人。一旦公司出现危机,那么个人反倒可能会因此陷入困境。

上面的文字有点含糊,为了把事情说的更清楚一点,我们来看一个历史上的故事。

中国人里面不知道胡雪岩的恐怕不多。胡雪岩出身不高,几近于白手起家,先后得王有龄、左宗棠之助迅速成为显赫一时的红顶商人。百度百科上对这段往事的记载是:

他从扫地、倒尿壶等杂役干起,三年师满后,就因勤劳、踏实成了钱庄正式的伙计。正是在这一时期,胡雪岩靠患难知交王有龄的帮助,一跃而成为杭州一富。

王有龄,字英九,号雪轩,福建侯官人。在道光年间,王有龄就己捐了浙江盐运使,但无钱进京。后胡雪岩慧眼识珠,认定其前途不凡,便资助了王五百两银子,叫王有龄速速进京混个官职。后王有龄在天津遇到故交侍郎何桂清,经其推荐到浙江巡抚门下,当了粮台总办。王有龄发迹后并未忘记当年胡雪岩知遇之恩,于是资助胡雪岩自开钱庄,号为阜康。之后,随着王有龄的不断高升,胡雪岩的生意也越做越大,除钱庄外,还开起了许多的店铺。

庚申之变成为胡雪岩大发展的起点。在庚申之变中,胡雪岩处变不惊,暗中与军界搭上了钩,大量的募兵经费存于胡的钱庄中,后又被王有龄委以办粮械、综理槽运等重任,几乎掌握了浙江一半以上的战时财经,为今后的发展奠定了良好的基础。

 

胡雪岩之所以可以迅速倔起,除了得益于王有龄之外,另一个人也起到了重要的作用,这个人就是左宗棠。1862年,王有龄因丧失城池而自缢身亡。经曾国藩保荐,左宗棠继任浙江巡抚一职。左宗棠所部在安徽时晌项已欠近五个月,饿死及战死者众多。此番进兵浙江,粮饱短缺等问题依然困扰着左宗棠,令他苦恼无比。急于寻找到新靠山的胡雪岩又紧紧地抓住了这次机会:他雪中送炭,在战争环境下,出色地完成了在三天之内筹齐十万石粮食的几乎不可能完成的任务,在左宗棠面前一展自己的才能,得到了左的赏识并被委以重任。在深得左宗棠信任后,胡雪岩常以亦官亦商的身份往来于宁波、上海等洋人聚集的通商口岸间。他在经办粮台转运、接济军需物资之余,还紧紧抓住与外国人交往的机会,勾结外国军官,为左宗棠训练了约千余人、全部用洋枪洋炮装备的常捷军。这支军队曾经与清军联合进攻过宁波、奉代、绍兴等地。 胡雪岩是一位商人,商人自然把利益放在第一位。在左宗棠任职期间,胡雪岩管理赈抚局事务。他设立粥厂、善堂、义垫,修复名寺古刹,收硷了数十万具暴骸;恢复了因战乱而一度终止的牛车,方便了百姓;向官绅大户劝捐,以解决战后财政危机等事务。胡雪岩因此名声大振,信誉度也大大提高。这样,财源滚滚来也就不在话下了。自清军攻取浙江后,大小将官将所掠之物不论大小,全数存在胡雪岩的钱庄中。胡以此为资本,从事贸易活动,在各市镇设立商号,利润颇丰,短短几年,家产己超过千万。

 

没仔细考证过,也许上面的描述与历史有所偏差,但其崛起与左宗棠有紧密关联这一点,大致不错。胡雪岩成功的快,败落的也很快。败落的原因很多其中关键的一条就是在李鸿章与左宗棠的内斗。从发迹到败落前后大概20年。但在现代这种变化节奏因为某些原因变快了,往往不要20年,托普走完这条路用了10年左右,未来就可能会更短。从这个角度看,这类公司是不适合纯粹的工程师的。

文章来自:http://blog.csdn.net/leezy_2000/article/details/38377735

如何用一个糟糕的执行流程毁掉你的创业公司

wrong-way.jpg

我是技术创始人经营自己公司的坚持支持者,但是技术创始人一直以来的一种做法给自身企业造成了极大的伤害,这种做法就是把预算编制过程搞砸。是的,编预算。很荒谬吧。怎么会这样?为什么说对于工程师来说这个问题特别大?

首先我会以自己的反面事例现身说法。我们的销售增长迅速无比,以至于我们面临的最大问题是无法应付那么多想要注册 Loudcloud 的客户。为了扩大能力和先于竞争对手占领市场,我和我的团队努力规划好一切必要的活动。接下来,我布置了子目标和活动给每一位职能负责人。我跟领导团队一起分别为每个目标设定了领先和滞后指标,设定确保了目标的可衡量的。然后我告诉团队找出实现这些目标需要做些什么,然后返回所需的人员和预算。最后,我按照业界基准(大多有削减)对这些需求进行了调整,通过这样做出了一个自认为行得通的计划。
阅读全文

五种类型的程序员

我在代码之路上曾经遇到过很多奇怪的对手,也遇到过奇怪的队友。我至少接触了五种不同的“代码斗士”。其中一些有才的战友有助于开发工作的进行,而另一些看起来阻碍了我的每一个计划。

然而,他们全都在软件开发的“万神殿”中拥有一席之地。如果不能将这些不同风格的程序员协调好的话,你会发现你的项目会花费很多时间、不够稳定或者代码难以读懂等问题。

补漏灵型

该死,代码虽然不够完美,但是能工作就行了!

这种人是你公司的基础。当哪里出现差错的时候他会迅速的修补,在某种程度上,保证不会再出错。当然,他不会操心它如何工作,易用性如何等等琐碎的问题,但是他会去修补问题,而不是说一大推废话,做些浪费时间的事情。利用这种员工最好的方法就是:交给他们一个问题去解决,然后走开。

b1

 

补好了!
阅读全文

东半球最先进的 debug 技巧

d1

 

不论是什么行业里,能让人最兴奋的事情通常都是解决新奇的、高难度问题带来的刺激。在我的工作中,经常会遇到很多bug,乍一看,它们都是不可能的。不是不可能解决,而是完全不可能出现。就好象最前沿的科技揭示了一个新的奇怪的逻辑现象,以至于人的大脑完全无法理解。
阅读全文

Github上最受关注的前端大牛,快来膜拜吧!

本文列出了Github上最受关注的10位前端大牛。看看他们负责的项目和提交的代码,你是不是能从中学到些什么?

1. Paul Irish

a1

 

阅读全文

程序员遇到bug后的七大反应

每一个被bug缠身的程序员,都想拥有孙悟空的本领。要么七十二变,要么一转眼灰飞烟灭

b1

 

1、谁动了我的代码

b1

 

这确实是一种曾相识的感觉,我经过无数次的解释都没有人相信,但我还是要说一句:它原本不是这个样子的

2、什么?还用IE6?

b2

 

在完美兼容了IE7+、360、火狐、谷歌等之后,突然被这一晴天霹雳给击中。
阅读全文

程序员迷茫的未来

d

我是一名充满热情的程序员,一名开源软件的倡导者,我喜欢用科技提高人们的生活。我喜欢创造东西,喜欢将它们分享给世界。我有大量的开源开发作品,请看我的GitHub页面。

本文的作者:Ed Finkler

本文的作者:Ed Finkler

我是一名充满热情的程序员,一名开源软件的倡导者,

我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕。

我越来越担心我作为一个程序员的未来。

当年纪越来越大后,我开始变得不能加班。我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨)。我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动。
阅读全文

几种华丽无比的开发方式

不要被我的标题骗了。我可不是来宣扬什么模型驱动开发,或者什么测试驱动开发的,那些都弱爆了。今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。

进度驱动开发(SDD,Schedule Driven Development)

这是在国内最为流行的开发方式,大家心照不宣,口口相交,代代相传,我只是把它写下来而已。它最华丽的地方在于,可以百分之百,甚至百分之二百地压榨程序员的劳动力。

需要实现哪些需求?用什么技术?用什么平台?项目采用什么流程管理?这些都不重要。重要的是——什么时候交付?

假使说,老大们通知,下个月的这个时候要看到产品发布,那么:

  • 三周以后就要拿出完备的产品准备上线;
  • 两周以后就请发布beta测试版本,ST、IT之类的东西就得在那之前完成;
  • 本周就必须完成编码和UT,那么周一设计,周二、周三开发,周四、周五测试和修正问题。

看,项目计划多么完美。项目时间本来就该是根据deadline倒排的。

项目做什么呢?先做那些相对重要的需求,可是如果时间紧的话就只好砍需求了吧……不!你怎么能那么容易就放弃呢?你看,我的完美的计划里面没有安排周六和周日嘛,大家可以来加加班嘛,年轻的时候不得奋斗一把嘛,不用砍需求,平时的时间再压一压不就可以如期上线了?
阅读全文

我眼中的各种编程语言

所有的编程语言我都讨厌。曾经我想自创一门语言,但我没搞明白到底需要一门什么语言,所以也从未开始过。 许多时候,你没法选择使用哪种语言。不管我在用哪种语言,我都尝试去接受它的优点和缺点。

Java

喜欢Java的人肯定喜欢打字。我指的就是敲打键盘上的键。你得不断地重复又重复。

设计Java系统的人是个疯子,他解决问题的方式就是,设计模式。如果你把设计模式看作是这个语言中解决问题的一种方式,那么你会发现Java里有许多这样的设计模式。

另一方面,Sun的这些家伙的确是费了点心思在Java规范上的,这使得它能运行在嵌入式系统上,所以这块我们还是坚持在使用它。我很难相信Python或者C在我的手机桌面系统上运行。

还有,那些个目录又是怎么回事?我必须得使用Eclipse,因为只有它知道怎么跳过那1000个字长的路径名。如果我在应用的同一个目录下放10个类,会不会 伤害到某些人?

C

C是精确的。当我用C写程序的时候,如果搞定了,我知道它是靠谱的。它就像是用一把小刷子在画一幅巨作。在这么详细的层面上写代码需要一种不同的心态。当你坐下来写C的时候,在动手之前你就得规划好到底怎么写。否则后面肯定得费很多工夫去改。

如果你的经验足够丰富,内存泄露这种事就不太会找上门。它的第二特性——malloc/free总是形影不离。你不能忘了任何一个。否则就像是忘了冲水或者关灯。你就这么做就是了。

有句话说得好,如果你打算给房子上漆,一把好刷子可远远不够。我猜你肯定想要个大滚轴。如果让我写一整个应用或者系统,能不用C的话我肯定不用。

C程序想要进行改动可得费老劲了。当我写算法的时候,我知道第一遍肯定是不会对的,所以我通常都先用Python写,搞定了之后再翻译成C的。

C++

它就是个有string类的C。同时还有数组,列表,队列等东西,你可以用它们来实现你想要的。一言以蔽之:别想着自创新模板。这太困难了。除了这个,C++还改良了一下C,用C++你可以写出非常不错的软件。它这个额外的特性使得它可以用于一些大型系统上,只要大家都还遵循同样的约束的话,难度还不算太大。

JavaScript

这是个没人喜欢的语言。不过它喜欢你。当你刚开始学习它的时候,你可能会写出一些非常糟糕的代码,把对象用作字典,别的对象作KEY,不过这样也是OK的,因为这些代码运行起来也没有什么问题,只要浏览器还支持JavaScript就好。

JavaScript没有连接器,因此所有的代码都共享一个命名空间,不过还好大家都知道这一点,所以还能一起和谐相处。

CoffeeScirpt

CoffeeScirpt是一个解释器,它将那些长得像Ruby的奇怪的语言逐行地翻译成JavaScript。它是一个拥有所有外来语法的JavaScript——括号,方括号,额外关键字移除。只有代码的基本含义还保留着。

CoffeeScirpt挺不错的。如果你要写很多代码的时候,它能让你提高至少25%的效率。你可以一次在屏幕上看到更多行的代码。

当你用CoffeeScript写代码的时候,你得时刻记住这是要生成JavaScript的。问题就在这。你得先去学习JavaScript。项目来的新人都得先学JavaScript,然后才能学CoffeeScript,最后才能去学习项目代码。

node.js

我也希望能爱上它。我觉得我给过它机会了。它的回调让我无法忍受。我知道会有这么一天,因为某个原因,其中一个回调并没有出现,然后我的应用就会堵在那一直等待。真是要了命了。

还有一点就是,它几乎没有内建任何东西。如果你要做某件事情,总是会有一大堆模块来实现这个功能的。该选哪个呢?如果出现问题了,哪个模块会有人来支持?

Scala

Scala是一门函数式,强类型的语言,它会编译成JVM代码。

我是在工作中学的Scala。有一家初创公司的生产系统用的是它,我是在后期才加入他们的。

这让我看到了Scala丑陋的一面:类型推导。类型推荐被它用到了极致。每个对象都有类型,不过想确定它是什么类型的,你得检查不同分层上的好几个文件才行。Scala也继承了Java的文件夹的坏毛病,因此你要查找某个类型的话得进入好几层目录才能找到对应的那个文件。

简而言之,Scala是极好的——对于那些最初的开发人员而言。新加入的成员为了熟悉现有的代码,得有一个很长的学习曲线。

Erlang

Erlang也是我曾经想爱上的一位。我真的努力了。它是一门美丽的函数式语言,它可以写出很精致的小模块,它们以一种精确的方式进行通信,你的系统可以运行10年以上,因为它能处理未知问题,如果必要的话还会重启,然后继续运行。

不过它的结构太复杂了。开发似乎要停留在伯克利发明socket的那个年代。当前时代所需的东西几乎一样都没有。为什么开发一个简单的WEB服务需要费这么大的工夫?

Go

Go很容易学习,对于新人而言也是如此。它使用40年前的语言概念来构建一个健壮的异步系统,但它让你能像写同步代码一样编程。你可以不费吹灰之力写出1000个可以安全工作的线程。

在库支持方面它仍需要改进。当我想做某事的时候,该用哪个库——github上2011年的那个,还是2013年开始的那个半成品?一个是官方主页链接的,不过它的官方主页看起来并不是最新的。好吧,我觉得我还是自己写一个吧。。。

还有,为什么追加元素到数组里也这么费劲?

Python

在Python里,不管你想做什么都会有一个对应的库,如果你用的是Linux,它绝对是不二选择,因为它可以一键安装。

如果你想做些数字处理或者科学运算,选择Python吧,你值得拥有。

Python中的字符串即可能是文本的也可能是二进制的,因此你得上来就学习下文本编码的东东。

Python 3

Python 3和Python有许多共同的特性,不过它却是门不同的语言。由于它比较新,因此支持的并不是很好。我也想使用它,不过总会有那么一个库,它是只支持Python 2的。

出处:deepinmind

英文原文链接