一名好程序员工资的15个特征,你具备几点

程序猿的特点
优秀的研发人员已经成为整个生态链的重中之重。Amazon公司的HR @小F小Fairy 的一条微博让我大受感动,她这样总结优秀程序员的共性:
谦称自己为程序猿、码农、民工……;
非常低调,喜欢自嘲;
愤青,但很关心社会和民生问题;
迷恋美女;
不容易沟通,但是一旦碰对眼了就会交心,而且交的很深。
是的,我们的研发人员是当代最可爱的群体之一。他们无需背景,不用拼爹,仅仅用自己的热情、脑力和技术构建社会赖以运转的基础,默默地推动着世界向前发展。
没有更多推荐了,一名好程序员的15个特征,你具备几点?_
抱歉,该文章已下架!
一名好程序员的15个特征,你具备几点?
文章内容加载中...
百度教育内容、品牌合作请联系每个优秀程序员必须具备的技术技能
我特别支持软件开发者在他们掌握技术技能的同时去学习&软技能&&&事实上,我写了一本关于这方面的书&&但是不可否认的是:技术技能很重要。
我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有个卵用。也许你可以成为一名优秀的管理人员或指导人员,但不会是软件开发人员。
如果你正在阅读这篇文章,那么我假设你有兴趣成为一个软件开发人员&&或者是更优秀的软件开发人员&&下面就让我们来聊一聊你需要知道哪些技术技能。
用技能赚钱
现在,有这样一种主流观念,压垮了很多新手软件开发者,那就是你需要学习很多东西才能成为软件开发人员,并且很多人不知道从哪里开始起步。
这里我会尝试着具体说明那些在你追求成为软件开发人员的路上将让你受益的必要技术技能。
一篇文章当然不能详尽说明作为软件开发者,你可能需要掌握的所有技术技能,但是我会列出最关键的一些技术技能。
我认为从这一条开始说起是最合适的。
不懂编程语言,怎么能成为一个真正的程序员?
不过,关于选择哪种编程语言去学习可能并没有我们想得那么重要这一点,请允许我一笔带过。
相反,让我们谈一谈为什么我们要从一种编程语言开始,而不是试图去学习所有的东西。
许多新手程序员会试图一次性或在第一份工作之前学习几种编程语言,以便于有备无患。
虽然我认为你最终应该学会一种以上编程语言,但我不建议提前这样做,因为这只会导致混乱,并且会分散你需要学习的其他技能的精力。
相反,我建议你应该深入研究,重点学习单一编程语言的来龙去脉,这样你才能对用这种编码语言来写代码信心十足。
那么在你决定想要成为什么样的开发人员的时候,怎么样才能尽可能地独树一帜呢?
如何构造代码
在学习了一门编程语言之后&&或者最好是在学习的同时&&我坚信,你需要知道的下一件事就是如何正确地构造你的代码。
有一个很好的资源来帮助你学习这个非常宝贵的技能:Steven McConnell的《Code Complete 》。
我所说的构造代码是什么意思呢?
我的意思是,要写出好的,清晰的,易于理解的代码,不需要大量注释,因为代码本身就是一种表达方式。
很多软件开发者在他们整个职业生涯都不曾去学习这个技能,这是不幸的,因为这是我&&以及其他许多人&&判断一个软件开发人员技术和能力的主要方式。
良好的代码结构展示了对这种技艺的热衷,而不仅仅是为了完成工作。
构建代码是软件开发真正的艺术部分,但它也是至关重要的,因为你和你的同事得花费相当多的时间来维护现有的代码,而不是编写新的代码。
具体应该如何正确地组织代码我就不说了,因为我已经给出了一个很好的资源,但是要努力学习如何从一开始就写出好的、干净的代码,而不是事后学习这个技能。
我只能保证,即使你是个新手,如果你可以写出好的、干净又简洁的、易懂的,本身就可以表达意思的代码,那么任何面试官看到你的代码都会觉得你是一个有经验的专业人士。
并且在一定程度上,或者至少在这条道路上,因为你会将这个职业当作一种专业,而不是一份工作。
面向对象的设计
这一条是有争议的,特别是如果你正在学习的编程语言并不面向对象,但是有大量的软件开发世界会按照面向对象设计的思维思考,所以你需要确保你了解它。
面向对象的设计是一种将复杂程序设计分解为单独的类或对象(类的实例)的方法,其中封装功能且具有特定的角色和责任。
在软件开发中,我们总是试图管理复杂性。
从对象的角度思考可以帮助我们做到这一点,因为它能让我们从一堆交互组件中定义并设计一个复杂的系统,而不是作为一个整体的试图解决整个复杂性。
现在的编程世界有着大量的函数式编程语言,但你在软件开发中找到的最流行的语言和模式,仍然深受面向对象设计和分析的影响。
你应该好好理解什么是类,继承的不同类型&&何时使用它们&&还有理解像多态性和封装等术语。
算法和数据结构
如果你上传统院校学习并想获得计算机科学学位的话,那么这是一个很大的考点。
算法是解决各种计算机科学/编程问题的常用方法。
例如,有若干常见的在程序上用于排序的算法。每一种排序算法都有一系列关于速度,内存大小要求,以及数据理想类型的不同属性。
计算机科学领域有很多这样的算法,并且理解如何变化这些算法来解决你可能遇到的棘手问题也很重要,当你解决现实编程问题的时候。
通常情况下,擅长这些算法可以让一个开发人员在1个小时之内就能解决可能需要另一个开发人员几天时间才能搞清楚的问题。
除非你熟悉和擅长算法,否则你甚至不知道已经有了优雅的解决方案在那里。因此,仅仅只为这个原因,我认为这也是一个值得掌握的宝贵技能。
数据结构也是如此,并且可以与算法结合使用。
有几个所有软件开发者都应该熟悉数据结构中的,包括:
数组或向量
通过熟练掌握数据结构和算法,你可以轻松又优雅地解决许多艰难的编程问题。
当我开始编程的时候,我在数据结构和算法方面非常糟糕,因为我主要是靠自学的。
我一直都没有意识到它们的价值,直到我和一个名为TopCoder的网站竞争,而他们对数据结构和操作算法的了解使之有了很大的竞争优势。
很快,随着我遇到了一些我不知道如何解决的问题,我发现这些技能在真正的编程世界非常有用,而且解决起来相当简单&&和有趣。
事实上,我认为这是软件开发最有趣的领域之一。解决难题并利用数据结构和算法来开发一个又干净又优雅的解决方案,真的很有意义。
至少到写这本书为止,目前最好的资源是Gayle Laakmann McDowell的《Cracking the Coding Interview》。
在这本书中,作者涉及了所有你需要了解的关于算法和数据结构的内容。
学习这些东西是一个挑战,但非常值得。这是可以让你超越众多同行的技能之一。大多数软件开发人员都不擅长这个领域。
如果你想通过如微软或谷歌这样的大公司的面试,那么你一定得掌握这个技能集。
开发平台及相关技术
你应该具备一些经验,并至少掌握一个开发平台以及与之相关的技术或框架。
我所说的平台是什么意思呢?
好的,通常它的意思是操作系统(OS),但也适用于其他可以充当类似于操作系统角色的抽象。
例如,你可以是专注于Mac或Windows操作系统得Mac开发者或Windows开发者,你也可以是一名专注于特定的web平台的web开发人员。
具体确切的关于平台是什么就不讨论了&&不同的人会有不同的看法&&但这里我要定义平台为你开发的特定环境,它有自己的生态系统和特殊性。
再者,这是另一个我认为选择并非那么重要的技术技能,只要你选择了一个就好。
企业通常会聘请开发人员针对特定的平台或技术开发软件。
你作为iOS开发者将更容易找到工作,如果你专业于那个特定平台的话。
这意味着要熟悉平台本身,以及开发工具,惯用模式,还有大多数程序员在为那个平台开发时会使用的通用框架。
你可能会认为编程语言的选择决定了平台,但实际上事实情况很少是这样的。
就拿C#举例。如果你是一个C#开发人员,那么你可以用这种编程语言为Windows,Mac,iOS,Android,Linux,甚至是嵌入式系统写代码。
所以,不要仅仅只是选择语言;还要选择平台。
框架或堆栈
除了学习特定的编程语言和平台,我高度建议去学习框架,或者更好的是,与之相配套的完整的开发堆栈。
什么是框架?
什么是堆栈?
框架就是一系列被用于在特定平台或多个平台上开发代码的库。它通常可以使得在该平台上的编程任务变得更加容易。
看这个C#的例子。大多数C#开发人员使用.NET框架来编写C#应用程序。 .NET框架包括许多库和类,能够让C#开发人员在更高的抽象级别上工作,因为每当他想做什么事情的时候,没有必要完全重新发明轮子。
例如,.NET框架的部分还包含了处理图像的代码。这类代码从头编写是极其困难的,所以框架极大地帮助了C#开发人员去编写需要以某种方式处理图像的代码。
堆栈则有点不同。堆栈是一组技术,通常包括一个框架,并且常一起用于创造一个完整的应用程序。
例如,有一个常见的称为MEAN的栈。它代表MongoDB,Express.js,AngularJS,和Node.js。
MongoDB是一个数据库技术。
Express.js是一个用于创建web应用程序的Node.js框架。
AngularJS是一个用于为web应用程序创建用户界面的前端JavaScript框架。
最后,Node.js是一个用JavaScript开发基于web应用程序的运行时环境。
有没有理解所有这些东西并不重要&& 除非你打算成为一个MEAN开发者&&重要的是要明白,如果你知道所有这些技术和框架,那么你就能够开发一个完整的web应用程序。
栈使得创建应用程序变得更容易,因为它们提供了一种许多开发者用来开发应用程序的通用范式,因此知识可以很容易地共享,并且你也能确定哪些特定的技能集市可以一起工作的。
学习堆栈真的是非常有价值,因为这意味着你拥有开发一个完整的应用程序所有必要的技能。很多使用特定堆栈开发应用程序的企业,更愿意雇用那些熟悉那类堆栈能够立马开展工作的软件开发人员。
基础数据库知识
即使数据库的景色在过去几年时间里已经改变了不少,但我不认为数据库会很快消失,因此对此了解一二总是不会错的,对吧?
当前主要有两种数据库技术:关系数据库和文档数据库。
现在的开发人员至少应该熟悉关系数据库,并稍微了解文档数据库。
在软件开发中,数据库经常被用来存储应用程序的数据。
当然,有些团队甚至有专门的数据库开发人员或数据库管理员(DBA),但是这并不能真正允许你不懂至少是基本的数据库知识。
最起码,你应该知道:
数据库如何工作
如何执行基本的查询来获取数据
如何插入、更新和删除数据
如何连接数据集
此外,你可能会想知道如何以编程方式从你的代码与你所选择的平台和/或框架检索和存储数据。
大多数开发者被期待能够编写与数据库进行交互代码。
源代码控制
源代码控制是任何软件开发项目的组成部分。
在我们使用源代码控制之前,我们必须在网络上共享项目的所有文件,或者通过U盘来回查看存储在上面的不同软件版本。
虽然我很不想承认,但我的确不止一次地玩过这个把戏。
但是,我还年轻。我蠢。你却没必要像我这样。
当前,几乎所有专业的开发者人员都被期待懂得如何使用源代码控制来反复检查代码,并希望懂得合并来自多个源的变化。
最基本层面的源代码控制可以让你保持在一个软件项目中对不同的文件所做更改的历史记录。
它还允许多个开发人员在同一时间工作于相同的代码,然后合并这些更改。
具体就不细说了,但你应该知道如何熟练地使用至少一个源代码控制系统,并且你应该熟悉大多数基本的源控制概念。
在当今软件开发领域,几乎所有专业的软件开发团队都会使用某种源代码控制。
构建和部署
现在,大多数软件开发项目都有着某种自动化的构建和部署系统。
有几种不同的软件应用程序,可以帮助软对自动化这两个任务,曾经是手动,当然对于某些团队而言,现在仍然如此。
你问什么是构建和部署?
你知道如何写代码,并检入到源控制系统吗?
拥有一些方法来确保代码可在你检入后真正能工作很不错。
这就是构建系统的用武之地。
最起码,构建系统将编译所有代码,并确保没有编译错误。
一个复杂的构建系统可以运行单元测试或用户测试,运行代码质量检查,并提供关于代码库当前状态的一些报告。
部署系统将负责部署代码要么到生产机器要么可能到某种测试环境。
你不必成为这些技术的绝对专家,但是了解至少这些系统如何工作的基础知识,以及构建和部署代码的过程,是非常重要的。
通常情况下,创建和维护构建和部署系统的实际职责属于所谓的DevOps(developer operations的简写)&&这个快速增长的领域。
但是,这并不妨碍你至少了解关于这个过程如何工作的基础知识。
曾几何时开发者并没有必要知道太多关于测试的内容。
我们习惯于写一串代码,然后扔给测试人员,让他们去找代码中的各种bug,然后我们再来修复bug。
切不可再如此。
随着越来越多的软件项目开始采用所谓的敏捷过程,(后面再方法这一点中我们再细谈),软件开发人员和测试人员不得不更密切地一起合作。
质量已真正成为了整个团队的责任&&我倒是更想说,它一直都是。
随之而来的是,你需要了解一些关于测试的东西。
你至少应该熟悉如下基本术语:
单元测试(不是真的测试)
测试自动化
一个好的开发人员&&我假设你至少想成为一个优秀的开发人员&&会在将代码交给别人之前测试自己的代码。
如果你真的想被认为是专业的,并非浪者虚名,那么这一条没有商量余地。
嗯,很多新手软件开发人员在调试时都感觉自己像是在用鸡蛋碰石头。
每个人都希望写代码,没错吧?
但好像没有人愿意调试自己的代码?
这就是真相。
大约90%的时间软件开发人员是用来搞清楚到底为什么代码不能正常工作。
我知道你只是想能够整天写新的代码,但是此路不通。
如果你采用如测试驱动开发这样的方法,那么你可能会少花很多时间在调试上,但无论如何,不管你做什么,不管你如何努力,你都不得不学习如何调试代码或其他人的代码。
因此,与其采取一种随意的方式来做一些你不得不做的事情,还不如咬紧牙关竭尽全力学会如何有效地做好这件事情。
有没有被我列出来的需要知道的事情清单吓倒?
好吧,还有一个&&但是我保证这是最后一个。
虽然一些软件开发团队才刚开始写代码,不择手段只要完成任务即可,但是大多数团队还是至少遵循某种方法的。
出于这个原因,熟悉一些最常见的软件开发方法背后的基本理念至关重要。
今天,我要说的是瀑布式开发和敏捷开发。
大多数团队会声称他们正在做敏捷。敏捷本身是一个非常松散的概念,但也有一些做法和&&原谅我的措辞&&固定程序是你应该知道的,如果你不想只是纸上谈兵,想要打造一支敏捷团队的话。
不堪重负?不需要
我知道这些内容通通要掌握的话,有点多,而且我仅仅触及了大多数主题表面的东西。
现在,你可能会觉得有点不知所措,有点不堪重负,面对这些所谓的技术技能一片茫然。
没关系。你不用不着这样,除非你已经是一个软件开发从业人员,在这种情况下,可耻的是你!(开个玩笑。但你真的最好需要提高自己了,真的。)
不管怎样,我将在《What You Need to Know About Software Development》这本书中更深入地谈论这些主题中。
所以,淡定点。
好吧,接下来,学习这些技术技能的时候到了,你准备好了吗?
相关内容:
编程爱好者
WEB编程开发高效程序员的7个特征
有些程序员虽然具有一定的经验技巧,但是他们无法成为高效的程序员,因为他们缺乏所需要的几项特质。业内顶尖高效的程序人员都具有哪些特征呢?
1.主动学习新的技术和非技术两方面的知识
不好的程序员只有在实在不行的时候才开始进行知识学习。良好的程序员会主动学习新的技术知识。伟大的程序员不仅会自行学习新的技术知识, 而且还会学习非技术方面的知识,对各种知识来源都有一种开放的心态,而不会象有的人那样固步自封。
具体点说,不好的程序员只有在参加了采用WPF的项目时才开始学习XAML;良好的程序员一年前就学习了XAML,因为他感觉它很有意思;而伟大的程序员还阅读了WPF应用程序的设计指南、可用性(usability)理论或者什么类似的学习课程,因而他能够制作出卓尔不群的UI。
2.务实而不教条
严格遵守那些不成文的“编程规则”往往是一种奢侈品,没有多少开发人员能够承受得起。如果你们的规格说明书不是由顶尖的开发人员编写的,也不是在顶尖的开发人员指导下编写的, 我就可以向你保证,你可能也承受不起。
我经常能够碰到一些程序员,他们无法或者拒绝做某个任务只是因为完成这个任务的做法通常不为最佳实践所接受。业务需求很少会受到实现需求所采用的技术的制约;没有人会说,“这我们不应该把这个需求写到规格说明书里,因为要实现这个需求,程序员就不得不写一段很臭的代码。”
在结束的那一天,程序员的任务是要生成一个有效的应用程序,而绝不是要求在技术方面达到十全十美。我可不是在为垃圾代码做辩护。我想说的是,总会在有些时候,你会写出一些代码,这些代码你永远不会作为范例向别人展示做事的正确方法。如果只有一种写法,那么这种代码就不是糟糕的代码 —— 但要保证你已穷尽了其它所有可能的方案。
3.懂得如何通过研究找到答案
通过研究找到答案可不仅仅只是在搜索引擎中键入几个关键字那么简单, 也不是到Stack Overflow或者MSDN forums这类网站发个问题帖。我就碰到过在搜索引擎里根本搜不到答案的问题,然后我Stack Overflow 或者MSDN forums里发的所有问题贴都没有一个像样的答案,不过我还是解决了我所碰到的问题使得工作得以继续。我不是魔术师 —— 我只是懂得如何找到答案,如何找出问题的根本原因。
有许问题都属于情景式的问题,如果你依赖于搜索引擎或者论坛,就会在各种链接中浪费大量的时间而最终无法得到真正的答案。要学习如何进行根本原因分析,学习底层系统方面的知识才能够找到其它的线索和解决方案,还要学习如果在对问题有个全局性的认识后才对其进行深入分析。
4.拥有激情
不喜欢这份工作,就无法成为这个行业中的顶尖高手。倒是也有一些仅仅把编程当作一份普通工作的程序员水平也还不错,但如果你的三观就是如此的话,你就不太会愿意去做能够将你引向成功的所有事情。这个观点会使很多家伙不悦,因为他们会觉得这是一种人身侮辱。“我是一个很好的程序员,但我还有其它重要的事情要做,我不能让工作成为我人生的全部。” 我完全理解;我也有别的更重要的事情。尽管我也痛恨这么说,当我们对我的工作热情高涨之时,我愿意(虽然不是渴望)抛弃我其它更重要的事情来首先完成手头的工作。要说你不愿意全情投入就无法成为高手,不算是人身侮辱,这是事实而已。
你的激情不能仅仅只在编程一个方面 —— 你必须在你的工作、你所使用的技术、你的老板、你的项目等等方面都有激情。 我目睹过一些非常好甚至很伟大的程序员其表现平平,只是因为有一些条件不太合适。比如,他们不喜欢手头的项目,或者项目中所用的技术让他们讨厌。我曾经就是一个这样的程序员,我也同这样的程序员一起共过事。无论从哪个角度讲,我都不喜欢这样的程序员。如果你发现你的情况就是如此,就需要立即解决这个问题,要么挖掘出手头的工作或项目中有意思的地方从而能让你调整心情,要么就不要接着干了。怪不值当的。
5.将自负留在门外
许多开发人员都非常自负。仅仅是比有些人聪明、懂得多一点或者经验更丰富一点,可不是意味着和那些人相比你才是好人。你要尊重别人,真正听取并考虑别人的观点,在需要的时候向他们求助,而且还不能小瞧别人。 你还应该更加关心团队的胜败,而不是仅仅关心你在工作中的荣誉得失。
6.具有企业家的精神
最优秀的开发人员不会是游手好闲者。对他们来讲,产品的成功不仅仅意味着他们的薪水有着落了。因为他们在工作中热情饱满,他们是为了项目有更好的发展而工作,而且会一往无前。
7.测量两次,下刀一次。。。但测量不要多于三次
开发人员可能会犯的最糟糕的错误之一就是还不知道要干什么呢,就一猛子扎到代码里去了。(当他们把这种做法称作敏捷开发时情况更为糟糕,好像用敏捷两字就能让情况好转似的)。当伟大的开发人员跳进代码里去的时候,那是因为需求规格说明同他们以前实现过的某种做法十分相似。伟大的程序员在面临新问题时,他们会进行思考、计划和研究。
开发人员当中最最优秀的不会堕入“分析瘫痪者(analysis paralysis)”陷阱。他们懂得要对某些事情小心谨慎(比如涉及钱或个人数据时),只有这些特殊领域才适合我所说的“要测量三次”。任何超过三次的情况发生就意味着你在浪费你的时间(除非在鲜有的特例中,比如核反应堆、宇宙飞船、对冲基金会计系统)。
在某个特定的时间点就要停止计划,开始编码,然后再看看你的计划在哪些方面需要进行相应的调整,这一点非常重要。顺便说一下,这就是我为什么成为敏捷方法拥趸的原因之一。我所知道的最优秀的开发人员在计划不再合适或者发现计划有缺陷时,都会愿意将计划放弃掉。
没有更多推荐了,专注技术,热爱分享
一名优秀程序员具备的15个特质
  英文原文:
  编程是个很复杂的玩意,但是成就优秀程序员的很多因素和我们在学校中早期学到的相差无几。本文灵感来源于 Robert Fulghum 的《All I Really Need to Know I Learned in Kindergarten》。
  1. 分享
  尽可能地使用开源,并且如果有能力的话也可以把自己的成果分享给大家。整个社会的智慧结晶肯定比一些大公司自管自闭门造车要好。
  2. 公平的心态
  不要以为你的选择就是唯一能奏效的,试试其他技术、框架、方法和建议,也许其他的选择比你原先的好也未可知。要用开放的心态去对待任何方法和抉择。
  3. 不可攻击他人
  如第 2 条所言,不要因为别人恰巧使用的是 .Net、Java 或 PHP 这些技术就随意攻击他们(我在这方面有过教训)。有时,这些你看不上眼的技术或许要比你想象的更有用。只要你怀着一种平和的心态,你就可以从他们那里学到很多东西,殊不知,海纳百川,有容乃大。
  4. 解决自己的烂摊子
  自己的代码自己负责。永远不要指望 QA 能帮你找到所有的 bug。经常全面地测试自己的代码。
  5. 不是自己的东西不要拿
  得到许可后方可使用,偷偷用了事后再声称自己无辜是可耻的。
  6. 如果伤害了别人要说对不起
  代码审查是一个相当不错却又很少使用的主意。指导经验比你少的程序员,有助于整个团队的发展。但是切记不能公开批评他人。指导并不意味着贬低别人。在得到指导时,有的人会接受,有的人则不会。要记得有时候,从那些水平不及你的人身上,你也能学到很多东西。绝对不能门缝里看人——把人看扁了。
  7. 有备而来
  在正式开工写代码之前要先做个彻底的了解。做原型、从网上搜索实例、和其他也做这个的人讨论或者先练练手。什么都不知道就着手构建你从未尝试过或使用过的东西简直就是“自作孽不可活”。如果打一开始就有线索有思路,得到的结果可能会更好更有成效。
  8. 拿得起放得下
  不要畏惧替换、重写、重构甚至是直接删掉代码。有时候,如果碰到可留可不留的代码,直接扔掉就是了。不要对你的代码死缠烂打,不肯放手。
  9. 舒适的工作环境
  对,要想程序员能高效编程,一个好的工作环境是不可或缺的。一把舒适的椅子,一个安静的工作场所、一代高配置的电脑以及各种有助于编程的工具都应该配备齐全。经理避免一些琐事去打搅到手下的程序员。而作为一个程序员,也不必忍气吞声、给人做牛做马,如果老板对你不好,换个就是了。
  10. 保持生活的平衡——学习、思考、绘画、唱歌、跳舞、工作、玩耍,每天都应该活得丰富多彩
  我非常欣赏谷歌的工作方式,它会建议你花上 20% 的时间用来思考任何你认为值得做的事情。此外,谷歌还提供专门的休息室、游戏房和其他一些能用来放松自己的场所。因为编程是一种高强度的脑力活动,有时候你的大脑真的非常需要稍作休息。不要盲目地不管不顾自己的身体,“工作狂”绝对是不可取的生活方式。每周工作 80 小时,听上去很牛掰,但是你的工作效率肯定要打一个问号,甚至一不小心会犯个不可饶恕的小错误然后前功尽弃。
  11. 下午打个盹
  就算我们把一天 24 个小时全都用来写代码,成果也不会更多。停下来、回家、然后打个盹。很多问题都是在我回家的路上解决的。有时候,我正在开车,或者是清早一觉醒来,答案就灵机一动出现在我脑子里。
  12. 不要闭门造车
  交流对于我们相当有好处:读读博客、学学新语言和框架、讨论讨论话题、看看同行在做什么。自扫门前雪,绝对成就不了一个优秀的程序员。闭门造车型的程序员终将被时代的潮流所淘汰。
  13. . 保持好奇心。我们就像一粒粒种子,因为有着对外面世界的好奇,才能从土壤中探出头来,亲眼见证这个世界。
  每天我们都能看到有新鲜事物出现在编程世界里。带着“Why”去一探究竟。每天都学点新知识,扩宽自己的视野,刷新自己的技能,让自己跟得上时代前进的步伐。要是你觉得编程枯燥又乏味,那么也许你可以考虑换一行。
  14. 所有事物都会逐步趋向衰退灭亡,谁都无法抵抗。
  代码也会慢慢发旧直至死亡。这时候你能做的就是把它们埋葬,然后再重新写过。不要为了省钱而继续维护那些费力不讨好的代码!
  15. 还记得《雌雄大盗》这本书吗,我们学到的第一件事就是——“看”。
  如果你不自己亲自去试试,那么你永远也学不到东西。我在编程中学会的所有东西全都来自于我的亲身实践。每天早上,我会广泛浏览网站,看看我们的编程世界有什么新鲜事情发生。从 80 年代初我得到第一份工作开始,我就一直保持了这个习惯。(那个时候网络还没普及,我主要是看目录和杂志。)
  当你已经有了 5 年的工作经验,在你眼中编程其实就是小菜一碟了。
  译文链接:
没有更多推荐了,}

我要回帖

更多关于 毕业后悔做程序员 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信