`
lvwenwen
  • 浏览: 958434 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

如何成为强大的java程序员?

阅读更多

很多人已经有了几年的开发经验,但还是没有充分发挥自己的潜力,本文总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的developer。

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

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

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

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

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

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

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

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

4. 分析瘫痪(Analysis paralysis)

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

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

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

 

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

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

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

6. 羞于请求帮助

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

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

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

一般的开发者并不这么认为,他们会开始对一项任务编写代码,认为他们会永远拥有这段代码。而强大的开发者会知道技术债务的说法,从而试图通过设计代码来对其限制,让它尽可能可维护和自解释。

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

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

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

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

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

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

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

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

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

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

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

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

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

分享到:
评论

相关推荐

    怎样自学Java,成为高薪Java程序员?

    程序员的工资越来越高,Java软件工程师是其中招聘量最大的一个。如何才能成为一名Java程序员?一、大学学相关专业;二、找专门的IT培训机构学习;三、自学。今天我们就来说说如何自学成为拿高薪资的Java程序员。

    java程序员发展前景

    同时,Java程序员也可以选择成为创业者,运用自己的技术特长和市场洞察力去创建自己的公司或工作室。在创业的过程中,他们可以将自身的技术积累转化为产品,为社会提供创新的解决方案。这不仅是一条充满挑战的道路,...

    一个Java程序员的成长历程

    一个Java程序员的成长历程,如何成为一个Java程序员?

    java程序员规划java程序员职业规划.docx

    Java 程序员职业规划 Java 程序员职业规划是指 ... Java 程序员需要了解,除了编程之外,还需要了解商业领域的知识,成为业务领域的专家,并学习财务基本知识。 Java 程序员需要学会抓住机遇,多学习新技术和新知识。

    java程序员的成长历程

    在编程世界中,Java语言以其跨平台、面向对象的特点,成为了全球范围内广泛应用的开发语言,尤其是在企业级应用领域。...只有这样,才能在这个快速变化的IT行业中稳步前行,成为一名优秀的Java程序员。

    Java 程序员宝典 pdf 电子书

    这本书详细介绍了Java语言的基础、核心特性以及高级概念,帮助读者掌握成为一名优秀Java程序员所需的技能。 在Java编程的世界里,理解和掌握基本语法是至关重要的。书中可能包括了变量、数据类型、控制结构(如if...

    《Java程序员》

    《Java程序员》 本书对于即将从事Java职业或初步从业的程序员来说是一本难得的好书。从生存、制胜、发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像。本书中既有在公司中的生存技巧,又有高手达人...

    java程序员总结报告

    【Java程序员年终总结】 作为一名Java程序员,我在2010年的经历让我深刻理解到学习的重要性。从初入职场的新鲜人,到能在公司独立完成项目的开发者,这段历程充满了挑战和成长。2010年,我有幸加入北京联合兴辰公司...

    java程序员上班那点事儿

    熟悉Spring Boot、Hibernate等流行框架和技术栈可以帮助Java程序员快速搭建应用程序,并利用这些框架提供的强大功能简化开发过程。 #### 数据库操作 掌握SQL语言及数据库操作对于Java程序员来说非常重要。此外,...

    Java程序员年中、年终述职报告PPT模板

    Java程序员在年中或年终述职报告中,通常需要展示过去一段时间内的工作成果、技术提升、项目经验以及未来规划。这份“Java程序员年中、年终述职报告PPT模板”旨在帮助他们高效地准备这类报告,通过专业且有条理的...

    java程序员的那些事儿

    Java程序员在IT行业中占据着重要的地位,他们负责构建和维护各种规模的应用程序,从桌面软件到企业级系统,再到移动应用和云计算平台。"java程序员的那些事儿"这个主题涵盖了许多方面,包括学习路径、技术栈、开发...

    Java程序员面试宝典

    总的来说,要成为一名成功的Java程序员,不仅需要扎实的技术功底,还要具备不断学习和适应变化的能力。利用提供的压缩包资源,结合自身的实践和思考,将极大地助力你在面试和职业生涯中取得成功。

    Java程序员上班那点事儿.txt

    根据提供的文件信息,我们可以从中提炼出关于Java程序员工作的一些关键知识点。这些知识点涵盖了技术技能、职业发展、工作态度以及在IT行业中可能遇到的各种挑战。以下是详细的解析: ### 技术技能要求 - **掌握...

    Java程序员的推荐阅读书籍.rar

    为了帮助Java开发者拓宽知识视野、深化技术理解,本文推荐了一系列必读的Java编程书籍,以及一个额外的资源平台,它们共同构成了Java程序员学习的宝贵资源。 首先,推荐的书单中包括了多个方面的重要著作,它们从...

    java程序员参考求职简历

    Java程序员在求职过程中,一份优秀的简历是至关重要的。简历不仅体现了候选人的专业技能,还展示了他们的个人特质和项目经验。以下是一些关于如何构建一份出色的Java程序员求职简历的知识点: 一、个人信息 简历的...

    Java程序员开发指南

    Java程序员开发指南旨在帮助初学者和有一定经验的开发者深入理解并掌握Java编程语言,从而提升在实际项目中的应用能力。本指南将涵盖以下几个核心领域: 1. **Java基本语法**:Java是一种静态类型的、强类型的语言...

    java程序员之路

    Java程序员之路是一个涵盖广泛的主题,它涉及到一个人从零基础学习Java编程语言,逐渐掌握核心技术,直至成为精通JSP(Java Server Pages)的专业编程人员的全过程。在这个过程中,开发者需要掌握一系列的技术栈和...

    Java程序员应如何做职业规划?.docx

    1.明确的职业目标: Java 程序员需要明确自己的职业目标,知道自己想成为什么样的人。 2.职业发展规划: Java 程序员需要制定职业发展规划,规划自己的职业发展方向和步骤。 3.技能提升: Java 程序员需要不断学习和...

    挑战java程序员系列教程

    Java作为一种广泛使用的面向对象编程语言,其强大的功能和跨平台特性使其成为企业和开发者的首选。 1. Java基础:教程首先会介绍Java的基础知识,包括语法、变量、数据类型、运算符、控制结构(如if语句、for循环、...

    Java程序员考试中需要注意的几点

    总的来说,成功通过Java程序员考试并成为一名出色的Java开发者,不仅需要深入理解面向对象编程,还需要全面掌握语言细节,不断实践和交流,以确保理论知识与实际操作的紧密结合。通过这样的学习过程,不仅能顺利通过...

Global site tag (gtag.js) - Google Analytics