想从普通的程序员变成专业程序员吗?没关系,来看看笔者的这篇文章吧!
1、在你责怪别人之前,先检查自己的代码
先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同。
当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么。他们可能会做一些你从来没有想到过的事情,或者他们的做事顺序与你的截然不同。
我 个人的原则是,如果我有一个不能确定的错误,那么我会先考虑是不是编译器的问题,然后再去检查堆栈是否损坏。特别是当添加跟踪代码会使得问题移动的话就更 要这么做了。多线程问题是bug的另一个来源,有时候令人焦躁得简直想拔光头发,或者直接想摔电脑。当系统是多线程的时候,最好倾向于简单的代码。我们不 能依赖调试和单元测试来发现任何一致性的bug,所以设计的简单性是最重要的。
所以,在你不分青红皂白地去责怪编译器之前,先想一想福尔摩斯的这条建议,“一旦你排除了种种不可能,剩下的不管有多么难以置信,一定就是真相”。
2、不断学习
我们生活在一个有趣的时代。随着软件开发逐渐遍布全球各地,你会发现有很多人都可以干你的工作。所以你需要不断学习以保持竞争力。否则,你就会落伍,停滞不前,直到有一天,这份工作不再需要你,或外包给一些更廉价的劳动力。
那么我们能做些什么?有些雇主很慷慨,会提供培训以拓宽你的技能。也有的人会说我没时间或者没这个资金去接受任何培训。所以,关键是要摆正心态,学习是对自己的负责。
这里有一些学习的方法。而且许多资源都可以在互联网上免费获取:
阅读书籍、杂志、博客、Twitter feeds和网站。如果你想更深入地了解对象,可以考虑添加到邮件列表或新闻组。点击这里通过邮件订阅《快乐码农》杂志
如果你真的很想学习某一种技术,那么就亲自动手写代码。
尽量与导师一起工作。虽然你从任何人身上都可以学到一些东西,但是从那些比你更聪明或更有经验的人身上,你能学到的更多。如果你实在找不到这样的良师益友,那么请继续往下看。
使用虚拟导师。在网络上找你真正喜欢的作者和开发人员,阅读他们写的内容。订阅他们的博客。
了解你使用的框架和库。知道事物的工作原理,有助于你更好地应用它们。如果你使用的是开源资源,那么你真的很幸运。使用调试器单步执行代码,以查看内部究竟是怎么回事。你也可以去看看那些确实比你聪明的人是如何编写和审查代码的。
当你犯了错误,修复bug,或者遇到问题的时候,试着去真正理解发生了什么事情。很有可能其他人已经遇到过同样的问题,并且发布在了网上。谷歌搜索真的很有用。
学习东西还有一个好方法就是所谓的“教学相长”。当别人在倾听你的言语,并问你问题的同时,你也会学到东西。可以建立用户组或本地会议。
为自己感兴趣语言和技术加入或启动一个研究小组(模式社区),也可以创建本地的用户组。
参加会议。如果去不了的话,也可以在网上看,许多会议会将其谈话免费发布到网上。
收听播客。
曾经对代码库运行过静态分析工具,又或者查看下你的IDE警告?了解它们报告了什么,以及其原因。
当 然如果你有《黑客帝国》中Neo那样的超能力,自然这一切对你而言不过是小菜一碟。但很可惜,我们都是普通人,我们需要时间和精力,以及不断的努力才能促 使自己不断的学习。不过,你不必成天学习。只要你能有意识地花点时间去学习就可以了,哪怕每天一小时,有总比没有好。人活着不是为了工作,你还应该有自己 的生活。
3、不要害怕破坏东西
每 个具备行业经验的程序员肯定参与过代码库岌岌可危的项目。系统很糟糕,并且改变这边总是会破坏另一边不相关的功能。每次添加模块,程序员只能想着尽可能少 地改变代码,每次发布都胆战心惊。这座软件的摩天大楼随时有坍塌的可能。之所以改动代码会如此伤脑筋是因为系统太糟糕了。但是即使你知道系统出了问题,却 又因为投鼠忌器,而不得不听之任之。任何一个外科医生都懂得,伤口要想愈合就必须得切除腐肉。虽然手术会带来痛苦,但绝对比任伤口发炎溃烂要好。
不 要害怕你的代码。没有人会在乎当你捣鼓代码的时候有没有暂时破坏了什么东西。只要你做的改变不会让项目重新回到开始状态,就不会令人崩溃。投入时间重构, 能让你受益于项目整个生命周期。这样做还有一个额外的好处是,由于你有过这种处理病危系统的经验,所以你对它应该如何工作非常内行。要善于应用这些知识, 千万不要反感这些宝贵的财富。重新定义内部接口,重构模块,重构复制粘贴代码,并通过减少依赖来简化设计。你可以通过消除特殊情况显著降低代码的复杂性, 因为特殊情况往往是因为错误的耦合特点导致的。慢慢地从旧结构过渡到新结构,测试一路同行。如果你想要一下子完成一个大的重构,那么往往会因为各种频出的 问题而考虑中途放弃。
4、专业程序员
专业程序员的一个最重要的特点是有责任心。专业程序员会为他们的职业生涯、预算、日程安排承诺、错误、技能技巧负责。一个专业的程序员不会将责任推卸给别人。
如 果你是专业的,那么你就需要为自己的职业生涯负责。你有责任去阅读和学习。你有责任去时刻关注最新的产业和技术。但是许多程序员觉得这应该是他们雇主的工 作。NO,大错特错。想一想医生?想一想律师?他们都是靠自己来培养和训练自己的。他们的下班时间多用在了阅读杂志报刊上。他们时刻关注着最新的资讯动 态。所以,我们也应该如此。你和你雇主之间的关系,已经在雇用合同上作了详细的说明,简而言之就是:你的雇主承诺支付你薪酬,而你承诺做好工作。
专 业程序员会为他们编写的代码负责。除非他们知道这些代码是有效的,否则就不会发布代码。现在,好好思考这个问题:如果是你,你会不会在不透彻了解代码的情 况下就直接发布代码?专业程序员不希望QA找到任何bug,因为这些代码都是经过他测试之后才发布的。当然,QA依然会发现一些问题,因为没有一个人是完 美的。但作为专业程序员,我们的态度应该是让QA找不到任何缺陷。
专业程序员也是好的团队成员。他们负责地对待整个团队的输出,而不是只顾自己的工作。他们乐于助人,善于向彼此学习,在需要的时候甚至会鼎力相助,为了项目前仆后继。
5、充分利用代码分析工具
测试的价值是编程早期阶段就灌输给软件开发者的一个理念。近年来,单元测试,测试驱动开发和敏捷方法的兴起,证实了我们开始注重于在开发周期的各个阶段进行测试。但是,测试只是你可以用来提高代码质量的许多工具之一。
回 过头去看,当C语言还是一个新事物的时候,CPU时间和任何类型的存储都是非常宝贵的。第一个C语言编译器注意到了这一点,所以选择了通过去掉一些语义分 析,来减少代码之间的传递次数。这意味着,在编译时,编译器检查到的可能只是可被检测到的bug中的一小部分。为了弥补这个缺陷,Stephen Johnson写了一个名为lint的工具——它将从你的代码中删除一些没有价值的东西——从而实现一些已被它的兄弟C语言编译器撤掉的静态分析功能。然 而,静态分析工具却因为可以给出大范围的误报警告和一些没有必要遵循的静态文体惯例的警告而倍受赞誉。
现 在的语言、编译器和静态分析工具的设计和以前已经大不相同。由于内存和CPU时间变得相对比较便宜,因此负担得起编译器检查更多的错误。几乎每一种语言都 拥有至少一个工具,用来检查风格指南的违规行为、常见问题以及一些狡猾的有时候可能很难捕捉到的错误,如潜在取消引用空指针。更高级的工具,如C的 Splint,以及Python的pylint,是可配置的,这意味着你可以通过命令行开关或在IDE中,使用配置文件来让工具选择放过其中的哪些错误和 警告。Splint甚至还能让你在注释中注解你的代码,以便于更好地提示你的程序是如何工作的。
6、关心代码
优秀程序员能写出好代码,这是毋庸置疑的。坏程序员……则不能(他们能写出好代码,就不是坏程序员了,哈哈)。他们总是在生产其他人不得不消灭的怪兽。你的目标是写出好代码,对不?那么你应该成为好程序员。
好的代码并不是凭空而来的,也不能靠运气然后恰巧让你瞎猫碰到死老鼠。为了获得良好的代码,你必须努力的改进。过程是艰难的。但是如果你确实关心代码的话,那么你一定能收获好代码。
仅 靠技术并不能成就好的编程。我碰到过一些非常聪明的程序员,他们能够产出令人印象深刻的算法,能够熟记语言标准,但却写出了最可怕的代码。这种代码,阅读 起来很痛苦,使用起来很痛苦,修改起来更是令人痛不欲生。我也碰到过一些非常谦逊的程序员,因为坚持简单的代码,所以写出来的程序更优雅,更易于表达他的 意思,和他们工作非常愉快。
基于我多年的软件生产经验,我得出的结论是,差强人意的程序员和伟大的程序员之间的真正区别是:态度。好的编程在于专业的方法,以及一种竭尽全力希望写出最好软件的期望。
要成为一个优秀的程序员,你必须对自己的代码负责,真正关心代码——养成积极向上的心态。伟大的代码是由大师精心雕琢的,而不是由那些马虎的程序员胡乱写出来的。
推荐阅读:
相关推荐
【程序员技巧收集助手】是一款专为程序员设计的实用工具,旨在帮助他们更有效地积累和管理在编程工作中遇到的各种技巧和经验...通过合理利用这款工具,程序员可以更好地管理自己的技能库,成为更高效、更专业的开发者。
如何成为一个优秀的程序员:深入解析与实践指南 在IT行业,成为一名优秀的程序员是众多技术追求者梦寐以求的目标。在《如何成为一个优秀的程序员》一文中,作者罗伯特·L·里德(Robert L. Read)列出了多达一百条...
成为一名C++程序员是一个逐步深入的过程,需要掌握编程基础、提高编程技巧,以及不断提升设计思想。以下是一份详细的指南: 1. **入门阶段**: - 初步理解编程思维,通过编写小程序解决简单问题。选择合适的入门...
如果你对成为一名C++程序员感兴趣,下面是一条详细的路径指南,帮助你实现这一目标。 首先,你需要掌握基础编程概念。编程不仅仅是关于C++,它涉及到逻辑思维和问题解决能力。学习基本的编程概念,如变量、数据类型...
在成为一名程序员的过程中,需要经过四个阶段的训练,以掌握编程语言、编程工具、算法与数据结构、软件项目开发等方面的知识。下面将详细介绍每个阶段的学习内容、目标、时间和注意事项。 第一阶段:掌握一种编程...
无论是哪种原因,选择成为程序员都意味着进入了一个充满无限可能的世界。 #### 二、兴趣导向的选择 1. **对技术和创造力的兴趣**:对许多人而言,最初选择编程往往源自对技术和创造力的浓厚兴趣。编程不仅能够创造...
1. 猎头关系:理解猎头的角色,建立良好的合作关系,让他们成为你的职业发展助力。 2. 沟通策略:学习如何有效地与人力资源代表沟通,清楚表达你的期望和需求。 3. 面试邀请:如何评估面试邀请的价值,判断是否值得...
了解并熟练掌握这两种语言是成为专业程序员的必经之路。 文件操作是任何编程语言中不可或缺的部分,无论是读写文件、处理文件流,还是进行文件的创建、删除和重命名,都是日常开发中的常见任务。理解文件系统的原理...
程序员求职技巧是每个技术人才在职业生涯中都需要掌握的重要能力,无论是初入职场的新人还是有经验的资深开发者,都需要不断更新自己的求职策略。本篇文章将深入探讨Java和.NET程序员的面试技巧,帮助他们在竞争激烈...
本资源包"程序员实用求职技巧x4"提供了四个关键领域的指导,帮助程序员在求职过程中更好地展现自我,提高成功概率。 首先,我们来探讨“程序员面试着装守则”。在科技行业,虽然着装通常较为随意,但在面试场合,...
成为更好的程序员需要不断学习和实践,涵盖编程技巧、软件开发最佳实践、个人习惯和团队协作等多个方面。根据提供的文件内容,以下是详细的知识点: 1. 编程实践 - 代码层面的技术:学习如何编写代码行,进行测试...
### 成为一个好的程序员需要的书籍 对于任何想要在IT领域取得成功的人来说,了解并掌握正确的学习资源至关重要。本文将根据给定的文件信息,详细解析成为一名优秀程序员所必需的书籍和资源。 #### 编程书籍 1. **...
在IT行业中,成为一名合格的程序员不仅意味着能够编写代码,还需要具备一系列的专业素质和技术能力。本文将根据给定的标题、描述及部分内容,详细阐述一名真正的合格程序员应该具备的核心素质与技能。 #### 一、...
游戏程序员的学习之路是一个...总的来说,成为一个游戏程序员需要广泛而深入的学习,涵盖算法、数据结构、编程语言、图形学、人工智能等多个方面,并且需要不断地实践和提升,才能在这个快速发展的行业中保持竞争力。
C语言的特点和魅力吸引了大量的编程爱好者和专业人士,它成为了许多程序员职业生涯中不可或缺的一部分。 本书《C程序员成长攻略》是多位编程专家多年从事C应用程序开发经验的总结。它以“主题+实例”为主线,详细...
标题 "你是合格的程序员吗?—合格程序员应该具备的12种能力" 指向了一个讨论合格程序员所需技能的主题。在这个行业中,成为一个优秀的程序员不仅仅是掌握编程语言那么简单,还需要一系列综合能力。以下是对这些能力...
能够熟练使用调试工具(如gdb)、构建自动化脚本(如makefile),以及进行代码优化,都是专业程序员的标志。 #### 开源项目实践 参与开源项目不仅能提升编程技能,还能增强团队协作能力和项目管理经验。选择一个与...
通过以上各个方面的详细展示,一个【程序员完美简历】不仅能够反映出你的专业技能,还能体现出你的职业素养和个人特质,帮助你在众多求职者中脱颖而出,赢得雇主的青睐。因此,制作简历时务必细心打磨,让简历成为你...
标题和描述中提到的“程序员受益终身的文档”聚焦于程序员个人品质的培养与提升,强调了在职业生涯中,除了...通过不断学习和实践,每位程序员都可以成为更加全面、成熟的IT专业人士,为职业生涯的发展奠定坚实的基础。