程序员的自我修养:埋头做事,抬头看路

第一章 谈职业生涯

当我成为一名IT管理者时,我从更多的程序员身上看到了他们身上的一些特质对其职业生涯所产生的影响;当我开始自学设计,我又从设计大师们那里得到很多极具启发性的观点,而它们对程序员们同样具有很大的价值;而当我开始写作,每一篇文章完成后与年轻的程序员读者们进行交流的过程中,我的想法和观点又能得到进一步的完善和提升。

作为一名程序员,你也需要尝试去理解那些软件领域最本质的东西,而我的建议就是学习那些最佳实践。此外,你还需要理解在网络安全、性能调优、代码优化等各个方面的最佳实践,以使你写出更高质量的代码、做出更优秀的产品。

尝试离开你的电脑桌去与人沟通,相信我,这会给你的工作和生活带来积极的变化。我希望每个程序员都能明白工作、技术、写代码这些并不是你存在的意义,而生活才是,你需要懂得生活,并且学会生活。

持续做一件事是要你把每一件事做透、做好,而不是蜻蜓点水,浅尝辄止。

不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。

那些优秀的程序员无时无刻不在体现他们的能力,从轻松地解决技术难题,到会议上提出被一致认可的解决方案,以及他们写出的那些优雅且完善的代码,这些都让他们显得与众不同,仿佛是天生的优秀程序员。

程序员的能力来自于大量的编码实践,以及持续学习的能力和勤于思考的习惯。任何自作聪明,不懂装懂,以及投机取巧在明眼人看来都只会是东施效颦,显得如此微不足道。

我首先会过滤掉那些包含错别字,文句不通或没有逻辑性的简历,因为如果一名程序员连自己的简历都不愿意去仔细检查并完善的话,很难想象他写出来的代码质量会如何。

你需要用尽可能简练的文字来描述项目的背景,你在项目中承担的角色、参与项目的时长,你用到的技术,以及你在项目中的亮点等信息。优秀的程序员们往往善于归纳,并能够一针见血地发现问题或把一个问题说清楚。

面试者是否有良好的编码习惯,异常处理是否规范,代码逻辑是否缜密高效,以及他的开发效率是否足够高。

你的目标不应该是简单地获得一份工作或者雇佣某个人,而应该以获得更多的工作乐趣和建立更良好的工作关系为目的去看待招聘这件事,切忌不要急于求成,就像谈恋爱一样,当双方都有感觉时,一切就水到渠成了。

•人们理解你在做什么。•人们对你所做的事情感兴趣。•人们为你所做的感到兴奋和激动。

正如我经常提到的10000小时定律,那些能够在某一领域获得成功的人都需要花费至少10000小时的努力。

一名程序员如果能够尽早意识到自我营销的重要性,并有意识地锻炼和运用这种能力,那将对你的事业产生有益的帮助。

如果,你并不想仅仅是一名程序员,那么你只需要在潜意识中埋下一颗“自我营销”的种子,让它跟随着你慢慢成长,相信我,你的未来将会因此产生很大的不同。

创业大多是在一个新的领域中进行的,你不应仅仅专注于公司所使用的那些技术,而更需要通过深入理解这个新的领域,去获得不同的视角和眼光,因为它们也会在未来成为你的核心竞争力。

我们会发现那些成功的人,往往是那些有着坚定目标,并持续努力的人。

对于提高工作效率,我有以下两点建议:•加快工作节奏。•借助工具完成工作。

以谷歌、百度为代表的以技术为中心(或技术驱动型)的企业,这样的企业往往已经采用扁平化的管理方式,更推崇个人的创造能力及小团队的贡献。

爱因斯坦也曾说过:人的差别在于业余时间。特别是在当今这个竞争社会,持续学习对每一个职场人都显得尤为重要。每晚抽出两个小时,周六周日抽出4~6个小时来阅读、学习、思考或参加有意义的演讲、讨论,你会发现,坚持数月之后,你便会超过周围的人。

如果你在外企,那么英语作为一项必备技能是非常重要的。但即使你是在一家国内的企业,你仍然应该掌握英语,因为它能够帮助你获得更宽广的视野,带来更多的工作机会。

第二章 谈实践与认知

程序员们其实是依靠他们所特有的程序员思维在进行编程,而他们中的佼佼者正是那些有着更高思维成熟度的优秀程序员们。

我所体会的程序员思维更像是一种感觉,它是由常人的思维+编程思维,在长期相互作用下产生的一种思维模式。它能够帮助程序员快速找到以程序方式解决现实问题的最优解。

•长期不间断地编程实践。•持续地学习与借鉴。•学会反思,并像专家一样思考。

快速搭建出一个具备核心功能的应用原型——MVP(Most Viable Product,最小化可行产品),来验证自己的业务模型,然后再根据用户的需求和反馈来不断进行改进。记住,仅当确认文档能够产生价值时,才去编写它们。

试想当一个很好的创意出现时,你可以一个人或主导一个团队去实现并不断完善它,这是一件多么让人兴奋的事啊!

好奇心——对任何工作都抱有好奇心,并愿意不断学习和改善是那些优秀工程师的共同特性。

我要说的是,对于将持续学习作为一种生活习惯的人来说,学习新东西并不会成为一种负担,反而是一种乐趣。

我也经常鼓励身边的程序员们去编写自动化脚本,让自己从重复性的工作中解脱出来。

持续重构就是我们给系统做的保养,这对于保证系统的稳定运行非常关键。

你需要先识别这些问题,然后分步骤地逐步去解决,而每次重构时你都需要充分识别可能造成的关联影响。如果你已经为你的代码写了单元测试,那你的重构将会有很好的测试保证。

重构虽然无法直接创造业务价值,但却能显著提高系统的可维护性,所以你在重构上所投入的每一分钟,都会为未来节省更多的维护时间,这也是为什么我们需要坚持持续重构的原因。

避免过度设计:过度设计源于系统设计者没有理解用户的真正需求,而将自认为有必要的功能附加于系统之上。

除了技术之外,我更需要能够突破程序员思维,去发现用户需求背后所隐含的真正问题。我比以前变得更加务实,不再刻意追求技术的高深,而是尽可能从问题本身出发,选择最有效的技术手段去解决它。

第三章 谈个人发展

不会停止学习的脚步:认为自己不够聪明才会通过不断学习去提高自己。而一旦你停止了学习的脚步,你将无法得到那些能够让你变得更加优秀的方法和技能。

诚实地面对自己的错误非常重要,这意味着你或者你的同伴能够及时地去修复错误,而这对你、对团队、对项目都是最有益的。每一次的失败也会成为一次自我提升的良机,造成失败的原因是什么?如何有效地避免失败?通过及时反思,并果断采取措施,那些失败将成为你获得进步的最佳途径。

如果你希望变得更加优秀,那你必须具备直面失败的勇气,并学会从每一次失败中获得进步。

有很多因素会使一名程序员走向平庸,而最最直接的便是失去对编程的热情和兴趣。当一名程序员不再能够感受编程所能带来的乐趣时,编程对他来说,只是一项不得不去完成的工作,而他也将失去继续学习的动力,无法再与优秀沾边了。

唯一让我感受最深的是自己对工作变得更有把握,而带来这一变化的正是更加敏锐的觉察力,以及在不断解决问题的过程中所建立起来的信心。

专家与普通人的最大区别在于他们能真正理解和解决问题。

良好的思维习惯能够帮助我们走出平庸,然而也有两样东西能把你重新拖回到平庸之中,那就是经验和环境。

真正的专家就是那些工作在各自不同领域,有着敏锐觉察力,并能够摆脱经验和环境的束缚,不断去为大家解决问题的普通人。

“自我效能”,指的是人们对自己能够取得成功的信念。

你不应该被一时的热情冲昏头脑,应尝试着问问自己,既然我的这个想法那么好,那么为什么在那个行业(或领域)里没有人想着去做呢?是因为这个行业里没有一个人比我聪明?还是因为我想要解决的问题并非是市场的真正痛点,或者是因为实现它的成本过高,根本没有人愿意去做呢?尝试着去做更深入的市场调研,然后再决定是否开始。

在创业初期,你应该以确定自己的产品定位、核心功能、短期市场规划的目标为目的来写自己的商业计划书。

程序员们往往不愿意向人求助,这可能是因为他们太过习惯于向搜索引擎求助了吧。在创业过程中,你一定会遇到很多需要其他人帮助或参与的时候,比如,请求其他优秀人才的加入,寻求企业的赞助,拉风投,等等。主动寻求他人的帮助,能帮助你调动更多有效的资源来加速目标的实现。

那些正在做的工作以及所钻研的技术可能都不是你们存在的真正意义,只有生活才是。

应该多在生活中做学问,培养些兴趣爱好,懂得去欣赏、体验与实践“美”。

没有人天生便会欣赏,对美的感受恰恰来自于不断累积的审美经验之中。

写技术博客:在创建个人品牌的初期,很少有人会关注你,写一个技术博客会是不错的选择。

建立个人品牌对于大多数程序员来说或许还显得有些遥远,但我已经看到越来越多的程序员具备了这个意识,并落实到了具体的行动中。

当你有一个好的想法时,先别急着动手,也别直接去找那些风投顾问,而是试着把它分享给你希望一起合作的伙伴,如果你的梦想也同样能打动他们,那相信你离成功便又近了一步。

一个人即使懂得再多,也不可能知道所有的事情,即使能力再强,也不可能永远都做出正确的决定和选择。同伴的重要性有时并不在于和你一起去完成那些技术工作,而恰恰在于在一些关键的时间点上给予你意见和建议。

构建一个项目或产品就像是一场长跑,按照一定的节奏,持续地进行非常重要。

未来所有优秀的工具都应该是插件化的,程序员们不会再使用那些大而全的笨重软件,而是根据自己的需求,通过安装插件来组合出最适合的开发环境,这也能使程序员们的创造过程变得有趣而高效。

写作步骤:①确定一个要写的主题。②在网上寻找到那些能够帮助你完善观点的参考资料。③列出文章的提纲。④根据提纲完善内容。⑤反复修改,直到文章通顺易读(有时我也会找人试读,并听取他们的意见)。⑥给文章配一个好的标题。⑦发布你的文章。

你是一个逻辑和抽象思维能力比较强的人吗?•你是否愿意不断地去学习那些新的东西,并且在大多数时间内你都需要去自学。•当你遇到一些问题和困难的时候,你是否有足够的耐心和毅力去独立解决这些问题?•你是否有很强的好奇心去研究和探索那些未知的领域?

由于缺乏目的性和应用的场景,而使学习效果大打折扣。有目的性地去学习,并不断地实践是学习编程的最佳方式。
原文链接:程序员的自我修养

本作品采用《CC 协议》,转载必须注明作者和本文链接
写的不好,就当是整理下思绪吧。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!