`
jiaoronggui
  • 浏览: 1327736 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116410
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199304
社区版块
存档分类
最新评论

程序员如何发掘出自己的潜力,从而成为强大的程序员

 
阅读更多

am1.2

Aaron Stannard是新创公司MarkedUp的CEO,他最近花费大量时间雇佣、评估很多不同的程序员,并和他们一起协作。在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。

1. 太害怕学不会新的工具、语言和框架

2. 直到特性“完成”的时候才会提交。(但永远都不会完成!)

3. 只是“知其然”会很危险

4. 分析瘫痪(Analysis paralysis)

5. 没有对工具和开发过程投入

6. 羞于请求帮助

7. 不知道如何让其他程序员更容易使用你的代码

8. 不知道如何阅读其他人的代码(或者不想读)

9. 不能从最终用户的角度编码(你考虑的范围太狭窄)

10. 无法判断任何编程任务的业务价值

Aaron提到,他的公司中所使用的技术非常复杂,某些大型企业都很难掌握,所以对于想要加入团队的程序员来说,入门门槛非常高。因此,尽管他们非常仔细地雇佣新人,但还是很难找到足够天才的程序员。于是,他总结出十种阻碍程序员职业生涯发展的行为,并据此来帮助想要提升自身的平凡的程序员们。

以下分章节对10中行为进行阐述:

1. 太害怕学不会新的工具、语言和框架

一般的程序员会墨守他们最喜欢的工具,而不希望学习新的,因为他们认为,离开了那些语言和工具,多年的经验就会付诸东流。而强大的程序员会拥抱那些挑战和机会,积极地学习新的工作方式。

 

2. 直到特性“完成”的时候才会提交。(但永远都不会完成!)

他在MarkedUp公司中把这种行为叫做“囤积提交(commit hoarding)”。有些程序员没有足够的信心来承受团队中其他成员的批评和审查,因此会把自己的工作藏起来,直到“完成”状态才提交。

这种开发者会损害团队中其他人员的生产力,因为团队看不到他每天的成果,而且他也不会在正常开发的过程中寻求帮助,这样就会造成很多“最后一分钟” 的缺陷,从而让交付延迟。而强大的程序员会知道,代码并不是他们自己,因此会把代码经常自信地呈现在其他团队成员的眼前,获得批评和建议。

 

3. 只是“知其然”会很危险

在这里Aaron举了微软最近在C# 5.0中引入的async和await关键字为例,这两个关键字会让创建和管理异步调用变得很容易,但是也会造成上下文切换、对共享资源进行多线程访问的成本,仅仅对此有基本了解的程序员会盲目地使用这些特性,把所有I/O调用都封装成C#中的Task对象,这会创建出危险的、不可预测的而且非常难以测试的代码。

好的开发者不仅“知其然”,而且会了解为什么这么做以及应该在什么样的条件下使用。

 

4. 分析瘫痪(Analysis paralysis)

分析瘫痪是指在程序开发初期进行系统分析,常因为太过执着于控制所有可能的变化和意外,而造成大量时间的浪费,裹足不前。这是一种很经典的问题,会影响很多一般的程序员。它通常是由过度分析造成的,但是Aaron认为其根本原因在于不敢做出坏的决定。一般的程序员会担心犯错,只想一次成功。

而强大的程序员不会害怕,他们会编写很烂的代码,对其进行单元测试,如果认为无法达到目的,就会在45分钟之内把它抛弃。强大的程序员会积极地限制用来研究的时间,因为他们知道那是个陷阱——看起来是有效的,但经常都无效。

 

5. 没有对工具和开发过程投入

如果你想要成为天才程序员,那么就需要投入时间提升技能和知识,而将你和普通的代码工人区分开来的是快速编写出生产级别代码的能力。你可以同时拥有好的代码和速度,但是你需要先对你用于构建的过程投入。

一般的程序员不会对工具、过程和环境投入,只会使用大量的时间学习新的语言特性和API如何工作,但那并不会改变什么。

通常,你作为程序员所能够做出的最大改进并不是专注于你所编写的代码,而是优化你编写代码的过程。

 

6. 羞于请求帮助

一般的程序员羞于或者不想让人知道自己不懂,所以他们装作什么都知道,但这样就有可能提交某种非常可怕的代码到库中。说“我不知道怎么做。”没什么错,强大的程序员知道这一点,所以当被问题难住的时候就会请求帮助。

 

7. 不知道如何让其他程序员更容易使用你的代码

在所有技术团队中,工作很重要的一部分就是人员的并行(human parallelism),也就是多个人能够同时对同一代码库工作的能力。但是对于团队来说,能够异步工作也很重要,当你不在的时候我可以修改你的代码,反之亦然。

一般的开发者并不这么认为,他们会开始对一项任务编写代码,认为他们会永远拥有这段代码。而强大的开发者会知道技术债务的说法,从而试图通过设计代码来对其限制,让它尽可能可维护和自解释。(推荐阅读:《用鸡讲解技术债务的形成过程》、《技术债务真正的代价》)

编写可读的代码需要程序员改变他们的看法——你的代码要比你在组织中存在的时间长。

 

8. 不知道如何阅读其他人的代码(或者不想读)

当一位一般程序员看到用他所不熟悉的语言或框架编写的代码库时,就想立刻重写,而不考虑业务价值或者推向市场的时间。而强大的程序员会接受这样的观点,重写所导致的业务成本通常是不可接受的,所以应该避免这种行为。他们会试图坐在计算机前,理解、学习然后修改现有的代码。

阅读代码要比编写代码还难,但是强大的程序员会投入时间来学习如何超越。

 

9. 不能从最终用户的角度编码(你考虑的范围太狭窄)

有句话说得好:作为程序员,你的工作不是解决技术问题,你之所以解决技术问题,是为了解决业务问题。

一般的程序员只会陷在技术问题之中,而不知道最初是为什么要解决这个问题。更严重的是,一般程序员无法从头开始创建出具有业务价值的东西。当被要求基于简单的用户设计新特性的时候,他们会死板地、照着字面对故事或者说明书做出解释,这样交付的产品用户根本无法使用。因为他们不会考虑相关的用例;不会考虑最终用户的体验;并且在做面向用户的内容时,设计都会很笨重。这导致他们无法编写业务应用,只能做产品。

好的程序员会从最终用户的角度来看他们的代码。我怎样才能让它更轻松地解决用户的问题呢?故事的文字内容之外有哪些方面会让这个特性给用户带来更多收益呢?

 

10. 无法判断任何编程任务的业务价值

这个问题和上一个是相关的,很多技术上很强的程序员之所以无法意识到自己的潜力,是因为他们不会停下来,从业务或者组织本身的角度去看一下他们的工作。

强大的程序员能够自我管理,对选择如何投入时间做出很好的业务决定,他们会问这样的问题:这是我现在应该做的最有价值的事情吗?我应该为之投入多少时间?离交付日期有两个星期,我现在能做什么,从而更容易满足那个日期呢?

一般的程序员不会,他们只会拿着说明书,然后盲目地实现,直到结束,不关心他们的工作和公司的业务目标有什么关系,以及对其他团队和业务组会产生什么样的影响。这样,他们就会在业务价值很低的技术任务上浪费大量开发时间。

Aaron在最后做出总结:如果你想要成为更好的程序员,那么就要从改变你看待代码以及编码的方式开始。你需要理解所编写的每行代码背后的业务成本;你需要从客户或者最终用户的角度来看待工作;你需要接受代码会比你在组织中存在的时间更长,所以要以其他开发者能够继承的方式来设计;最重要的,永远都不要害怕新的挑战,也不要害怕请求帮助,你无法独居一隅来提升工作效果,软件开发也是社会化的工作。

 

====================================================

欢迎关注我的微信号@it51share 

====================================================

与本文相关的文章

4
4
分享到:
评论
1 楼 kuchaguangjie 2014-10-31  
广告贴, 其实一句话, 实践出真知!

相关推荐

    10种阻碍程序员职业生涯发展的行为

    在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。  AaronStannard是新创公司MarkedUp的CEO,他最近花费大量时间雇佣、评估很多不同的...

    程序员地区城市分布,新一线城市程序员大军崛起

    总结来看,中国程序员的地理分布正在发生显著变化,新一线城市成为了新的增长点,它们正成为越来越多程序员的就业选择。这些变化对企业的招聘策略、人才管理提出了新的挑战和要求。企业需要适时调整战略,有效利用新...

    程序员转正述职报告(合集8篇).docx

    【程序员转正述职报告概述】 程序员转正述职报告是试用期结束后,程序员对自身工作进行总结并申请正式职位的报告。...通过这样的报告,公司可以评估程序员的能力和潜力,从而做出是否转正的决策。

    (优质)程序员转正答辩ppt

    在这个过程中,一份精心准备的PPT可以帮助程序员有效地传达自己的价值和潜力。标签“java”表明这个答辩主要关注的是Java编程语言相关的知识。 在【(优质)程序员转正答辩ppt@www.java1234.com.pptx】中,我们可以...

    程序员跳槽全攻略.pdf

    不过,从上述内容来看,电子书旨在帮助程序员了解跳槽的全流程,从而做出更明智的职业选择。程序员在考虑跳槽时,除了要考虑薪资和职位的提升外,还应考虑个人成长、公司发展潜力、技术栈的更新换代等因素。 此外,...

    为什么程序员是一个伟大的职业

    综上所述,程序员是一个伟大的职业,因为它需要创新、团队协作,市场需求旺盛,薪资待遇优厚,并且具备持久的职业发展潜力。如果你热爱编程,并愿意投入其中,那么你将在这个行业中找到属于自己的成功之路。

    程序员面试宝典(全目录版).pdf

    程序员面试是求职过程中的...通过这本书,求职者可以提高面试技能,更好地展示自己的能力和潜力,从而在激烈的职场竞争中脱颖而出。对于广大正在寻求软件开发或程序设计工作的求职者来说,这本书无疑是一份宝贵的资源。

    全球首位AI程序员是否会抢走程序员饭碗.docx

    它们在消除人为错误、加快开发进度、提高代码质量以及优化项目管理方面展现出巨大的潜力。随着AI技术的不断发展,AI程序员将在未来的软件开发中扮演更加关键的角色。 #### 三、AI程序员的局限性 尽管AI程序员在...

    程序员给女朋友用HTML5制作的3D相册

    CSS3引入了3D转换,允许开发者对元素进行旋转、缩放和平移等操作,从而创造出立体感。在这个3D相册中,可能使用了CSS3的transform属性,配合perspective属性来设定视距,使图像看起来具有深度,同时可能还使用了...

    互联网+程序员绩效考核表

    【互联网+程序员绩效考核表】是针对互联网行业中程序员这一特殊...通过对以上各个方面的综合评估,可以全面了解程序员的工作表现,从而提供有针对性的反馈和指导,帮助他们提升工作效率和质量,促进职业生涯的发展。

    程序员简历末班1000套

    在IT行业中,简历是程序员求职过程中的重要工具,它展示了候选人的技能、经验和项目经历,是获取面试机会的关键...通过深入研究和选择合适的模板,你可以更好地展示自己的技术实力和职业潜力,增加获得理想工作的机会。

    程序员简历模板

    【程序员简历模板】是针对IT行业的专业人士,特别是程序员和开发者设计的一系列简历模版,旨在帮助他们更好地展示自己的技能和经验,从而在求职过程中脱颖而出。这些模板通常包括Android开发、JAVA工程以及Web前端...

    程序员升职涨薪简历模板必备

    在IT行业中,简历是程序员展示自身技能、经验和项目成果的关键工具。...通过合理运用这些模板,程序员可以打造出一份既专业又个性化的简历,有效地展示自己的价值,从而提高获得升职或涨薪的机会。

    程序员简历优化指南

    《程序员简历优化指南》是一份关于如何准备和优化简历,从而让雇主对求职者产生浓厚兴趣的详细指南。为了帮助求职者在激烈的竞争中脱颖而出,指南提供了详尽的建议和步骤。 首先,指南强调了确立求职方向的重要性。...

    C嵌入式程序员面试指南

    《C嵌入式程序员面试指南》是一份专为...通过阅读《非官方的面试技术指南.htm》和《嵌入式程序员面试须知.htm》,你可以深入理解这些要点,从而在面试中展现出自己的专业素养和潜力,顺利进入理想的C嵌入式开发岗位。

    11份程序员经典样式简历模板,常见程序员简历word模版

    通过"11份程序员经典样式简历模板",程序员可以借鉴各种设计,找到最适合自己的简历风格,从而有效地向潜在雇主展示自己的价值和潜力。在制作简历时,不仅要注重形式,更要注重内容的质量,以期在竞争激烈的IT就业...

    程序员简历模板-单页单色19.docx

    【程序员简历模板】是专为IT专业人士设计的一款高效求职工具,尤其适合希望在众多应聘者中脱颖而出的程序员。...通过合理利用模板,你能够制作出一份既吸引人又富有深度的简历,从而在求职市场上取得优势。

Global site tag (gtag.js) - Google Analytics