`
hejiajunsh
  • 浏览: 409953 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

[转]如何成为出色的开发人员

阅读更多

前言:之所以有此一文,不是空穴来风,也不是故意的哗众取宠,而是最近的一些所见,所感。在本文中总结出来,希望对大家有帮助。

因为一些工作原因,其他的系列文章没有接着写下去,还望大家见谅。
 
本篇的议题如下:
不要成为代码的机器
如何有效的项目评估
 
  不要成为代码的机器
开发人员的事情就是coding,没日没夜的coding,而且大家都是这样在coding,但是效果和结局就不一样:有人codingN多年,技术还是原地踏步,编写出来的代码还是bug连连;有人coding就变成了技术骨干,甚至有人成为了CTO, 架构师等。
 
为什么?
 
首先从一个小的故事说起:一个项目,分配给了项目组的人开发。于是大家就热火朝天的干了起来。当时,就发现了一个现象:任务已分配完成之后,有人就开始coding了,噼里啪啦的开始敲代码,不久之后又开始噼里啪啦的改代码,然后又开始不断的调试,找出bug,然后修改bug。很快,这个迭代的期限就到了,原计划要完成的功能很多没有实现,有的人也确实做完了,问题也一大堆,有人也确实完成了,没有bug,但是在审查他的代码的时候,就是看不懂。
 
这里想起了自己刚刚步入IT开发行业时候的情景。总是希望尽快的把事情搞完,因为只要没有做完,就拖了项目的后腿,很可能被leader训导,甚至可能被认为没有能力而被开除。在写代码的过程中,发现一点:尽管写代码的速度是快了,但是在写完了之后,每次编译,都发现错误,编译通过了吧,逻辑又有错误,然后就这样不断的缝缝补补,功能是完成了,但是心里有一种想法:以后千万不要让我来看和来改这段代码。因为代码写的很烂,烂的连自己都不想看,而且很多实现的方式也是很诡异。反正结果是:功能完成了。其实自己心里也很清楚,在写代码的时候,脑子有点糊,而且写着写着就不知道写什么了。
 
后来慢慢的发现:如果再这样下去,对自己的发展是没有好处的,而且原本认为很有技术含量的编程活动也变成了一种没有技术含量体力活,有时候甚至不用脑子。
 
就如软件开发中的需求一样:变化。
人也要:改变。
 
所以在之后的项目开发过程中,就给自己定了一个目标:写完一个小功能的代码,确保一次就编译通过(当然,在写代码的时候肯定得注意逻辑,但是偏重在使得编译通过),于是,在开发的时候,就开始“用心”了,或者说是更加的细心了。
 
一段时间的磨练之后,这个目标达到了,而且还超出了期望的值:写完一个大的功能代码之后,编译也没有错误。
 
所以这里悟出了一点:同样是做事情,做的也是同一件事,目标不同,结果就不一样。
 
这样之后,写的代码质量确实是提高了,但是另外的问题又出来了:写出来的代码总是在缝缝补补,总是这里差一点,那里差一点。很多地方很欠考虑。
 
怎么办?
发现了怎么一个问题:每次在任务分配了之后,就开始coding。这没有错。大家都这么做的。但是有一点:每次在实现一个功能的时候,总是一边写代码,一边思考,就这样,一步步的把功能实现。其实这就是问题所在。
 
就好比下棋,你总是走一步算一步,但是你的对手在走一步的时候,已经想到了后面的3步,4步,甚至更多步怎么走。如果你和这样的对手下棋,输家常常是你。
写代码也是一样的,不要走一步算一步。在写代码之前,首先从业务上,要把这个功能的流程搞清楚,然后再考虑:如果实现这个流程,要怎么写代码。然后在开始写代码,于是带着这个思想,发现自己写出的代码逻辑错误就少了,起码在总体的流程上是对的,可能在有些地方缺少一些考虑,如验证等。这样bug也少了,开发的速度自然快了。
 
说白了,就是在实现一个功能之前,先要设计,或者专业一点,画画流程图,其实流程图也不一定非得用UML画的那么标准,很多时候,就是拿一支笔和一个练习本开始画了,只要自己认识就行了。
采用这种方式之后,发现不仅自己的设计能力提高了,而且对开发出来的功能也是很有信心的。
 
一个功能,在草纸上设计,一个模块,也这样设计,甚至一个小的体统也这样设计,慢慢的,就可以上机coding之前,整个功能就已经在头脑中实现了,剩下的就是转为代码的事情了。
 
如何有效的项目评估
在项目中,总是想控制项目的进度,但是每次在开会的估算一个功能什么时候可以做完的时候,往往听到的却是这样的话“应该可以在一周之类完成”,“估计应该可以吧”,等等,诸如此类的没有把握的话,最后的结果是:什么时间规划都是白搭,延期,再延期。
 
其实很大的程度上就反映了设计的问题。
怎么说?
 
其实当我们在估算项目的时候,很多的时候我们没有一个准确的估算,或者说只有一个大概的估算。其实这就是设计做的不够。
 
当一个任务分配下来之后,我们确实一直在考虑业务流程和怎么实现,但是终究只是停在“考虑”上,没有进一步的细化,细化的颗粒度不够,没有细化到用到几个类,几个方法,很多的时候只是大概的想想怎么实现。就因为这样,项目的风险很大,甚至不能控制项目,而且也不知道项目是否按照计划在在进行。
 
如果设计做的充分的好,最后的结果就是:整个类,流程都基本敲定,只是填充方法的实现而已,这样项目是否按照计划进行就一目了然。
 
 
当然,这里不是闲着没事专门的说教,也不是说些大话,空谈,大谈。
其实,编程终究是需要动脑的,多多的思考

本文出自 “燕洋天” 博客,请务必保留此出处http://yanyangtian.blog.51cto.com/2310974/642748

分享到:
评论

相关推荐

    vscode免费使用,开发人员专用工具

    它在前端开发和后端开发领域中都表现出色,成为许多开发人员的首选工具。这款轻量级但功能强大的编辑器支持多种编程语言,并且通过扩展插件系统,用户可以根据自己的开发需求定制功能,实现各种环境配置。 1. **跨...

    SilverLightViewer开发人员指南.doc

    《SilverLightViewer开发人员指南》 在信息化发展的浪潮中,富因特网应用程序(RIA)已经成为提升用户体验、增强交互性的关键工具。Silverlight,作为微软推出的一款RIA开发平台,凭借其强大的多媒体处理能力和丰富...

    2012Android开发人员必看的资料

    随着2012年Android开发市场的不断升温,这些知识点为开发人员提供了坚实的基石,使得他们能够开发出性能优越、用户体验出色的移动应用。而对于开发者而言,持续学习和掌握新知识,不断提升技能,是保持在激烈竞争中...

    一个好的web开发人员需知道的10件事情.docx

    【标题】: 一个好的Web开发人员需知道的10件事情 【描述】: 文档列举了成为优秀Web开发人员...总之,成为一个出色的Web开发人员需要不断学习和适应新技术,掌握这些关键技能将有助于提升开发者的专业水平和工作效率。

    wisdom:通过指定成功标准来培养更好的开发人员

    如果您所能做的仅仅是写代码,那么您有多出色就无关紧要,因为您当然不是摇滚明星开发人员。 解决方案 Rockstar开发人员通过提供更好的解决方案来达到自己的地位。 当开发商挣扎所有的关于如何编写代码,他们松散的...

    开发人员_21_it人员简历_程序员简历模板_计算机相关专业.doc

    综合以上分析,张三作为一名开发人员,不仅拥有扎实的技术基础,而且具备出色的项目管理和团队协调能力,尤其在Java开发、架构设计和数据库优化方面有显著的成就。这样的背景使他成为IT行业中理想的Java技术经理人选...

    开发人员_91_it人员简历_程序员简历模板_计算机相关专业.docx

    标题和描述中提到的是一个IT专业人士的简历,具体是针对开发人员,尤其是程序员的职位。这份简历适用于91平台上的IT人员求职,特别强调了计算机相关专业的背景。它涵盖了求职者的个人信息、技能、求职意向、教育背景...

    iOS开发人员必看资料(共100个)

    这份"iOS开发人员必看资料(共100个)"的资源集合,显然是一个全面的学习宝库,旨在帮助开发者提升专业技能,理解并掌握iPhone应用开发的核心技术。下面将详细阐述这份资料可能涵盖的一些关键知识点。 1. **Swift...

    Python 后端开发人员.pdf

    ### Python后端开发人员所需掌握的关键知识点 #### 一、Python后端开发基础 - **Python语言基础**:包括...这些知识点涵盖了从基础知识到高级话题的各个方面,为成为一名出色的Python后端开发人员打下了坚实的基础。

    C++词汇解析集锦 编程开发人员必备

    C++是一种强大的、通用的编程语言,...通过不断实践和学习,可以不断提升C++编程能力,成为一名出色的开发人员。在文档"C++词汇解析集锦 编程开发人员必备"中,你将找到更详尽的解析和实例,帮助你巩固和拓展这些知识。

    TLE75242 Datasheet,芯片手册,开发人员可下载使用

    其强大的功能集、广泛的保护机制和灵活的接口选项,使其成为开发人员进行高效能、高可靠性设计的理想选择。通过下载TLE75242的数据表和芯片手册,开发人员可以深入了解其全部功能和用法,以便于在实际项目中充分发挥...

    开发人员_89_it人员简历_程序员简历模板_计算机相关专业.docx

    他在五百丁科技大学完成了本科教育,主修课程涵盖了编程语言如C和C#,面向对象设计,数据库管理,计算机网络以及网站设计和软件测试等领域,这些知识是成为一名优秀开发人员的基础。 在职业经历方面,小萝卜在...

    NC代码编译器的开发及其应用研究

    为了提高译码的效率,采用类似高级语言编译的方法来开发NC代码编译系统已成为一个趋势。NC代码编译器不仅是一个工具,它还承担着数控虚拟仿真系统与CAD/CAM系统之间的信息交流任务。不同数控机床制造商生产的机床在...

    Zttp针对大多数常见用例进行优化的基于开发人员体验的HTTP客户端

    Zttp是一款专为开发人员设计的高效、易用的HTTP客户端,它针对常见的HTTP请求场景进行了优化,以提供出色的开发体验。在PHP开发领域,特别是在处理HTTP请求和网站爬取时,Zttp凭借其简洁的API和强大的功能,成为了一...

    从事嵌入式系统开发工作,需要的基础技能有哪些?

    从事嵌入式系统开发工作,开发人员需要掌握一系列的基础技能,这些技能不仅包括对特定硬件的深入了解,还需要软件编程以及系统设计的能力。下面,我们将详细介绍从事嵌入式系统开发所需的一些关键基础技能。 首先,...

    Delphi开发范式可视化设计Delphi开发范式可视化设计Delphi开发范式可视化设计

    Delphi具有出色的性能、可靠性和易用性,以及强大的可视化设计工具和面向对象的开发范式,为开发人员提供了广泛的功能和丰富的库,使软件开发更加高效和创造性。本文将介绍Delphi的起源和特点、其在应用开发中的应用...

    Notepad2,完全替代记事本软件,非常好用,对开发人员来说是更是不可多得的好工具。

    Notepad2是一款轻量级、高效且功能丰富的文本...总的来说,Notepad2以其丰富的功能、出色的性能和高度的可定制性,成为开发人员理想的文本编辑器选择,无论是日常的文本编辑还是专业的代码开发,都能提供极佳的体验。

    JavaScript_作为web开发人员学习的有用技能的可视化概述.zip

    通过不断学习和实践,你可以成为一个出色的Web开发者,能够创造出充满活力和创新的网页应用。这个"JavaScript_作为web开发人员学习的有用技能的可视化概述.zip"资源正是为了帮助你在这个旅程中取得进步。通过阅读...

    软件开发之星事迹 (2).pdf

    【软件开发之星事迹】 在软件开发领域,"学习之星"和"创新之星"的故事为我们提供了宝贵的启示。...在互联网这个快速发展的行业中,只有保持这样的热情和进取心,我们才能成为真正的"软件开发之星"。

    resources-android-dev:成为Android开发人员的资源集合

    我们将一起学习成为出色的Android开发人员。 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 先决条件 开放的思想和开放的心。 <3 正在安装 待定 运行测试 待定 分解为...

Global site tag (gtag.js) - Google Analytics