1. 自营销首页
  2. 互联网

普通程序员如何成长

程序员容易焦虑。有段时间公司内流行”技术人35岁这道坎?”,网上也随处可见各种”焦虑文”:

  • 阿里P8,35岁被开除后能找到好工作吗?
  • 那些被辞退的中年人后来都怎么样了?

焦虑的原因是:技术&社会在发展,害怕自己的”成长”赶不上。很多文章回答过技术人如何成长的问题:

  • 从程序员到架构师的最佳技术成长之路
  • 从初级”码农”到高级”架构”,我的成长之路

多数文章从”技术”的角度分析程序员成长路径,本文尝试用逻辑分析”普通程序员如何成长”。
缘起
思考不能停留在原始问题本身,而应该探究本质。
前段时间公司有朋友问我”如何写文章”。回答好该问题要先弄清楚提问者的意图,这引发了我思考:程序员为什么要写文章?

  • 是工作/KPI要求吗?
    不是,公司没有将“写文章”列为工作项
  • 是工作空闲,用写文章来填充吗?也不是,程序员朝九晚十,不存在打发空闲时间的需求
  • 那是写文章有什么好处吗?可能有,例如总结沉淀,彼此交流学习等

下一步通过”升层/升维”的方法将上面零散的答案整理出逻辑,使用升层思考寻找问题背后的问题,再通过升维思考探索解决方案。

这样就找到了“如何写文章”问题的本质:普通程序员如何成长。(本文只讨论”普通”程序员)
分析问题
有了明确的问题,还需要对问题进行进一步分析。JTBD是一个非常好的用于分析问题的方法。JTBD(Job to be done): 用户在特定场景下必须解决的问题或完成的任务即:「目标用户(Who)」+在「什么场景(Job context)」+「完成什么任务(Jobs)」。
回到“普通程序员如何成长”的问题:Job清楚(用户希望完成的任务是”成长“);但是Who(普通程序员是谁)和Job context(用户场景是什么)还不清晰。
Who 普通程序员是谁?典型用户的方法是用一个人来描述一群人,就像用中间值(median)描述一组数一样。不同点是典型用户在现实世界上不存在。只是为了理解和交流的方便故意把描述写得很真实。
清晰的用户描述有利于问题理解和交流。普通程序员的典型用户是:小明,大学毕业,在IT企业上班。小明每天工作很忙碌,周九晚十;像很多在一线城市奋斗的年轻人一样,小明压力很大:房贷、收入、养家糊口。IT技术发展很快,已有经验过时也很快,小明很困扰:每天瞎忙碌,成长却不多;那么如何才能摆脱眼前的苟且,获得理想的成长?

Job Context 从用户场景找矛盾从用户场景中找问题,典型用户的一天是一种非常有用的用于分析用户场景的方法,通过该方法能进一步理解用户目标和问题。

问题是事物的矛盾。哪里有没有解决的矛盾,哪里就有问题.

从场景中发现用户诉求和现状间的矛盾:成长的诉求与”瞎”忙的现状之间的矛盾。具体来说就是:周九晚十,日常工作已经占满了小明的时间;如何才能”挤”出时间,做“成长”需要的事情了?
有逻辑的解决问题
逻辑帮助人系统分析问题,把握事物的规律,提升决策能力逻辑框架能帮助我们系统的思考问题,寻找解决方案。本文使用的逻辑框架是:从”问题”出发,提出假设,明确度量目标,过程中不同总结(目标没有达成的原因是什么),迭代解决问题。

回到”程序员如何成长”的问题上:

  • 问题:繁琐的日常工作「CRUD,会议,讨(si)论(bi)」占用大量时间,却没有获得想要的成长
  • 假设:如果成长了,可以承担更有挑战的工作,摆脱低水平的重复,也能获得组织认可
  • 度量:度量和目标相关。成长的目标可拆解成各个阶段性目标,例如:掌握DDD;提升提问水平;某个时间内达到目标职业层级
  • 认知:过程中不断总结原因/经验,进行相应调整

用影响地图寻找解法影响地图是一种结构化拆解目标达成路径的有效方法:目标是什么(Why),为了达成目标需要哪些人(Who),为此需要做什么(What)去(How)影响这些人。
使用影响地图拆解”普通程序员如何成长”的达成路径:

用户故事地图组织优先级用户故事地图,通过组织写有“用户故事”的卡片,帮助分析需求核心价值和成本,从整体视角规划需求优先级。用户故事用来描述用户的需求,包括三个部分:角色、用户需求、价值。一句话描述用户故事:某<角色>,通过完成<用户需求>,实现<价值>。
基于影响地图梳理出来的用户需求,根据价值进行分类:

  • 效率: 第一优先级, 提高效率才能挤出时间。有规划,养成习惯,番茄钟等。
  • 做正确的事情:第二优先级,方向对了才可能成功。提高判断能力,正确的思考方法等。
  • 正确的做事情:第三优先级,学习并掌握正确的流程和方法,结果才能保证。坚持正确的流程规范等.


终局的解法持续学习
前文通过逻辑思考分析了“普通程序员”如何成长的达成路径和优先级,可是要怎样实现具体的事项了?例如:有哪些提升效率的方法?怎样才能快速提高判断正确与否的能力?
回答这些问题,需要不断学习,提升认知水平。
学习是最高效的成长方法。
我推荐使用学习三步法:学->练->教

  • 学:明确学习目标,收集资料,坚持“系统”学习
  • 练:熟能生巧,掌握一门技艺的需要反复的练习
  • 教:教学相长是学习的关键。通过将自己所学内容教给他人,既是检查学习熟练度的标准,也能获得反馈发现不足进行弥补。

培养**好为人”师”**的态度:”教”的目的是帮助自己更好的学习;要放下”面子”, 抓住机会练习。

总结
逻辑思考力和技术能力都是程序员重要的竞争力。本文用逻辑分析普通程序员的成长:基于问题->假设->度量->认知的思维框架,每个环节使用典型的工具/方法来解答。这些方法也可以用于分析业务问题,设计软件架构等。

最后: 唯有持续学习,多学多知,不断提升认知水平,从能获得成长,摆脱焦虑。
作者:李建(甫田),阿里巴巴技术专家,DDD和Event Storming的爱好者和推广者,在阿里巴巴业务风控多个业务场景应用DDD,组织几十场DDD/Event Storming的建模&讨论活动。

来源:技术琐话,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/39040

发表评论

电子邮件地址不会被公开。 必填项已用*标注

侵权联系
分享本页
返回顶部