美文网首页Programming HipsteriOS 大神之路
程序员需要在复杂的生产环境下,不断挑战困难,才能成长

程序员需要在复杂的生产环境下,不断挑战困难,才能成长

作者: 小马哥归来 | 来源:发表于2015-11-13 17:49 被阅读642次

    世界很大我们要多看看

    快40了,还在一线编程,也享受这个编程。自己走过很多弯路,有时候也觉得可惜。可能也是必须要付出的代价,或者是客观限制。1997年,那时候上网是个奢侈品,信息很不充分,抓到啥就学啥。大学期间,大把的时候都放在win32平台上了,被搞得七窍生烟,算是被微软给糟蹋了。人不是学习机器,再强的人也不可能精通所以平台、所有编程语言、所有框架。

    但每个平台和框架有它天然的限制,世界很大,我们要多看看。同时,还要边看边想。如在计算机入门的时候,最好先理解一下一个概念背后的what, why,如:什么是网络编程,为什么要搞socket?图形化系统为什么是消息推动,为什么是异步的?OOP到底有什么用处?为什么总是虚拟的、间接的、cache的?虽然这些东西,很多时候很难一时半会被参透,但如果不去品、不去想。可以很肯定的说,是不会有创造力,也不能保证有更强的学习能力。

    不要有鹤立鸡群的优越感

    另外一方面,也不要因为多学了几个语言和框架,就有莫有其妙的优越感。中国传统教育非常不好的一点是,通过激发小朋友的好胜心与虚荣心,来让他们去学习。这样下来,有一点小天赋的人在一小点成绩下就会比较膨胀,从而失去了对下一个更深层目标的探索。通俗一点就是小聪明,总有鹤立鸡群的优越感。在编程开发领域里,新技术、新框架出来一个学一个,很多是学了个皮毛,更多是把知识记住,没有转化为思维能力,没有深层的想,为什么需要这些东东。所以,也是很难真正应用到工程中、产品中,创造价值。

    必须要在生产环境中锻炼

    软件编程和智力型的游戏(象棋、围棋)一样,都是入门简单,精通难。同样的,用一个技术作一个demo很容易,但要工程化,成为一个真正有价值的产品很难。反过来,一种技术和框架都是大公司或者创业团队从生产中得到了沉痛的教训,从失败中找到了向前的出路,然后在将自己的技术突破共享出来的时候引发了一系列的变革。

    2004年Google发布了MapReduce论文,由此诞生了Hadoop并开始风靡世界;2007年Amazon发布了Dynamo存储系统,让我们知晓了如何通过线性扩展的方式让数据库和应用程序一起工作,并导致了Cassandra、Riak等数据库的产生;2010年Twitter教会了我们如何通过客户端模板让服务器端变成一些简单的API,并引发了Web应用的又一次大转变。

    从个人的经历上也有体会。在我第一份工作时,面对一个上百万行C++的产品时,我才真正去思考软件架构。如果不去改变,我后面的工作就会无比痛苦和乏味。当我出来创业,做百草软件,发现前端UI开发无比复杂,产品早已慢性中毒,如果不去改变,那我们的理想永远不可能达成,创业也只是个笑话。

    所以,一个程序员要有长进,要有突破。必需要在产品压力下,如有限的资源,可控的风险;面对异常复杂度、困难度下去挑战,去突破。不是风轻云淡、无比惬意,也不是牛仔一般的乱打乱砍。你最终做的事,是要有价值的,要对自己或别人负责。做框架要对程序员负责,做产品要对客户负责。

    跟着精英,虚心学习,学会思考

    人类到了这个时代,都是复杂问题,很难有天才可以无师自通。16世纪可能有自学成长的数学家,但了20世纪已经不可能了,一个数家家一定是另一个数学家带出来的。同样的,如果你想要在软件编程里领域里成长,只有一个条路:跟着精英,虚心学习,学会思考。最后一定在要复杂生产环境下磨练。

    以成败论英雄

    在软件开发领域里,以产品成败论英雄最好。懂再多,是饺子在水壶里,倒不出来都是白搭。大凡牛人,如Linus,有linux,git为证。如Ray Ozzie以Notes为证。张小龙,以foxmail, 微信为证。所以,虚心一点,直到我们拿出象样的产品。

    相关文章

      网友评论

      本文标题:程序员需要在复杂的生产环境下,不断挑战困难,才能成长

      本文链接:https://www.haomeiwen.com/subject/pjfkhttx.html