最近想喝鸡汤。(复制可搜索到原文,搜索不到的就是我写的)
写三次代码
好的程序员目标是写出可以运行的软件就可以了。伟大的程序员写出来的软件目标是运行得非常好。通过一次编写这种情况几乎不可能发生。最好的软件通常被写三次:
- 首先,编写软件以向你自己(或客户)证明解决方案是可行的。其他人可能没有意识到这只是一个概念验证,但你确实这么做了。
- 第二次可以让它正常地运行。
- 第三次你能够让它平稳的运行。
抛弃之前的代码并开始编写另一个版本是一种强大的方式,可以将“更好地”融入到您的个人工作流程中。
如果没有其他情况,通过“写三次代码”可以告诉你解决问题的方法有多少种。而且它可以防止你陷入停滞不前的状态。
不要试图证明自己是正确的
真正优秀的程序员会积极地寻找他们的错误在哪里,因为他们知道最终用户会发现这些遗漏的bug。
10年编程
思考性的实践是关键:不要只是一遍又一遍地做,而是要用超出你现有能力的任务挑战自己,尝试它,在你做的时候和做完之后分析自己的表现,并纠正错误。
编程成功
编程。最好的学习方式是边做边学。用更技术化的说法就是,“对于个人,在给定领域中最高层次的表现,不会因为经验的增加而自动获得,但是性能水平可以由于经验丰富的个人改善有意识的努力而增加。(p366)” 还有,“最有效的学习需要明确的任务,针对特定个体的适当难度水平,信息反馈,以及重复和改正错误的机会。” (p20-21)。对于这个观点,可以参考《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》这本书。
与其他程序员交谈;阅读其他程序。这比任何书本和训练课程都更重要。
在其他程序员之后接手项目。理解别人写的程序。知道如何理解和修复程序,当初始程序员不在身边的时候。思考如何设计你的程序使其更容易在你之后被人维护。
有良好的意识能够尽可能快的脱离语言标准化工作。
寻找优秀的软件设计师
系统化地尽早识别顶级的设计师。
分配职业导师负责未来的成长,并认真保存其职业文档。
为设计师的互动和相互促进成长提供机会。
无畏
正如Auguste Gusteau(《Ratatouille》电影中的虚构厨师)所说的那样,“任何人都可以做饭,但只有无畏者才能成就伟大。”我觉得这里的无畏更像是愿意奉献自己生活中很大的一部分时间到思考实践中的意思。可能无畏是对此的总结。
开发业余项目
关于业余项目的开发我必须强调下,这是每个程序员应该要有的东西。至少每年都有有一个,如果没完成的话不算数。你可以在自己的项目中展现所有从阅读,社区,导师反馈中学习到的各种知识。你不可能将前东家工作项目中的代码放到 Github 上开源,所以你需要提取业务中的一些库和方法并发布开源项目让大家了解你做了什么。
接手新项目
- 遇事追踪溯源,不要怕改已有的代码
- 编码在保证正确的前提下,要足够快
- 主动承接团队里他人不愿意做或者没做的事
加入新团队、新项目组
- 做事要知其然并知其所以然
- 努力建立起严谨高效的形象
- 成为让团队变的更好的人
开发团队
成为一个好的开发者和团队成员比学习编程需要了解更多。你的技术水平会随着工作经验的增加而提高,然而如果你不注意投入时间提高你的软技能,最后就会成为你职业生涯里的瓶颈,你甚至都没有意识到这点。
拒绝不健康的团队文化
这点我怎么强调也不过分,我看过很多人吐槽他们团队文化好几年,我的问题总是“那你做了些什么?”。
对于不健康的团队文化你应该勇敢的抗争,如果你看到某人的行为不对不要害怕提出来。提出建议就像平常的交流和代码的管理一样。
我对这件事的观点很简单:
如果我看见某些我不喜欢的事,我会在团队里提出来。否则团队会变得越来越糟,如果这样我就走人
既然你反正最后都会走,那为什么害怕提出来并且抗争?
很多人会害怕讲出来,尤其是少数派(黑人?)或者内向型的人。通常这样的人连谢谢都是私下过来对你说。
场景应该是这样的:
每个人都是平等的,确保每个人都可以自由表达他的观点,即使这些人很害羞
当一个人被意外打断的时候,保证他的观点可以继续说完,比如“老王,你接着刚才的话继续说”
因为我们的目标是改变世界
好的代码并不是我们工作的真正目标。老板雇佣我们是为了他们业务解决遇到的特定问题,也许是一个 APP 或者其他什么软件,不是为了让你写出优美的代码。交付好的产品才是最重要的。
你需要投入时间去理解业务需求,只有了解了需求后才能做出适合的选择,聚焦在真正重要的部分。
技术团队
花时间学习如何融入一个团队,这会让你的职业生涯产生巨大的飞跃。
以身作则,如果你:
- 空闲时主动去解决遗留问题
- 总是尝试改善架构和工具链
- 指导他人,自愿去做结对编程或者帮助他人解决问题
- 给出空间让每个人表达他们的观点并且进行讨论
- 公平对待每个参与者
你的同事就会越来越尊敬你,同时你也会对团队文化产生影响。
成为其他开发者的导师,指导其他开发者是非常有益的一件事,同时也可以培养正确的团队文化。
我希望团队里所有成员都可以对我放心的提问。也许是某个工作应该怎么做或者质疑我的决定。
应当鼓励成员遇到困难寻求帮助或者遇到困难时寻求建议。
拥抱变化
应该要拥抱变化,强迫自己挑战原有的假设,这样会让你少忽视其他的技术流派。总是有其他可能存在。
我会经常做业余项目,并且我有一条规则:每半年都要尝试不同的方式实现。
需要注意的是改变是有难度的也需要时间。尝试一段时间后坚持下去不要放弃。
健身的开发者
能够坚持健身的人一定是一个自律的人,自然也会是对自己有一定要求的人,至少从身型来看是如此。
自律的开发者
自律其实也体现在穿衣打扮上。邋里邋遢的人不可能是一个自律的人。每天精心穿衣打扮也是耗时耗力的事情。
长期的开发者
用时间投资到理财、阅读、写作、健身。
不同的开发者
当我看到了不同的生命状态,看到她们热情洋溢的生活,我意识到,我也可以有这样的生活。
著名的开发者
其实,能力越大,责任越大。越有钱,越有能力的人,反而会有更多的约束。当然,他们所拥有的自由,跟普通人的自由也是不同的。他们有能力去世界各地,约见最优秀的人。这是我最羡慕的。
极致的开发者
事事做得认真极致。
有趣的开发者
她认识很有优秀的人。与她聊天,一点都不会觉得无聊,因为她遇见过各种有趣的事情,有趣的人。
有钱的开发者
当真正与有钱人相处之后,才发现他们吃得很健康,几乎不吃垃圾食品。每一次,她都只点了沙拉。她还是只点了一份沙拉。她还是点了沙拉。
优秀的开发者
成甲在《好好学习》的书中有讲到自己的经历,一开始他遇到比自己优秀的人会刻意躲避,后来他想明白,优秀的人应该比普通人更加谦逊,更容易接近。
iOS 维护项目
程序视界 foruok
你可能很善于做技术探索,很善于架构设计,精于某类算法……我们得客观评价自己,知道自己的长处在哪里,努力把自己放到能发挥自己长处的项目中去。
iOS 技术理想
《一个老码农的技术理想》徐飞
工程师:用技术手段改进世界。
-
要想很好地应对需求变更,很重要的一点就是不要有这个软件一定不会改的想法,然后,从架构上做拆分,隔离,组件化等等,力争做到即使要改,也只改某一块的内部,不影响别的地方。
很多软件公司,一方面不注重架构的设计与宣贯,导致变更的时候问题多多,程序员也不能很好领会架构意图,一方面忽视整个过程中对架构的管控,认为架构只是最初那张静态图。
任何一种架构方案,都需要一个良好的管控机制。没有哪个盖大楼的只认真管设计图纸,不控制施工过程。架构其实是跟施工过程严格相关的,架构并不是一张扁平的图,而是一个立体的东西,作为整个系统工程的骨架。如果能在开发的时候看到这个骨架逐渐建立,血肉充盈的过程,对整个系统的成功把握一定会大得多,这也就是开发过程中架构管控的理念,具体实现要依赖于不同场景。所以,将来的软件开发方案,一定是会朝着几个方向发展:- 高生产力,单位时间生产效率更高,普通人员也可以参与
- 高可控性,整个生产过程更加完备可靠
有时候看现在的小孩子,会觉得他们很幸福,因为等他们这代长大,就不需要像我们现在这样编写程序了,那时候,编程已经成了一种令人习以为常的通用技能,就像现在的人用Office软件一样,所谓的编程,很可能已经不需要敲代码了,而是图形化,设置几个参数就完事了。
iOS 架构师
《一位五年工作经验架构师的感悟》技术之家
每个架构师都是独立无二的,每个架构师都应该有自己的情怀,这些情怀是你的世界观。
平台能力这些体系思路。一致性hash。
我肯定也知道没过,然后我就请教面试官,需要提升的地方,学哪方面的内容。
于是我去学...,一个月过去了。
但是面试官,拿着面试题就和我聊了,然后讲到一个数据库方面的知识时(内连接,外连接),我说不知道。面试官说:这么基础的问题你都不会,这是不能容忍的,其实当时很伤心。
光头看了下面试题,然后就问了一个技术问题:"什么是架构",虽然当时听过架构,但是按照我当时的理解,说不清这个概念,我现在也不一定说清这个概念。第二个问题就是:你愿意做外包么?我回答不愿意。
最后女HR和光头说,你等一等,我们合计合计。合计的结果就是,我进来了,进来的不容易。可能还多亏当年扩招。现在我们面试的时候,我们也经常说:要是按照现在的面试要求,那么我肯定进不来。
现在是什么要求呢?
脚踏实地,如饥似渴,积少成多。
于是进入了支付宝,支付宝好复杂。有很多东西给我学。
光头老大给有次问我:你的学...计划是什么呢?
我说:我要把支付宝的所有框架,业务都学...一遍(真不知天高地厚)
老大说:你学的完吗?
我说:我看了下确实很多,有100多个系统,很多业务概念。
老大说:不要好高骛远,我建议你结合当前的工作,一步步学...,以点带面。
刚进公司的时候,我不是很有自信,因为知道自己技术可能比很多大牛差距很大。同时,自己也是一个不太会表达的人(原来的老大也说过,我的软能力不行),整体上在初期感觉相对较闷。
日常工作就会把自己占得很满,怎么去学...?我的技术不行,就想去学代码,框架,支付宝的代码全部是开源的,所以我可以很简单通过eclipse直接查看框架的源码,渐渐的,比很多人都了解框架,了解技术。我还会去逛公司的论坛、公司的doc,这上面有框架设计相关的内容。所以,很多时候机会是很多的,关键是你想不想去去。
所以,不要好高骛远,脚踏实地,时刻保持饥饿感,积少成多。
开放心态,视野决定格局。
12年妻子怀孕,于是转岗回了成都,成都是个远离核心的待发展的技术部,当时人就20,30号人吧。
回去后,由于原来是在杭州负责核心A1系统,大家都还挺羡慕,都还挺给面子的。所以,变得越来越自信。
当你自信后,同样你会越来越勇敢,越来越开放。当时,也看了些敏捷的书,虽然从来没有完整的看完一本敏捷的书,现在我对敏捷也是半懂不懂,依然很讨厌职业的咨询师,喊喊口号,比如TDD,说实话,我就很难看到TDD的模式,在如此复杂的业务系统成功过。
当时对于敏捷最深刻的一点就是:反馈环。怎么去利用反馈坏不断是提升自己,自己缩短反馈坏,让自己成长的更快。
回成都后,我变得更为开放,这种开放,让我收获更多,在交流,不断的学……中,成长更快。从一个基本是完成任务型的技术人员,渐渐去思考更全局,更开放性的内容。
成都远离核心,生存不易,这些经历同样丰富了我,内心也变得越来越强大。这些年影响我最大的一些思想有:
- 不要给自己设限:不在把自己禁锢在舒适区,不要怕前面有挡着你的人
- 缩小自己的反馈环:
- 不断以小的正能量,不断积累成就感。
- 不要怕做决定:错误的决定,比没有决定好。
渐渐地,我从不说的人,变成了比较能说的人,能说可能还不是会说。会说更考验技巧,情商。
渐渐地,周围的人又说我是段子手。
渐渐地,变成了一个经常黑人的人。哈哈。
不断去思考,总结,提炼做事模式,思考方式,这些方式可以指导你持续成功。
视野,越大,收获越多,站在全局去看问题,这也是一个架构师需要的。
所以,保持开放心态,视野决定格局,格局改变命运。
架构无处不在,你怎么架构自己的未来。
感谢这些年帮助我的人。
感谢我的家人,对我的容忍。其实说:五年了,媳妇都熬成老婆婆了。但是我想说:五年了,你还是你,我还是我,你还是我老婆,我还是你老公,这些没有变。