程序员的焦虑-好的程序员是什么样的

今晚偶然看到【竹白】,好奇心驱使下,研究了一下,使用和产品风格一样,简单,留白,挺有意思的。

不知道自己在这个平台会停留多久,暂且用这篇碎碎念完成首篇。

最近脑海里一直有几个疑问:

好的程序员是什么样的?

如何保持自己的学习力和竞争力?

作为程序员,自己未来的路怎么走?

总的来说满满的焦虑,我也不知道为什么会是这样,也许工作久了的职场人都会有这样的担忧吧,当然家庭富裕和躺平的除外。

好的程序员是什么样的?

看待任何事物,从多个不同的角度看问题,就像程序设计一样,多列几个架构方案,总会让你有意外的收获。

1.首先从能力分层的角度看待这个问题

最近看了一篇文章,我觉得写的很好。和好多年前在学校图书馆看到的一本书上,写的不同待遇的秘书做事风格,分析问题的角度很相似。

程序员的日常工作通常分为两种:重复琐碎类工作和抽象复杂类工作。

重复琐碎类工作的不同做法

第一种:就事论事,把这个问题回答了结束。到这个程度你只是解决了一个具体的问题。很可惜我们很多技术同学都是处于这个层次。

第二种:解答完这个问题后即整理成文档,把排查步骤写清楚,提升自己和同组人的工作效率。到这个程度说明你看到并解决了内部效率问题。

第三种:将此排查问题的方法和逻辑固化为小工具给到咨询的同学去用,让他以后可以自助排查解决,这样既解决了别人的问题也彻底释放了自己和同组人的效能。到这个程度说明你重新定义了效能问题并找到更好提效的办法。

第四种:将此问题背后根因找到,从业务原理或者产品功能上去找解法。将技术工具抽象为业务功能的完善。到这个程度说明你已经从单纯的技术提效看到了架构合理性问题,并尝试在业务上寻求彻底根治的办法。

抽象复杂类工作的不同做法

第一种:找到抱怨的同学,问一问具体的问题是什么,然后针对性解决。

第二种:更加广泛收集问题,然后列出来表格,归类分析并安排负责人跟进解决,最后定期跟踪进度。

第三种:深入分析表格的中的问题并对问题进行抽象,从架构调优和产品功能的角度去寻找原因,并寻找解决这些问题带来的业务价值,并确定目标拆解路径,最后按照任务推进和跟踪进展。

第四种:从更全局角度去思考此目标与年度目标的关系,与组织发展的关系,思考如何扩大此事的效益,思考如何通过这些事的解决锻炼和培养团队同学。

原文连接:关于技术能力的思考和总结

2.从技术人的素养角度来看

素养可以理解为基本素质,会左右你的技术高度。就像一个道德高尚的人,很大的概率是不会犯罪的。同理具备基本的技术素养的人,具备成长为一个优秀的技术人。

  • 不教条
  • 自驱力,学习力
  • 勇气
  • 结构化思维
  • 批判性思维

不教条

在软件领域,没有任何技术和框架是银弹,也没有任务设计原则是适合所有的场景,还有代码规范。本意是约定最佳实践,提升协作效率和代码质量,但有些场景却有违背初衷。不要为了DDD而DDD,也不要为了微服务而微服务,单体应用也有它存在的价值和适合场景。

尤其是职场菜鸟,更不要教条,但这往往很难,就像做菜一样,所有的大师傅都说少许盐,往往学习的人根本不知道多少,只有做的多了,才会领悟少许是多少。

自驱力,学习力

我把自驱力和学习力放在一起,是因为这两个往往是分不开的。拥有自我控制的能力,是很难的,你可以尝试去坚持跑步,你大概就能明白这个难度。

在程序员的世界里,需要保持不断的学习新技术的能力,这一点我想大家应该都能理解。作为基本入门,我们要具有一定的学习力,在此基础上,还应该拥有快速学习的能力。快速学习是建立在拥有大量基础知识之上的。

不知道有没有人有这样的痛苦:学习一门新语言,新框架。刚开始的一两周特别痛苦。不仅你是这样的,我也是这样,还记得之前学习react,go都特别痛苦,但是往往两周以后,回过去看这个旅程,想着也就没有那么难。

自驱力+学习力=竞争力

勇气

勇于面对未知领域和问题,这个算是核心竞争力吧。

结构化思维

结构化思维可以从逻辑和套路两个方面来说:

逻辑可以分为四种:

(1)演绎顺序:比如“大前提、小前提、结论”的演绎推理方式就是演绎顺序的。

(2)时间(步骤)顺序:比如“第一、第二、第三”和“首先、再者、然后”等,大多数的时间顺序同时也是因果顺序。

(3)空间(结构)顺序:比如“前端、后端、数据”和“波士顿、纽约、华盛顿”等,化整为零(将整体分解为部分)等都是空间顺序。在做空间分解时,要注意满足“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE)原则。

(4)程度(重要性)顺序:比如“最重要、次重要、不重要”等。

套路:是指我们解决问题的方法论、路径和经验。

比如,5W2H分析法,Why、Who、When、Where、What、How和How much。任何问题都可以从这七个方面思考。

最清晰和实用的结构化表达是“提出问题,定义问题,分析问题,解决问题,最后展望未来”。

另一个有用的思维框架是“zoom in/zoom out”

批判性思维

批判性思维是以一种合理的、反思的、心灵开放的方式进行思考,从而能够清晰准确地表达、逻辑严谨地推理、合理地论证,以及培养思辨精神。

批判性思维强调求知中证据、逻辑的重要性,反对依靠权威和流行观点,要求能够区分理性和情感的观念。其倡导理性的公共说理,因此也应该成为现代公民的基本素养。

推荐看:什么是批判性思维? - 故将军的回答 - 知乎

暂且写第一个问题吧,希望以上能给你理解好的程序员是什么样的带来一些帮助!剩下两个问题,未来再写。