我太难了2020年程序员怎么才不难

中科获平安医院殊荣 http://nb.ifeng.com/a/20190315/7280004_0.shtml

“我太难了”这句话一度成为年职场人的口头禅,而程序员的工作陷入“写代码-改bug-和产品经理battle”的困境,简直是”南上加南“。

为了改变现状,不少程序员在知乎上提出这样的问题:

“怎么才能成为厉害的程序员?”

“普通程序员和大神程序员有哪些区别?”

……

翻遍评论区的所有精彩回答,发现除了写好代码之外,程序员想进阶升级,让年不再艰难,还需要具备以下这4大技术素养。

不教条

在软件的世界里没有“银弹”,因此,在技术人的众多素养中,“不教条”占有重要的地位。

教条的主要原因是我们还停留在有样学样的阶段,导致我们忘记了软件的第一性原理是“控制软件复杂度”。

在业务发展早期,因为用户少、流量少,功能相对简单。如图所示,基本上单体(Monolithic)应用架构就足以支撑业务的发展。

然而,随着业务的发展和用户的增加,单体应用的局限性开始显现。具有水平扩展性(scaleout)的分布式系统架构几乎已经变成互联网公司的标配,如图所示。

虽然面向服务的架构(ServiceOrientedArchitecture,SOA)和微服务有一统天下之势,但是并不代表单体架构就会退出历史舞台,特别是在中台概念提出来以后。

中台要求,通过集中式的中台管控来提升软件系统的复用,避免趋同的业务重复造轮子的现象。

中台的目的就是要通过中台能力来赋能前线业务,提升对前线业务的支撑效率,其架构如图所示。

可以看到,中台虽然也是对业务进行聚合,但并不是对单体架构的简单回归,而是综合了分布式理念之后升级版的“超级单体”。

正是这种不教条和辩证的发展思维,才推动互联网架构不断地向前发展演进。

批判性思维

批判性思维(CriticalThinking)是一种谨慎运用推理去断定一个断言是否为真的能力。它要求我们不被动地全盘接受,也不刻意地带着偏见去驳斥一个观点。

批判性思维也是一项能够被习得,并且通过训练和运用来提高的能力。技术人员虽然有很强的逻辑推理能力,但不见得都有很强的逻辑思维。

在知晓批判性思维之前,无论是在公司和同事争辩,还是在家里和老婆斗嘴,几乎没有赢过。

后来我学习了一些批判性思维的知识,情况才有所改观,可以抓住对方的一些逻辑漏洞和推理谬误进行反驳,这使我在职场上拿回了不少话语主动权。

不过在家里,我依然是输多赢少,后来我才发现,原来家不是一个讲逻辑的地方。关于批判性思维,我重点推荐尼尔布朗写的被誉为批判性思维领域经典读物的《学会提问》,在《学会提问》一书中,有这样一个案例:

小张:“小王真不是个男人,酒吧里那个醉汉威胁说要揍他一顿,他吓得屁滚尿流。”小李:“他要不是男人,你怎么解释他身上那些鼓鼓的二头肌呢?”

你觉得小李的话有道理吗?如果你觉得有点道理,但又觉得有点不对劲,那么就应该去好好读读这本书。

这里小李犯了一个典型的推理谬误——偷换概念谬误(EquivocationFallacy),小张说的“男人”是指“男子气概”,而小李说的“男人”是指“男人生理”,这两个概念是不一样的,这就是问题所在。

成长型思维

成长的过程中不可能是一帆风顺的,肯定会有痛苦、有阻力、有挫折。面对逆境,我们应该怎么做?

有些人也许不堪重负,就此沉沦了,而有些人可以越挫越勇,把每一次失败都当成学习的机会。

成长型思维(GrowthMindset)和固定型思维(FixedMindset)会极大地影响我们面对逆境的处理方式。我在最低迷的时候,正是成长型思维帮我渡过了难关。

成长型思维和固定型思维体现了应对成功与失败、成绩与挑战时的两种基本心态。

具有成长型思维的人相信自己可以通过学习来提升自我,相信学习和成长的力量,相信努力可以改变智力和能力。

我们可以通过下图所示的对比来判断一个人是“成长型思维”还是“固定型思维”。

我曾经就是一个典型的固定型思维的人,在遇到困难和挫折时很容易引发自我怀疑和自我否定。技术人员的工作面临着很多的挑战,我们需要具备成长型思维才能应对工作和生活中的压力。

这样在遇到问题时,我们才不会轻言放弃,而是会积极主动地去学习,去寻找解决方案。即使最终还是失败了,把失败当作学习的机会。

结构化思维

在日常工作中,我们时常会碰到有的人讲一件事情的逻辑非常混乱,前后没有逻辑性关联,甚至无法把一件事情说清楚。思维混乱是缺少结构化思维的典型表现。

我们不仅在表达上要结构化,在分析问题时更要有结构化思维,这样才能分析得更全面、深刻。什么是结构化思维呢?我给结构化思维的定义就是“逻辑+套路”。

想象这样一个场景,你刚刚入职一家新公司或者转岗到一个新团队,作为一个技术人,你将如何落地开展工作呢?

这里就能用上结构化思维来帮助我们理清思路,从而有条不紊地开展工作。要知道对一个企业来说,核心要素无外乎就是业务、技术和人。

我们所要做的就是如何去熟悉业务、熟悉技术、熟悉人,然而每一部分又可以进行进一步的结构化拆解,如图所示。

1.熟悉业务

(1)了解产品形态:任何一个团队都有自己要负责的产品,申请一个测试账号去用一下产品,是熟悉产品比较好的方式。

(2)了解业务流程:任何业务都有自己的业务流程,而业务流程中的核心是信息流。我们可以通过人员采访了解关键节点的信息输入和信息输出;通过画一些泳道活动图来理清楚系统的主要角色,以及它们之间的交互关系。

(3)走访客户:通过走访客户,我们可以获得业务的第一手资料,更加贴近业务和客户诉求。

2.熟悉技术

(1)了解系统架构:可以让团队的技术人员介绍他们当初做系统设计和架构时的思路。

(2)了解领域模型:查看关键的核心表结构和系统API,快速了解系统的领域模型。

(3)了解代码结构:下载系统工程,熟悉整个工程结构和模块职责;以一个最重要的流程为入手点,阅读代码,看清楚核心的执行逻辑;做一个小需求,掌握相关的流程和权限。

3.熟悉人

(1)了解组织结构:查看公司的组织树,知道公司大概是如何运作的,以及哪些是关键人(KeyPerson,KP)。比如,一个典型的电商公司会包括产品部、运营部、销售部、技术部、人力资源部、财务部和法务部等。

(2)了解人员角色:了解公司都有哪些岗位,以及各岗位的职责范围。

(3)勤沟通:找出和自己工作息息相关的岗位,比如产品和运营,积极和这些同事沟通,向他们请教业务问题,多多交流。这样既可以建立良好的人际关系,也可以更快地熟悉业务。

广告

代码精进之路从码农到工匠

作者:张建飞

京东

-END-

今日福利

《代码精进之路从码农到工匠》

作者:张建飞

如何获得:访问


转载请注明:http://www.xxcyfilter.com/cxrs/cxrs/17367.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了