《如何做一个出色的程序员-菜鸟程序员》由会员分享,可在线阅读,更多相关《如何做一个出色的程序员-菜鸟程序员(5页珍藏版)》请在金锄头文库上搜索。
1、如何做一个出色的程序员爱这行!从事任何行业都一样,只有真正的爱上了这份工作,才会投入热 情,才会 在顺境中自我警醒,在逆境中寻找突破。这个行业的竞争很 激烈,你停下来走,别人就立刻会跑步超过你,没有对这一行业的一 种热情,就很难在困境中保持一种执着的态度坚持到底。踏踏实实 “ 扎马步 ”今天无意中看了 “ 校长 ” 的“ 程序员 & 司机” ,其中谈到了关于程序 员速成的问题。其实速成班毕业的“ 系统杀手 ” 早已在遍布大江南北, 只是在互联网时代,互联网的应用型软件生命周期越来越短,业务驱 动主导的情况下,这种速成方式看起来反而提高了企业生产效率。但 这样的人才也就只能写几个Facebook
2、上的插件应用或者iGoogle 上的 Gadget,真的要出 Google,Amazon,Yahoo改变互联网 世界的企业,还是需要踏踏实实先学“ 扎马步 ” 的人。很多在学校的同学或者刚刚毕业的朋友都看什么热门学什么, Spring,AJAX ,Hibernate等等,又有多少人在看Spring之前 把 J2SE的 NIO ,XML ,Collection等先好好学习一下,在看 AJAX之前把 Http协议、 DTD 、XML Schema好好看一下,在 学习 Hibernate以前先把 J2EE 事务规范搞清楚。 Java最大的好 处就是开源,能够让人们站在更高的起点来作出更多的创新,但是
3、对 于学习者来说,不了解自己站在什么上面的时候,可能摔下来会很 痛。在用的时候多问一些为什么,在遇到问题的时候多找找原因,在 了解以后多提出一些优化的方案,这样才会进步的更快,走的更远。记得我前一阵子回家的时候和妈妈聊起最近的工作,虽然妈妈不 太明白,但是也知道我现在做的东西技术含量比较高,嘱咐我“ 千万不 要什么都教给自己的同事,徒弟带出就不要师傅了” (这当然是老一辈 的观念了)。我和她说:“ 不要担心,这种学的会的不教迟早也会,学 不会的教了也学不会” 。其实这里说的学的会的就是技术,而学不会的 就是经验和能力。这个行业的人在日积月累过程中并不会去比较掌握 的知识面有多广多深,毕竟这行业
4、更新很快,其实能力强的人在多年 的学习中就积累了很多的找问题,分析问题,总结问题,提出建议, 发掘创新的能力,这些才是这行业人在发展中最宝贵的财富,也是一 个人成长的标志。开始的过程中,踏踏实实地“ 扎马步 ” ,了解一些最 基本的知识,那么上层技术的发展对于他来说仅仅只是一个短暂的学习过程,甚至可以触类旁通。因此还是要奉劝每一个新入行的同学, 踏踏实实,静下心来做技术,就算工作安排得都是一些浮躁和重复的 工作,用高效的方式来结束那些重复劳动,多留一些时间给自己打基 础。逆境养兵、顺境攻城掠地普通人的工作经历通常都是起伏不定的,一个人的能力是否能够 得到体现,不仅仅靠自己的努力,有时候也需要“
5、 天时 ” 、“ 地利 ” 。马 云比较有名的一句话:“ 今天很残酷,明天更残酷,后天很美好,但是 大多数人死在明天晚上,看不到后天的太阳!” ,其实也在说明一 件事,就是很多时候需要一种坚持的精神才能得到宝贵的机会。今天是我进入阿里巴巴满3 年,这 3 年让我感触很深的是:1. 逆境不要气馁,厚积薄发。2. 顺境不要懈怠,一股作气,把握机会展现自己最大的能力。3. 在逆境和顺境的转换过程中,创造机会,不要坐等机会,要学会不 在其位,也谋其职。最后一点就拿我自己的亲身经历来说,我原来就职于一家通信公 司,因此对于互联网应用的开发和架构设计要比很多人弱,进入阿里 巴巴以后工作了半年(主要作业务开
6、发),正好阿里软件创立,当时 被分配到了阿里软件第一个产品负责客户模块,当时的应用是通过 MDA框架配置搭建的,开发人员很大程度上不需要自己做太多的编 码,但是这个平台并没有搭建过如此复杂的大型应用,因此存在着不 少问题,当然这些问题都是通过业务产品线的人反馈给平台部的人, 当时平台部门人员很少,但是却要修复和完善诺大一个平台,因此常 常搁置开发人员的反馈。当时在自己工作之余就琢磨和研究平台,同 时跟踪调试平台,最后直接给出解决方案,逐渐的就融入到了平台开 发中,最后被吸收到了平台部门,进入平台部门以后遇到了两位很好 的老大,根据我的特质给我安排了研究和学习的工作。接下去就是不 断地参与阿里软
7、件各个基础平台的构建,核心技术的研究和探索,找 到了兴趣和工作的最佳结合点。因此,当你困惑的时候首先不是去抱 怨,而是审视一下自己是否还有作的不够的,是否还有可以提升的空 间,多给自己制造一些机会,也许我们不用等到后天,也不会死在明 天夜里,明天早晨我们就看到了太阳。海纳百川、冰冻三尺很多朋友可能听老师或者前辈也说过类似的话,就是作为一个技 术人员要广也要钻。就好比现在很多人都要DB Scale out,同时也 要 Scale up。我从自己的角度来说一下广和钻的看法。广:1. 要有 容人之量。(很多时候程序员最大的毛病就是喜欢在技术上比较,未 尝不是好事,但是一个人的能力总归有限,多看看别人
8、的,多听听别 人的,也许能够让自己少用时间获得更多的收获,特别是自己战友的 声音) 2. 触类旁通,多问个为什么,多跨过界去学习。在阿里巴巴, PD 、SA 、DBA 、UI等等职位各司其职,作为开发的我们其实也应 该去了解如何去画Use Case,如何假设服务器和应用环境,如何写 一些略微复杂的SQL ,了解一些 DB 的特性,如何能够简单的作出一 些基础的页面,使用简单的css 来美化一下门面。这些就是需要多跨 过界,多虚心的去学习。钻:1. 本职工作技术一定要扎实,每作一个 技术点就要把技术吃透,同时延伸开来,发掘更多的技术亮点。2. 多 接触新鲜事物,但是有选择的去了解,有目的的去学习
9、和实践(目的 的源泉就是工作的需求)。3. 学会分享,一个人自己搞懂一个技术很 容易,一个人要把他熟悉的技术写下来就会发觉原来自己还有那么多 没有搞清楚,一个人如果要把写下来的东西宣讲给别人听,他就会发 现,原来写下来的仅仅是那么一小块,因此学会分享,从自己了解, 到记录分享,到演讲传播就是一个不断深化和广化的过程。个人觉得 小公司锻炼人(啥都自己干),大公司培养人(该干的要干好),因 此自己常回头看看自己在广和钻上的不足,可以让自己进步的更快, 学的更全面。学中医积累经验,学西医寻找突破中医以对人体经络血脉了解为基础,通过望闻问切来寻找病理根 源,行医年限越久,找问题解决问题的经验越强。西医
10、以科学技术为 手段,通过试验化的方式不断寻找突破,并且将成果积累并且传递给 更多的人,但是否年限越久越有能力,或者是使用得器材越广越资 深,这点全要看个人对于医术的理解,如果仅仅停留在对器械的使用 和对成果的依赖,那么只会成为一个庸医。当然这里绝对没有对中西 医的差别化或者评价,仅仅要说明的是,在手段丰富的情况下,容易 忽视了本质,只看到了皮毛,积累的时候多一些追根溯源,站在别人 的成果上才更踏实,因此在对经验积累上向中医多学一些,在寻找突 破,传播技术上多学一点西医的风格。不过说到低,还是要看学习的人, 静的下心 ,沉得住气 ,才会有积累 ,才会有突破 .不做一个纯粹的 “ 技术人员 ”不做
11、一个纯粹的 “ 技术人员 ” ,其实也就是说要培养自己多方面的 能力,我仅仅把自己想到的一些点列出来说说:1 项目产品化的思想。现在就算在学校里面给导师作项目都讲究一 个商业价值,更不要说在企业里工作。作为一个开发或者架构师最重 要的就是要有产品化的概念,这也是项目是否成功的关键。软件的目 的是为人服务,如何服务的好,那就要以一个产品的思路去做项目, 而不是作为实验室的实验品,为客户提供好服务就会给公司带来商业 价值,对自己的工作也会有很好的肯定。这是一个良性循环,反之则 是恶性循环(多赢变成多输)。如何做到产品化,首先就是需要去了 解需求,而不是布置需求,其次就是设计时多听取一些不同角色的意
12、 见,最后就是在客户的反馈过程中反省。2 多一些设计,少砌两块砖。代码写的再好,其实也只是用砖块砌 墙砌的比较好罢了,这年代已经不会为了节省两块砖而给一个优秀工 作者了,同时技术的日新月异,总是摆弄技巧,学习花拳绣腿已经跟 不上时代了。多了解一些行业背景,多参与一些架构设计,将业务设 计用良好的架构体系来实现,那才是一个称得上有能力的技术人员。3 学会前瞻,学会自己找事。记得我刚进平台组,最不适应的就是 我的老大基本不太给我布置太详细的任务,这就好比进入大学,老师 不给作业,自己反而心里没底了,其实自己找事的过程就是一个自己 学习的过程,当我一天下来感觉没干什么,没学到什么,心里就开始 发虚。
13、如何能够前瞻性的去选择一些目标,如何对现有情况提出一些 创新和建议,都是一种更高能力的要求。现在SIP组也是一样,在我 们这个组里虽然现在每周还是布置一定工作,但是我对其他两个同学 的要求也是希望能够有前瞻性,学会发现问题,预防问题,更甚者就 是提出创新。当你具备了这种环境的时候,你就需要锻炼自己的能力 了。4 做个让老大放心的人。这点也许很多人和我一样在业务上很早就 让老大觉得可以安心睡觉了,但是其实另一方面,如何在商业角度看 问题,如何培养新人,如何协调部门合作等等,都会让你的老大更加 安心。另一方面来看,其实在这些能力的培养过程中,你不再局限于 业务水平的提升,让自己在更多方面更加成熟。
14、六脉神剑今天是我进入阿里巴巴3 年整。在阿里巴巴有个说法,只有在阿 里巴巴工作了3 年,才能算是一个真正的阿里人,因为理解阿里巴巴的文化,需要三年时间的沉淀。这里就从一个写代码的角度分享一下 阿里巴巴的六脉神剑文化。客户第一: 如果你是做架构的,作平台的,作开发工具的,那么客户 就是和自己一样的开发者,多学习一下开源项目的精神,多从使用者 角度去考虑问题,那么你的东西才会被更多的人认可和使用,永远不 要去做一个 “ 玩具 ” 的开发者。如果你是做产品的,那么就多听,多 想,多问,永远不要急着去写代码。拥抱变化: 敏捷开发的基本原则。互联网应用尤其如此,不要害怕变 化,在需求和架构之间找到平衡点
15、(说起来比较容易_)。团队合作: 一个人的力量始终有限,分享,交流,合作能够让自己事 半功倍,学的更多,看得更远。诚信: 说到就要做到,做了就要做好,做软件开发一样也需要有责任 感,贴满狗皮膏药的代码上如果注释是你的名字未来也会给你蒙羞。 踏踏实实地用心去写代码,去设计架构,不经意间得到的要远远比那 么一点工资来的多。激情: 还是那句话,你如果不爱这行,乘着年轻赶快转行。敬业: 专业执着,精益求精很感谢各位能看完这篇感受分享,以上都仅仅是个人的一点感受,能 够引起共鸣那么证明我们的经历很相似,如果能够给到你一点帮助, 那写这些就真的有意义了。不论你在别人眼里是一个资深架构师还是 开发人员,其实如果你爱这个行业的话,你应该就是一个写代码的, 但是每个人的经历都是一本“ 写代码的自我修养 ” ,珍惜自己的选择, 让自己在兴趣和工作中找到最佳结合点。