程序员的个人性格

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

第十三章   个人性格

提要:软件开发是一个“以人的智力为加工原料”的工程活动,在开发过程中会不断的对智力和性格作研究。需要注意20/80原则,并不是最勤奋的才是最优秀的。编程的工作难以检查,是否成为高手和个人性格有关。你无法改变智力,但可以改变性格。在软件开发者的成长过程中,EQ还是占主要因素。

1. 聪明和谦逊
一个人越谦虚进步越快,承认自己的无知才会去正视和弥补自己的错误。理解程序需要通常很强的对细节把握和理解能力,这对程序员的智力有很大要求,但是很好的利用聪明要比你到底有多聪明要重要的多。有个程序员需要也需要谦虚,用谦虚去促进自己的智慧,使得自己更加聪明。这是软件开发者的两个基本素质要求,它们互相依赖促进,有时候也互相排斥,把握好自己的才智和谦虚就能更大程度提高能力。
也许某些事情很麻烦和困难,我们这时就需要使用一些方法去聪明的解决它们。比如:采用良好的程序风格便于理解、采用分解的办法使复杂问题简单化、多进行评审和测试,多和别人讨论和关注软件质量问题、尽量使用高度抽象的思维使问题一般化,提高重用率减少工作量、如果问题走进一个“死胡同”不妨和杯咖啡放松情绪,或和别人交谈交流观点,这是解决钻牛角尖的好方法。
2. 好奇心
一旦你认为自己理解程序的能力是有限的,而且你意识到,进行有效编程是补偿自己能力的方法时,你就开始了你职业生涯中漫长的探索过程。对技术的好奇很重要,否则你将在知识爆炸的时代迅速落伍。别在忙碌的工作或琐事中,失去了对学术,自然和生活的好奇心和激情。我们可以在:
1 开发过程中建立自我意识。通过在开发中有意识的可以使用进行新技能的锻炼,多对开发工程进行观察,和学习其他解决方法,这样就对整个项目有很强的把握能力,甚至可以带领整个团队走向更好的方向。如果你现在做的是市场前景很好的工作,那也意味着工作中的某些技术可能会很快被淘汰,注意保持好奇心和创造力。
2 实验。了解编程的一个有效方法就是对编程和开发过程做实验。你可以编写一个程序并观察它是如何工作的,调试器里跟踪程序的执行把握它的特性。用个小程序去检验一个不太了解的概念,这对增进理解有非常大的帮助。或者用一个短程序,去试图制造一些错误,通过错误去学习。错误不是罪过,没有从错误中学到什么那才是罪过。
3 阅读解决问题的有关方法。解决问题是软件开发过程核心的活动。一个奇怪的现象:人们通常不能从自己面临的问题找出解决的方法,即使这个方法很简单。
4 行动前先做好分析和设计。尽管实践和分析设计过程有很大的矛盾,但是好的分析会避免让你过早走向一个错误的方向,好的设计可以避免混乱。
5 学习成功或失败项目的开发经验。学习编程的好方法是向一些优秀的程序员学习。应该要注重项目的战略思想,把握项目中解决关键难点的战术。任何成熟的科学,都是通过解决问题发展起来的。这些问题通常被看一些被良好解决的例子,并可为将来工作做指导。(这可能也是目前很多公司注重工作经验的原因吧?)我们应该努力对别人工作存在的问题做研究,学习别人的无论成败的解决办法都是很有意义的。多拿自己的代码和比你优秀人的代码做比较,看看你们间有什么异同?为什么会有这样的差异?谁的更好?为什么?也要多让自己的代码让别人评价,这样可以提高自己的程序质量。
6 阅读手册,书籍和期刊。手册中往往对带有些可以直接调用的子程序,这对我们研究和解决具体问题有很大帮助。书籍中往往是介绍系统理论,多阅读可以提高专业能力;期刊中常常包含着流行的技术和观点可以开阔眼界。
3. 诚实
编程生涯成熟的部分标志是坚持诚实。通常是:不假装自己是高手、乐于承认错误、尊重编译器的警告、对程序有清晰的了解,而不是编译看其是否有错、提高实际状态报告、提供实际方案评估,在上级面前坚持自己的意见。你最好假装自己知之甚少,听别人的解释,向他们学习,并且评估他们是否了解其正在讨论的东西:)
你应该对自己能力做某种程度评估,认为自己完美是一个不妙的信号。错误正如潮流一样是一个复杂的活动,如果你过去没犯过错误,那么没有人会将错误归咎于你。所以正视自己的错误。当你并不了解程序时,编译运行并不是解决问题的方法。测试是证明错误的存在,而不是保证没有错误。如果不能深入理解程序,就不能深入测试。依据事实给出准确的状态报告,不能欺骗自己和别人,这是充分合作的前提。不能因为压力而否定符合规律的做法——这个项目需要10人月,要用5人月完成除非降低性能或其他做法——准确的向上司说明情况。
4. 交流与合作
真正优秀的程序员应学会怎样和别人工作和娱乐。真正阅读你写出的程序是人,而不是给计算机——注意代码的可读性。绝多数高水平的程序员坚持自己代码的可读性,并抽出充足时间这么做。对程序员能力的界定标准:
1 初学者
是能使用一种语言基本能力的程序员,他能使用子程序、循环、条件语句或其他许多语言特征。
        2 中间者
            有使用许多语言的能力,并且至少非常熟悉某一种语言。
        3 专家
            对其语言或环境或这二者有很深的造诣。这种级别的程序员对公司是有价值的,而且有些程序员往往就停留在这个水平上。
        4 大师
            有着专家那样的专业知识,并且意识到编程只是15%和计算机交流,其余85%是和人打交道。一般程序员只有30%时间或更少。而且大师注重给人看的清晰易懂的代码,并注意建立有关文档。
            不强调可读性的高水平代码者可能停留在级别3上面。并且根据经验,编写不可读代码的主要原因是:代码质量差或是编写者自己并不能完整地理解自己的代码。当你知道自己的水平后,不必内疚和自愧。在你知道如何提高水平后,你倒应该为自己停留在初学者或专家水平上有多长时间而内疚。
5. 创造力和纪律
虽然一些有创造力的程序员将各种标准和约定视为对其创造力的阻碍,但是没有这些约束项目实现是不可能的。不要在无关紧要的领域建立约定,应该在值得的地方发挥你的创造力。一个杰出的程序员需要遵守许多规则。如果编码之前不分析需求就设计,那么你就学不到项目的许多东西,那样工作就像小孩画画而不是艺术品。
6.  懒惰
懒惰的三种形式:1 拖延自己讨厌的工作 2 迅速解决讨厌的任务以摆脱任务 3 写一个工具来完成讨厌的工作解脱自己。当你不是透过玻璃看问题的时候,你就看到了懒惰的另一方面。“赶着做”是一种多余和没有必要的“努力”。有效的工作最重要的现象是人们在思考种往往显得冷静而不忙。一个一直很忙碌的程序员不是好程序员,因为他并不是在使用对于他来说最有价值的工具和头脑。
7.  并不是你想象中起作用的性格
坚持:这是一笔财富也是不利的条件。你可以称它为顽固或者坚强,这完全取决于应用它的场合。在多数情况下,软件开发的“坚持”就是顽固的意思!当你遇到新问题时候,你再固执己见并不是好事。你应该迅速适应它,或原方案并不起作用时,学会用另一种解决方法。调试中,当你发现一个困扰你4个小时之久的错误时,你一定感到非常满意。但是实际上,如果你在一段时间——通常为15分钟没有取得任何进展时,你应该放弃找错。用你的潜意识去思考问题,尝试用别的方法解决问题,甚至重写厌烦的代码段。和计算机错误做斗争时不明智的,你应该尽量避免它们。知道在时候需要放弃时困难的,但是必须面对一个问题:当你觉得自己受挫折时,是否考虑尝试其他不同的方法。
        经验:过于依赖经验会导致知识的落伍。今天的经验必须为明天的工作服务。如果不在过去经验中去归纳总结出一些有价值的原则或规律并改变自己去适应它们,那么经验也将一文不值。如果你的经验还是停留在上一次战斗而不是下一次,也不因时间做出应变,那么经验更像是一个阻碍。此外,错误的经验往往得不到客观的评价。错误的经验可以让你得出重要的不同结论,学习其他人的错误经验是一个好方法——你更可以对它做客观的检查。其他领域有成功经验的专业人员往往使人放心,而在软件开发中,知识更新迅速使得此领域中“经验”处于一个奇怪的地位。为了使自己有所价值,你必须紧跟潮流,对于年轻求知欲旺盛的程序员在这点有优势,而有些年老的程序员认为自己有所资格而厌倦一年接一年都要证实自己的能力。如果你已工作了10年,你得到了10年的经验未必是真正的经验——你如果坚持不断地学习,你就能得到经验,但如果你并不想学到什么,不管多少年你也学不到什么。
编程狂:如果你还没有至少在一个相同的项目上花费一个月的时间——一天工作 16 个小时;为了发现你的程序中最后一个错误睡眠中你也念念不忘它,你接连几天没日没夜地工作——即使你所编的程序并不复杂,那么你可能不会意识到编程中有某种令人兴奋的东西。                              Edward Yourdon
这种对编程的痴迷纯粹是胡闹,并且几乎注定要失败。但是那些通宵程序员使你觉得他们是世界上最好的程序员,但是随后你不得不花费几周的时间来修正你在这短时间的辉煌中所带来的错误,你可能对编程非常热爱,但是你应能冷静地处理这个问题。
8.  习惯
好的习惯起作用是由于你为一个程序员所作的大部分事情是你在无意识中所完成的。成为某方面好的或差的程序员,主要是靠你自己的所作所为。你所作所为习惯,决定了你的编程品行。最终,你的习惯好坏决定了你是否能成为一位好的程序员。当你开始学习某一件事时,你应按正确的方式学好它。当你开始学时,你已对其进行了思考,并且你可在正确或错误的途径间作出轻易的选择。在你作过一段时间后,你对你所作的不太注意,此时“习惯的力量”会开始起作用。确保起作用的习惯是你所希望的。
小节

􀁹 你的个人性格直接影响你编写计算机程序的能力。
􀁹 最有明显作用的性格为:谦虚、好奇心、诚实、创造性和纪律,还有文明的“懒惰”。
􀁹 高级程序员的发展和生成与天才并无多大联系,任何事情都和个人的发展有关。
􀁹 令人吃惊的是,小聪明、经验、坚持和欲望既可帮助你也能妨碍你。
􀁹 许多程序员不主动去吸收新信息和新技术,而是靠偶然地上获得一些新信息,如果你
抽出少量时间学习别人的编程经验,过一段时间后,你将在你的同行中脱颖而出。
􀁹 好的性格对养成良好习惯有很大影响。为了成为一位高水平的程序员,你应养成良好
的习惯,其余的就会随之而来。

程序员性格 程序员性格 一,聪明和谦虚。 二,有求知欲。      方法:      1,在编程中能建立自我意识。      2,试验。      3,阅读解决问题的有关方法。      4,在行动之前做分析和计划。      5,阅读文档。      6,学习一 阅读详情

相关推荐

程序员个人性格——读书笔记

个人性格 提要:软件开发是一个“以人的智力为加工原料”的工程活动,在开发过程中会不断的对智力和性格作研究。需要注意20/80原则,并不是最勤奋的才是最优秀的。编程工作难以检查,是否成为高手和个人性格有关。你无法改变智力,但可以改变性格。在软件开发者的成长过程中,EQ还是占主要因素。 1.        聪明和谦逊一个人越谦虚进步越快,承认自己的无知才会去正视和弥补自己的错误。

ZhangYv的专栏 1937

个人性格与出色程序员的那点青春事

个人性格与出色程序员的那点青春事     编程过程非常耗用脑力,这种特性使得个人性格显得很重要。人们都知道聚精会神地一天工作八小时有多么困难!也许你有过某天精力过分集中,以至于第二天无精打采的体会,或由于上月过分投入而本月没有一点精神。你可能某天从上午8点工作到下午3点,就感到累得不行了。但你还是坚持下来,又从下午3点拼命干到6点。之后的一周时间,你却在修改这三小时写出来的东西。

ZYallers 935

读《代码大全2》之程序员个人性格

        代码大全是我的床头书,读起来非常有感觉。就跟高中的时候读金庸的小说一样,每读一遍都有感觉。一个优秀的程序员需要怎样的性格呢,需要很高的智商吗,很多与我们以前想的恰恰相反。 聪明和谦虚(Intelligence and humility)。高智商和优秀的程序员关系很密切吗?二者其实并无太密切的关系。大部分的编程工作都旨在弥补我们有限的智力。精通编程的人是那些了解自己头脑

syspro的专栏 1224

程序员性格是怎么产生的?

程序员性格是怎么产生的?

pennyliang的专栏 9703

35岁PHP程序员为什么会过于内向?底层原理是什么?

社会互动减少(Reduced Social Interaction):长期缺乏面对面的社交互动可能导致个体变得更加内向。气质理论(Temperament Theory):人的性格特质在很大程度上是由遗传和早期环境共同塑造的。社会焦虑症(Social Anxiety Disorder):一种常见的心理健康问题,表现为对社交情境的强烈恐惧和回避行为。条件反射(Conditioning):某些行为或情境可能会因为过去的不良体验而形成负面的情感关联。成长停滞(Stagnation of Growth)

长风破浪会有时的博客 1019

纠结,如何改变内向的性格

我是一程序员,一个做技术的人。正如别人所说,做技术的不怎么爱交谈,其实我就是。但是并不是所有做技术的都这样,根本原因是与自己的性格有关,并不是一个职业病。 先说说我吧,我从性格上来说算是一个性格内向,文静的人。这种性格的人大家也知道,不爱和别人说话,公共场合总是沉默,遇到人总是对方先打招呼。俗话说“江山易改,本性难移”,果然如此,一个人最难改变的就是自己的性格。从小就知道内向不是一个很好的性...

java-t-go 223

关于程序猿性格的文章

软件开发中人们很少注意个人性格问题。自从 1965年Edsger Dijkstra的有里程碑意义的文章“程序开发是一种人类活动”发表以来,程序员性格被认为是合理的和有成效的研究领域,虽然有些题目如“大桥建筑者的心理”和“对律师行为的研究实验”看起来可能是荒唐的,而在计算机领域,“计算机编程中的心理”和“对程序员行为的研究实验”等题目则是常见的。   每个领域的工程人员都知道工具和他们所用

u014173371的专栏 407

[转载] 一篇关于程序员性格的文章

件开发中人们很少注意个人性格问题。自从 1965年Edsger Dijkstra的有里程碑意义的文章“程序开发是一种人类活动”发表以来,程序员性格被认为是合理的和有成效的研究领域,虽然有些题目如“大桥建筑者的心理”和“对律师行为的研究实验”看起来可能是荒唐的,而在计算机领域,“计算机编程中的心理”和“对程序员行为的研究实验”等题目则是常见的。 每个领域的...

aiqixiao2017的博客 190

程序员编程编程程序员

<br />1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)  <br /><br />2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)  <br /><br />3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)  <br /><br />4、当程序员决不是什

MumBabyHong的专栏 1370

它才是程序员开启社交和打造影响力的最佳方式

loonggg读完需要2分钟速读仅需 1 分钟大家好,我是你们的校长,今天我想跟大家聊一聊程序员开启社交和打造影响力的最佳方式。对于性格内向的人来讲,尤其是我们做技术出身的程序员,不擅于...

非著名程序员 417
上一篇: XML中多个参数(链接)组合方法
下一篇: [乱七八糟][经典收藏]全套人民幣共81張
bgu
bgu
博客等级 码龄24年 14粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值