`
rock
  • 浏览: 58164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】如何做一个出色的程序员

阅读更多

爱这行!!!


       从事任何行业都一样,只有真正的爱上了这份工作,才会投入热情,才会在顺境中自我警醒,在逆境中寻找突破。 这个行业的竞争很激烈,你停下来走,别人就立刻会跑步超过你,没有对这一行业的一种热情,就很难在困境中保持一种执着的态度坚持到底。


踏踏实实“扎马步”


       今天无意中看了“校长”的“程序员&司机”,其中谈到了关于程序员速成的问题。其实速成班毕业的 “系统杀手”早已在遍布大江南北,只是在互联网时代,互联网的应用型软件生命周期越来越短,业务驱动主导的情况下,这种速成方式看起来反而提高了企业生产 效率。但这样的人才也就只能写几个Facebook上的插件应用或者iGoogle上的Gadget,真的要出Google,Amazon,Yahoo改 变互联网世界的企业,还是需要踏踏实实先学“扎马步”的人。


       很多在学校的同学或者刚刚毕业的朋友都看什么热门学什么,Spring,AJAX,Hibernate等等,又有多少人在看Spring之前把J2SE的 NIO,XML,Collection等先好好学习一下,在看AJAX之前把Http协议、DTD、XML Schema好好看一下,在学习Hibernate以前先把J2EE事务规范搞清楚。Java最大的好处就是开源,能够让人们站在更高的起点来作出更多的 创新,但是对于学习者来说,不了解自己站在什么上面的时候,可能摔下来会很痛。在用的时候多问一些为什么,在遇到问题的时候多找找原因,在了解以后多提出 一些优化的方案,这样才会进步的更快,走的更远。


       记得我前一阵子回家的时候和妈妈聊起最近的工作,虽然妈妈不太明白,但是也知道我现在做的东西技术含量比较高,嘱咐我“千万不要什么都教给自己的同事,徒 弟带出就不要师傅了”(这当然是老一辈的观念了)。我和她说:“不要担心,这种学的会的不教迟早也会,学不会的教了也学不会”。其实这里说的学的会的就是 技术,而学不会的就是经验和能力。这个行业的人在日积月累过程中并不会去比较掌握的知识面有多广多深,毕竟这行业更新很快,其实能力强的人在多年的学习中 就积累了很多的找问题,分析问题,总结问题,提出建议,发掘创新的能力,这些才是这行业人在发展中最宝贵的财富,也是一个人成长的标志。开始的过程中,踏 踏实实地“扎马步”,了解一些最基本的知识,那么上层技术的发展对于他来说仅仅只是一个短暂的学习过程,甚至可以触类旁通。因此还是要奉劝每一个新入行的 同学,踏踏实实,静下心来做技术,就算工作安排得都是一些浮躁和重复的工作,用高效的方式来结束那些重复劳动,多留一些时间给自己打基础。


逆境养兵、顺境攻城掠地


       普通人的工作经历通常都是起伏不定的,一个人的能力是否能够得到体现,不仅仅靠自己的努力,有时候也需要“天时”、“地利”。马云比较有名的一句话:“今 天很残酷,明天更残酷,后天很美好,但是大多数人死在明天晚上,看不到后天的太阳!!!”,其实也在说明一件事,就是很多时候需要一种坚持的精神才能得到 宝贵的机会。


今天是我进入阿里巴巴满3年,这3年让我感触很深的是:

1.逆境不要气馁,厚积薄发。

2.顺境不要懈怠,一股作气,把握机会展现自己最大的能力。

3.在逆境和顺境的转换过程中,创造机会,不要坐等机会,要学会不在其位,也谋其职。   

      最 后一点就拿我自己的亲身经历来说,我原来就职于一家通信公司,因此对于互联网应用的开发和架构设计要比很多人弱,进入阿里巴巴以后工作了半年(主要作业务 开发),正好阿里软件创立,当时被分配到了阿里软件第一个产品负责客户模块,当时的应用是通过MDA框架配置搭建的,开发人员很大程度上不需要自己做太多 的编码,但是这个平台并没有搭建过如此复杂的大型应用,因此存在着不少问题,当然这些问题都是通过业务产品线的人反馈给平台部的人,当时平台部门人员很 少,但是却要修复和完善诺大一个平台,因此常常搁置开发人员的反馈。当时在自己工作之余就琢磨和研究平台,同时跟踪调试平台,最后直接给出解决方案,逐渐 的就融入到了平台开发中,最后被吸收到了平台部门,进入平台部门以后遇到了两位很好的老大,根据我的特质给我安排了研究和学习的工作。接下去就是不断地参 与阿里软件各个基础平台的构建,核心技术的研究和探索,找到了兴趣和工作的最佳结合点。因此,当你困惑的时候首先不是去抱怨,而是审视一下自己是否还有作 的不够的,是否还有可以提升的空间,多给自己制造一些机会,也许我们不用等到后天,也不会死在明天夜里,明天早晨我们就看到了太阳。


海纳百川、冰冻三尺


       很多朋友可能听老师或者前辈也说过类似的话,就是作为一个技术人员要广也要钻。就好比现在很多人都要DB Scale out,同时也要Scale up。我从自己的角度来说一下广和钻的看法。广:1.要有容人之量。(很多时候程序员最大的毛病就是喜欢在技术上比较,未尝不是好事,但是一个人的能力总 归有限,多看看别人的,多听听别人的,也许能够让自己少用时间获得更多的收获,特别是自己战友的声音)2.触类旁通,多问个为什么,多跨过界去学习。在阿 里巴巴,PD、SA、DBA、UI等等职位各司其职,作为开发的我们其实也应该去了解如何去画Use Case,如何假设服务器和应用环境,如何写一些略微复杂的SQL,了解一些DB的特性,如何能够简单的作出一些基础的页面,使用简单的css来美化一下 门面。这些就是需要多跨过界,多虚心的去学习。钻:1.本职工作技术一定要扎实,每作一个技术点就要把技术吃透,同时延伸开来,发掘更多的技术亮点。2. 多接触新鲜事物,但是有选择的去了解,有目的的去学习和实践(目的的源泉就是工作的需求)。3.学会分享,一个人自己搞懂一个技术很容易,一个人要把他熟 悉的技术写下来就会发觉原来自己还有那么多没有搞清楚,一个人如果要把写下来的东西宣讲给别人听,他就会发现,原来写下来的仅仅是那么一小块,因此学会分 享,从自己了解,到记录分享,到演讲传播就是一个不断深化和广化的过程。个人觉得小公司锻炼人(啥都自己干),大公司培养人(该干的要干好),因此自己常 回头看看自己在广和钻上的不足,可以让自己进步的更快,学的更全面。     



学中医积累经验,学西医寻找突破


       中医以对人体经络血脉了解为基础,通过望闻问切来寻找病理根源,行医年限越久,找问题解决问题的经验越强。西医以科学技术为手段,通过试验化的方式不断寻 找突破,并且将成果积累并且传递给更多的人,但是否年限越久越有能力,或者是使用得器材越广越资深,这点全要看个人对于医术的理解,如果仅仅停留在对器械 的使用和对成果的依赖,那么只会成为一个庸医。当然这里绝对没有对中西医的差别化或者评价,仅仅要说明的是,在手段丰富的情况下,容易忽视了本质,只看到 了皮毛,积累的时候多一些追根溯源,站在别人的成果上才更踏实,因此在对经验积累上向中医多学一些,在寻找突破,传播技术上多学一点西医的风格。不过说到 低,还是要看学习的人,静的下心,沉得住气,才会有积累,才会有突破.




不做一个纯粹的“技术人员”


       不做一个纯粹的“技术人员”,其实也就是说要培养自己多方面的能力,我仅仅把自己想到的一些点列出来说说:


1. 项目产品化的思想。 现 在就算在学校里面给导师作项目都讲究一个商业价值,更不要说在企业里工作。作为一个开发或者架构师最重要的就是要有产品化的概念,这也是项目是否成功的关 键。软件的目的是为人服务,如何服务的好,那就要以一个产品的思路去做项目,而不是作为实验室的实验品,为客户提供好服务就会给公司带来商业价值,对自己 的工作也会有很好的肯定。这是一个良性循环,反之则是恶性循环(多赢变成多输)。如何做到产品化,首先就是需要去了解需求,而不是布置需求,其次就是设计 时多听取一些不同角色的意见,最后就是在客户的反馈过程中反省。


2. 多一些设计,少砌两块砖。 代 码写的再好,其实也只是用砖块砌墙砌的比较好罢了,这年代已经不会为了节省两块砖而给一个优秀工作者了,同时技术的日新月异,总是摆弄技巧,学习花拳绣腿 已经跟不上时代了。多了解一些行业背景,多参与一些架构设计,将业务设计用良好的架构体系来实现,那才是一个称得上有能力的技术人员。


3. 学会前瞻,学会自己找事。 记 得我刚进平台组,最不适应的就是我的老大基本不太给我布置太详细的任务,这就好比进入大学,老师不给作业,自己反而心里没底了,其实自己找事的过程就是一 个自己学习的过程,当我一天下来感觉没干什么,没学到什么,心里就开始发虚。如何能够前瞻性的去选择一些目标,如何对现有情况提出一些创新和建议,都是一 种更高能力的要求。现在SIP组也是一样,在我们这个组里虽然现在每周还是布置一定工作,但是我对其他两个同学的要求也是希望能够有前瞻性,学会发现问 题,预防问题,更甚者就是提出创新。当你具备了这种环境的时候,你就需要锻炼自己的能力了。


4. 做个让老大放心的人。 这 点也许很多人和我一样在业务上很早就让老大觉得可以安心睡觉了,但是其实另一方面,如何在商业角度看问题,如何培养新人,如何协调部门合作等等,都会让你 的老大更加安心。另一方面来看,其实在这些能力的培养过程中,你不再局限于业务水平的提升,让自己在更多方面更加成熟。


六脉神剑


       今天是我进入阿里巴巴3年整。在阿里巴巴有个说法,只有在阿里巴巴工作了3年,才能算是一个真正的阿里人,因为理解阿里巴巴的文化,需要三年时间的沉淀。这里就从一个写代码的角度分享一下阿里巴巴的六脉神剑文化。


客户第一: 如 果你是做架构的,作平台的,作开发工具的,那么客户就是和自己一样的开发者,多学习一下开源项目的精神,多从使用者角度去考虑问题,那么你的东西才会被更 多的人认可和使用,永远不要去做一个“玩具”的开发者。如果你是做产品的,那么就多听,多想,多问,永远不要急着去写代码。


拥抱变化: 敏捷开发的基本原则。互联网应用尤其如此,不要害怕变化,在需求和架构之间找到平衡点(说起来比较容易^_^)。


团队合作: 一个人的力量始终有限,分享,交流,合作能够让自己事半功倍,学的更多,看得更远。


诚信: 说到就要做到,做了就要做好,做软件开发一样也需要有责任感,贴满狗皮膏药的代码上如果注释是你的名字未来也会给你蒙羞。踏踏实实地用心去写代码,去设计架构,不经意间得到的要远远比那么一点工资来的多。


激情: 还是那句话,你如果不爱这行,乘着年轻赶快转行。


敬业: 专业执着,精益求精


很 感谢各位能看完这篇感受分享,以上都仅仅是个人的一点感受,能够引起共鸣那么证明我们的经历很相似,如果能够给到你一点帮助,那写这些就真的有意义了。不 论你在别人眼里是一个资深架构师还是开发人员,其实如果你爱这个行业的话,你应该就是一个写代码的,但是每个人的经历都是一本“写代码的自我修养”,珍惜 自己的选择,让自己在兴趣和工作中找到最佳结合点

分享到:
评论

相关推荐

    程序员求职面试宝典

    例如,可能会问到排序算法的时间复杂度、如何设计一个高并发系统、SQL查询优化策略等。通过深入理解和解答这些题目,可以提升自身的技术能力,更好地应对面试挑战。 2. **面试技巧**:除了技术知识,面试技巧同样...

    程序员第二步:从程序员到项目经理

    针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但...只有通过不断的尝试和反思,才能真正成为一个优秀的项目经理。

    一个Java程序员应该掌握的10项技能

    根据给定文件的信息,我们可以总结出一个Java程序员应该掌握的10项关键技能: ### 1. 熟练掌握开发工具(IDE) 作为一名Java程序员,熟悉开发工具是非常重要的。这些工具可以帮助程序员更高效地编写代码、调试程序...

    程序员的八重境界

    通过以上对《程序员的八重境界》的解读,我们可以发现,无论处于哪个阶段,每个程序员都应该清楚自己的定位和目标,并为之不懈努力。更重要的是,每个人都应该找到自己真正热爱的东西,并为之付出努力。在这个过程中...

    给程序员的15个顶级职业建议

    接下来,结合所提供的15条顶级职业建议,深入分析程序员应该怎样打造和维护一个出色的职业生涯。 首先,编码是程序员职业的核心。建议#1提到,要成为一名优秀的程序员,最重要的是不断地练习编码。这表明理论知识...

    程序员的发展方向 职业发展方向

    - **部门经理/团队负责人**:领导一个团队,负责团队成员的工作分配和技术指导。 - **产品负责人**:与客户紧密合作,定义产品需求,推动产品的研发与改进。 #### 三、创业路线:创办自己的公司 对于具有创新精神...

    《卓有成效的程序员》 迷你书

    《卓有成效的程序员》是一本专为程序员和软件开发者设计的迷你书籍,旨在帮助他们提升工作效率、优化工作流程,并最终成为一个卓有成效的技术专家。这本书涵盖了多个关键的知识点,对于那些希望在IT行业中脱颖而出的...

    关于年长程序员的5个误传

    例如,一个熟悉C/C++的程序员在转向新的GUI框架时,会利用其对消息传递和事件处理的理解,从而更快地适应新框架。这种深入理解能提高他们的生产力,并减少犯错的可能性。 误传 3:年长程序员有家庭和其他责任,不能...

    程序员试卷1993年

    在关系代数中,**投影操作**(对一个关系进行列的筛选)的结果是一个新的关系,其元组个数**小于或等于**(_D_)原关系的元组个数。这是因为投影可能移除某些重复的行,导致新关系的行数减少。关系模型的主要特征之...

    黑马程序员_2小时教你写一个android程序[第07天]课件源码

    在本课程"黑马程序员_2小时教你写一个android程序[第07天]"中,主要聚焦于Android应用程序开发中的图像处理技术。通过学习这些知识点,开发者可以深入理解如何在Android平台上进行动态图像操作,增强应用的用户体验...

    java程序员必备技能(为java学习引航)

    ### Java程序员必备技能详解 ...综上所述,成为一名出色的Java程序员不仅需要扎实的基础知识和技能,还需要不断学习新的技术和工具,保持对最新趋势的关注。只有这样,才能在这个快速发展的行业中立于不败之地。

    Java程序员面试宝典(完整版)

    1. 一个`.java`源文件中可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(如private或包访问权限的类)。这些类必须遵循命名空间规则,且非公开类通常作为公开类的辅助类存在。 2. Java...

    JAVA程序员面试宝典

    《JAVA程序员面试宝典》是一本专为Java开发者准备的面试指南,旨在帮助读者全面掌握Java编程语言的核心概念和技术,以便在求职面试中表现出色。这本书涵盖了从基础语法到高级特性的广泛内容,包括但不限于面向对象...

    从程序员到项目经理

    ### 从程序员到项目经理...总之,从程序员到项目经理的转变是一个复杂而又充满挑战的过程。这不仅需要个人的努力和坚持,还需要不断地学习和实践。只有这样,才能够顺利实现这一职业上的跨越,并在新的岗位上取得成功。

    程序员到底为了什么钻研技术.pdf

    在IT行业中,程序员是一个充满挑战与创新的群体。他们不仅在日常工作中承担着项目开发的任务,还会在业余时间深入探索技术的奥秘。这种看似苦行僧般的生活,究竟源于何种动力?程序员钻研技术,其实包含了多重动机。...

    程序员面试宝典(各大IT公司历年面试真题)

    综上所述,《程序员面试宝典》为读者提供了一个全面的面试准备方案,覆盖了从传统C语言到新兴技术领域的方方面面。它不仅能够帮助计算机相关专业应届毕业生准备求职面试,也能够为软件行业的在职人员和计算机爱好者...

    Java程序员面试秘技-陈浩

    《Java程序员面试秘技-陈浩》是一本专门为Java开发者准备的面试指南,旨在帮助求职者在面试过程中脱颖而出。本书作者陈浩深入剖析了Java编程和技术面试的核心要点,旨在为读者提供全面、实用的面试技巧和知识。 1. ...

Global site tag (gtag.js) - Google Analytics