最近一个月都在在大厂华为出差跟进项目,工作一直是996或者997,所以最近一个月没怎么更新文章。
周末抽点时间,争取把耽误的,想写的文章尽快补上。
我本身做开发很多年,也算是一个资深的程序员。同时工作中也接触了很多的程序员,有优秀的,也有平庸的,接触下来,发现但凡优秀的程序员,都有很多优秀的通用特质。
所以想写一个系列的文章,讲讲程序员的进阶之路。
本篇是第一篇,本篇文章主要从程序员的思维模式和心态来讲述初级程序员的进阶之道。如果你想成为一个优秀的程序员,可以参考其中对你有价值的东西。为啥把思维模式和心态放到首篇呢,因为我觉得思维模式和心态是决定一个人成长最主要的因素。
闭环思维
闭环思维体现了一个人的责任心和职业素养。你接受到一个任务,不只是完成代码这么简单。而是需要推进整个任务的最终完成。比如你完成了任务,应该转测,并主动给测试人员留下测试方案。
遇到一些开发能力还算不错程序员,但是在闭环思维方面很差。很多时候就是完成了代码编写,就溜之大吉。不对基本的结果负责,甚至不做基本的自我测试或者单元测试。
领导交给你任务,你完成了,或者阶段性完成了,需要主动向领导汇报,或者定期写进度报告,或者在管理系统提交你的进度报告,这也是闭合思维的一个体现。也是靠谱的一种表现。
实际工作中,遇到的各种麻烦可能远远超过你的预期。你会遇到很多人,很多公司,很多项目。其中遇到的问题,林林总总。很多时候难题可能不是技术本身层面的,还涉及到不同的流程协调层面的。
有的时候,除了完成自己手上的工作,你还的去驱动和其他人的集成对接工作。比如有的大型项目,涉及到多个部门甚至多个公司的研发团队。此时的各种对接流程未必那么完善和自动化,这个时候闭合思维显得尤为重要。
比如A部门(公司)负责前端部分,B部门(公司)负责后端部分。前端开发完成了,就得主动去驱动前端和后端的集成和对接;并且要主动驱动后续的测试。而不是开发完成了,然后以甩手不管,领导或者客户来咨询的时候,却一脸无辜的说:已经开发完成了呀。
总之,所谓的闭环思维就是,对最终结果负责。就是尽最大努力,得到领导和客户想要的结果。
不要逃避难点
遇到困难时的态度,决定了你技术之路的高度。
遇到一些还算聪明的人,平时开发的时候,技术都还不错,开发效率和质量也还可以。但是一旦遇到技术难题,就会选择逃避。这其实是放弃了提升自己的机会。
你遇到难题的时候,说明你已经在某个方面开始深入了,此时如果你坚持下去,不要放弃难点,就会真正的深入。只要你坚持,你的思维能力和某个方面的专业性一定会大大的提高。等你上升一个台阶之后,再回过头来看你曾经觉得难的问题,就会发现已经变得简单。
怕的就是你泛泛的学,都不深入。遇到难题就逃避,这样你永远都可能在门槛外面。
说一句鸡汤的话就是:遇到了坑就绕过,你的人生就全是坑。遇到坑你就去填坑,你的人生路可能会越来越平顺。
说说我的经验,我一般遇到难题,如果暂时不能解决。我就会把它加入到TODO List,同时在脑中把它加入到ToThink List(待思考的问题列表)。只要空闲的时候,我就会投入时间来思索。有很多问题,我都是在上下班的路上想出来的。比如 大数据量绘制,2.5D解决方案等(后续我可能会写一篇2.5D诞生录的文章)。
要相信绝大多数你遇到难题,只要你对其抱有热情,不放弃,不断的思索,相信就总有找到解决方案的时候。
这世上没有举手可得的星辰,也没有一蹴而就的成就。
上面提到了一个词:”热情“。 经过这么多年的研发生涯,我发现,一个人能达到的高度,与智商、天赋的关系其实没有人们想象的那么大,决定因素反而是对一件事情的持续的热情,信心和决心。 这一点我愿和大家共勉之。
不要抱怨
养成抱怨的习惯很有害。complain makes you weak。抱怨和情绪不能解决任何问题,只能让你变弱。抱怨浪费你的时间,情绪消耗你的能量,并让你不能正视问题。
有的人偶尔抱怨一下,还可以理解,毕竟我们很多人都是普通人,当然你可以挑战自己,永远不抱怨,不过难度很大,在此并不想灌永不抱怨的鸡汤。但是如果抱怨多了,而且不能够及时调整自己的心态改变自己,让抱怨成了一种习惯性的大脑反馈,那么你就会变得让人讨厌,当然也不会得到上司的喜欢。从我个人的角度来说,如果一个员工偶尔向我抱怨,我可以接受,并且认同其中的一些倾诉,理解一些客观的困难和不公平,并想办法去消除这些客观的因素。但是如果一个员工就某个事情,总是抱怨,或者说习惯性抱怨,我一定认为就是这个员工自己的问题。
抱怨是一种情绪,而且是一种有害的负面情绪。管理不好自己的情绪,就一定管理不好自己的工作。管理不好自己的负面情绪,就一定管理不好自己的工作,是一个人不成熟的表现,绝不会被提拔重用,这是很多上司的共识。因此要想树立自己成熟,稳重和值得信赖的个人形象,就要从避免个人情绪化外露开始着手。
当你想要抱怨的时候,冷静下来,问问自己,抱怨可以最终解决问题吗。 如果是答案是NO,那么请放下抱怨。积极面对问题和不公平,事实上当你放弃抱怨,做出积极的努力的时候,你会发现你的大脑会更加快乐,而且在你积极面对的时候,一定会给你自己带来提升。
学会say no的正确姿势
我不会给大家灌输 never say no的鸡汤。 因为有的事情,在有限的条件下,确实是没法达成结果的。
但是,大家还是要养成正确的say no的姿势。先看看什么样的姿势是错误的,以下是常见的错误姿势:
”这个方案技术没法实现“,恩,技术没法实现,多么熟悉的声音。
”这个时间点肯定不能交付“,恩,确实没法交付,我们都懂。
”对不起,你的需求超纲了,不做“。如果你做过项目,就会懂得客户的需求就没有不超纲的,各种条款限制都没有用的。
上面的所有的say no,问题在于,都是直接否定,态度太过强硬,完全没有商量的余地。 这一定会让产品经理,或者领导,或者客户很不爽。
那么以上问题,正确的say no姿势是怎么样的呢?
第一条,这个方案技术没法实现。stop,先停止你的习惯性拒绝吧。首先想一想,真的是没法实现吗。或许你不用一种轻易拒绝的心态,积极思考,就能想到好的实现方式。此时你不需要say no。
还是没想到实现方法?或许并不是不可以实现,只是你不知道如何实现,或者应该说,是你暂时不知道如何实现。这个时候你的say no 应该是:
”这个方案我暂时还没有想到解决方案,我需要下去研究一下,所以我还不确定是否可以实现“ 这儿的关键就在于,你没有直接拒绝对方(可能是产品经理,领导或者客户),会让对方觉得舒服很多;同时,你也没有拒绝掉你自己的成长之路,因为你真的应该下来好好摸索一番。在笔者看来,很多不能实现的问题,绝大多数时间是可以找到解决方案的。
如果最终发现确实没法实现,但是你经过了前面的探索,也可以说明白真正的理由是什么,真正的困难点在哪里。同时,你可以提出变通的方案为最佳。
第二条,”这个时间点没法交付“。确实,时间太紧,没法交付。但是态度还是太生硬。对方也未必了解真正的工作量,你此时最好是列出工作量,并说明能够交付的部分。相信大部分人都会做出妥协和退让,并不会死抠不放。
第三条,”对不起,你的需求超纲了,不做“。恩,理解你,前面就说了,客户(产品经理)的需求就没有不超纲的。 但是,你如果直接说不做,会让客户很难看。结果就是可能在后面的交付给你制造麻烦。事实上,你应该仔细去了解和倾听客户需求,了解客户的真正的需求和痛点所在。如果真的存在痛点,而工作量不太大的情况下,就请帮忙改了吧。如果工作量太大,可以考虑让公司有关部门协商,有偿增加需求。请珍惜客户的痛点,因为这是你的价值机会。
可能还会有其他的情况,总之,say no的态度不能太硬。另外,确实不要轻易直接拒绝,多研究研究再说。更不能养成惯性say no的习惯,在我看来,习惯性say no就把say no变成了你懒惰或者无能的借口。
技术自信力
我从事开发工作10多年,期间也做出了一丁点业绩。如果说这些年开发工作,对我带来了什么改变的话,我想有一个很重要的点,就是技术自信力。什么叫技术自信力,这其实我自己创造的一个词。啥意思呢,我相信技术能够解决99.9的需求,只要你愿意去钻研和研究,这就是技术自信力。当然不是盲目自信,类似让你造火箭这样的需求,你应该还是需要有自知之明。问题是,很多时候,不会真有这种需求吧。这也是前面一条所强调的,不要轻易say no的原因。
希望每个程序员都有这种技术自信力。
最近读了心理学家卡罗尔·德韦克的经典作品《终身成长》。里面说到了人的两种思维模式,成长性思维模式和固定性思维模式。固定型思维模式中,成功来源于事情的结果,能够证明自己的天赋和能力。而成长型思维模式中,成功来源于尽自己最大努力做事,来源于学习和自我提高。
建议有兴趣的读者,可以去读一读这本书,很有启发。
如果你是一个拥有技术自信力的程序员,说明你是成长性思维模式。这种思维模式将终身影响你的成长。
重视思考
孔圣人都说过,学而不思则罔,思而不学则殆。一个不愿意思考的程序员是没有前途的。不论你多么的忙,都需要留下时间思考。 因为思考可以让你在纷繁琐碎的日常工作中,找到自己成长上升的阶梯。
有这么一句话,不要用战术上的努力,掩盖战略上的懒惰。 懒于思考,其实就是战略上的懒惰, 勤于思考,就是一种战略上的努力。
对于程序员来说,可以有很多思考的东西。
比如对于已经做过的东西,进行复盘,可以思考哪些地方我们做的好,哪些地方我们可以改进,应该如何改进。工具、效率、代码质量和规范。
对于我们暂时没有做出来的东西,不断反思,应该如何才能做到。
做的项目多了,写的代码多了,我们可以考虑归纳,总结,提取有价值的东西。把常用的功能封装成工具库,工具函数。进而提高我们的工作效率,也是一个沉淀的过程。
把类似的东西,经过抽象,形成更加通用的产品。事实上,很多著名的开源库/框架,相信都是通过抽象加工,开发出来的。
还有就是,能否对于一些问题,思索出一些创造性的解决方案。
思考的过程,可以提升我们的思维能力,提升我们的认知和能力。
如果你不会思考,每天机械似的干着同样重复的工作,就不能怪别人叫你码农。更要命的是,你得不到成长。
做好终身学习的准备
如果想成为一个优秀的程序员,就必须做好终身学习的准备。因为这个世界为程序员准备了太多需要学习的东西,多到这辈子都学不完。
不过我发现绝大多数程序员都是爱学习的,所以此点,我不打算多做表述。不过我想要说的一点是,请务必享受学习的过程,而不是痛苦的去学习,因为这不是长久之道。
接受平凡的事情
很多人对很多事都是这样:刚开始的时候充满了热情,鸡血满满,但是随着时间的推移,这种热情就会淡去。我们对于自己看似熟练的东西,再也提不起来兴趣。技术也想像围城,你总是这山望着那山高,总是讨厌当下的境地,而向往所谓的让人仰止的高山,因为那总是让自己激动,可是或许也就仅仅停留在内心的激动。只是就算你到了另外一座高山,它终究也会变成你讨厌的当下。
很多人学习新知识的热情很高,却对于工作中遇到的问题视而不见,不闻不问。其实你要知道,在职场上,你的价值在于你能够解决多少问题,而不是学会了 多少门新的技术。 当然我不是让大家不要学习,而是要大家先把本职工作做好的基础上再去学习新的东西,如果本职工作一大堆问题你置之不理,而饶有兴趣的去浅尝辄止的学习新的东西,就是本末倒置。
能坚守平凡的人,才能不凡。因为任何事情,都终究变得平凡而琐碎。你再喜欢的女神,终究也会容颜老去。
我们总是羡慕那些大牛们,他们有丰富的学识,有高超的技艺,有不凡的魅力。 只是你不知道,大牛的今天,是无数个默默付出的夜晚、无数个敲击键盘的清晨累计而来的。他们不曾放弃过任何一个当下的问题,永远能够在变得枯燥的日常中找寻到新的乐趣、能够在当下的平凡中探索出不凡之路。
对每一行代码的执着,对每一个问题的深入探索,终究是你我都需要经历的。
相信我,你的快速成长可以来自于平凡而琐碎的工作,来自于你对司空见惯的代码的优化、对日常的每个问题的执着的探索、对于难点的苦苦思索。
临渊羡鱼,不如退而结网,而很多人选择了退而却步。希望你能够沉下心来,好好的解决好当下的问题。我们要做的就是坚持不懈的履履而行。
正如保罗.柯艾略的《朝圣》一书所言,超凡之境恰在平凡之路上,愿以此与诸君共勉。
欢迎关注公众号“ITman彪叔”。彪叔,拥有10多年开发经验,现任公司系统架构师、技术总监、技术培训师、职业规划师。熟悉Java、JavaScript。在计算机图形学、WebGL、前端可视化方面有深入研究。对程序员思维能力训练和培训、程序员职业规划和程序员理财投资有浓厚兴趣。