1、程序员的焦虑
我们的焦虑来自于对未来的不确定性,而这种不确定性是一个特定时代
加上特定行业
的产物。
今天的我们处在一个人类历史上少有的快速发展时代,我们看不清以后的人生,大脑却还停留在上一代人的思维习惯上。 IT 行业在国内的大发展也就最近20多年的事,行业里很少有走过完整职业生涯的程序员。 也正是因为如此,我们经常会产生了各种焦虑:
我刚刚入行时,有人问,程序员能做到 30 岁吗?
我快 30 岁时,有人问,35 岁还能做程序员吗?
我 35 岁时,讨论变成了 40 岁的程序员该怎么办?
估计等国内有越来越多的程序员走完了整个职业生涯,就会有人关心,程序员退休之后的生活应该是什么样子了。
2、坦然面对当前的问题
接下来,我们要踏上征程,一步一个脚印的看清楚当前面临的问题。
- 如果你还什么都不会,那就应该从HelloWorld编码开始。
- 如果你已经能够写好普通的代码,那就应该尝试去练习更复杂算法的代码。
- 如果你实现一个具体功能都没问题了,那就去做架构设计,让程序有更好的组织。
- 如果你已经能完成一个普通的系统设计,那就应该去设计业务量更大的系统。
- 如果你还没有工作,那有一份编程的工作就好。
- 如果你已经有一份收入尚可的工作,那就可以考虑冲击下有挑战性的岗位或大厂。
3、什么样的程序员才是优秀的程序员呢?
本人眼中:写的一手好代码,做过几个大项目,设计、编程不在话下
同学眼中:刚毕业就去了大厂,各种福利待遇羡慕的不行
同事眼中:人挺好,干活挺快
HR眼中:省钱、出活
4、五个关键特质
1、熟练操作一门编程语言
优秀的程序员需要写的一手好代码。把标准降低来说,最起码需要熟练使用一门编程语言。 熟练了之后,很多语法、语句在我们编写程序的时候,会下意识地就流露出来。正如,我们中国人会熟练的使用筷子夹各种食物;很多年轻人会熟练的骑自行车,下意识的避开路上的障碍。如果我们设计一个线程类,在编写代码时,至少 class 和 extends 这两个关键字的使用是不需要大脑有意识地参与的。
编程语言,基本上是相通的。掌握了第一门编程语言后,第二门语言学起来就快很多,第三门语言学起来更快。现在我们几乎都是多语言使用者,但一定要先精通一门语言,达到像用筷子那样的熟练程度。
2、解决实际问题的能力
代码是要解决具体的问题的,我们需要通过编程语言把解决问题的办法和思路表达出来。 要解决具体的问题,仅仅做到熟练使用编程语言是远远不够的,优秀的程序员还要深入理解问题,懂得问题的最核心价值。
只有理解了问题,看到了解决问题的价值,我们才能够真正解决好问题,并且从中获得满满的成就感。我们一定要记得,程序员的存在不是为了写代码,而是为了解决现实问题,实现现实价值。 真实的作品,都带着我们对于现实问题的理解。而打磨一个这样的作品,需要缜密的逻辑、 突破创新和贯彻执行。通过使用合适的工具,把简单的、一行一行的代码,耐心地粘合、打 磨成优秀的作品。
这里举例几个:阿里合伙人
前蚂蚁金服CEO胡晓明:中专
前阿里集团CTO张建峰:中专(温州机械工业学校)
前蚂蚁金服CTO胡喜:大学肄业(大连外国语)
现蚂蚁金服CTO倪行军:大专(浙江财经学院)
3、发现关键问题的能力
能够发现关键的问题,是一个好程序员和优秀程序员的分水岭。 优秀的程序员,能够发现一门编程语言的缺陷,一个顺手工具的局限。所以,他知道该怎么选择最合适的工具,该怎么避免不必要的麻烦。 优秀的程序员,能够发现解决方案背后的妥协和风险。所以,他可以预设风险防范措施,设置软件的适用边界。
优秀的程序员,能够敏锐地观察到产品的关键问题,或者客户未被满足的需求。所以,他可以推动产品持续地进步和演化。 能够发现关键的问题,意味着我们可以从一个被动的做事情的程序员,升级为一个主动找事情的程序员。 能够发现关键的问题,往往需要我们对一个领域有很深入的研究和深厚的积累,并且对新鲜事物保持充分的好奇心和求知欲。
我们写的每一行代码,都可能存在问题。有时候,我发现别人的代码的问题;有时候,别人 发现我的代码的问题。我们最后都会明白,要坦诚地面对别人的问题,也要坦然地面对自己的问题。在解决问题和帮助别人解决问题中,我们把一个产品变得越来越好,问题越来越少。
4、是可以依赖的伙伴
优秀的程序员是一个领导型的人。他能够倾听,持续地获取他人的优秀想法,以及不同的意见。他能够表达,准确地传递自己的想法,恰当地陈述自己的意见。
他是一个给予者,给别人尊重,给别人启发,给别人指导,给别人施展才华的空间。
他是一个索取者,需要获得尊重,需要获得支持,需要持续学习,需要一个自主决策的空间。他能够应对压力,承担责 任,积极主动,大部分时候保持克制和冷静,偶尔也会表达愤怒。
他具有一定的影响力,以及良好的人际关系,能够和各种类型的人相处,能够引发反对意见,但是又不损害人际关 系。他知道什么时候可以妥协,什么时候应该坚持。
上面的这些,通常称为“软技能”。如果说,编程语言、花样工具、逻辑思维、解决问题这些“硬技能”可以决定我们的起点的话,影响力、人际关系这些“软技能”通常影响着我们可以到达的高度。因为,无论我们是加入他人的团队,或者组建自己的团队,我们只有在团队中才能变得越来越出色,做的事情越来越重要。所以,我们需要成为优秀的团队成员,接受影响,也影响他人。
5、自律、适度的偏执
当谈到成为优秀的程序员时,自律和适度的偏执是两个非常重要的特质。它们有助于提高工作效率、代码质量和问题解决能力。
一个自律的程序员能够有效地管理时间、资源和任务,以达到最佳的工作成果。以下是自律如何在编程中发挥作用的几个方面:
时间管理
:自律的程序员能够设定合理的工作时间表,并遵循这些时间表来完成任务。他们知道何时专注于编码,何时进行休息和放松,以保持高效率。任务优先级
:自律的程序员能够识别任务的重要性和紧急性,并根据优先级合理地分配时间和精力。这有助于避免陷入无谓的琐事,而是专注于关键的项目和问题。学习和成长
:优秀的程序员不断学习新技术和工具。自律的程序员会制定学习计划,定期投入时间来提升自己的技能,以保持竞争力。代码质量
:自律的程序员遵循最佳实践,编写干净、可维护和可扩展的代码。他们会花时间进行代码审查和测试,以确保交付高质量的软件。
适度的偏执是指对细节的高度关注和追求完美的态度。在编程中,这种偏执可以带来以下好处:
Bug 的挖掘
:适度的偏执使程序员对代码的每个细节都充满敏感。他们会仔细检查可能的边界情况和潜在的错误,从而减少Bug的出现概率。性能优化
:偏执的程序员会追求代码的高效性能。他们会关注算法的时间和空间复杂度,以及代码执行的速度,以确保软件在各种情况下都能够高效运行。代码审查
:偏执的程序员会在代码审查过程中严格要求自己和同事。他们会挑剔地检查代码,确保代码质量和一致性。
综上所述,自律和适度的偏执是成为优秀程序员的关键特质。自律能够帮助管理时间和资源,以及保持持续的学习和提升。适度的偏执则有助于保障代码质量,挖掘潜在问题,并提供出色的用户体验。这两个特质相互补充,共同促使程序员在不断变化的技术环境中脱颖而出。