正确的理解技术,可以让我们走的更远

​ 我们小时候都听过这样的一个故事,

​ 为什么大家都说35岁是技术岗的危机,甚至现在还出现了更加提前的趋势,30岁危机就已经出现。在本文开始之前,我也先丢几个问题给大家,一起思考一下以下现象的原因是什么?

  • 软件开发是否是劳动密集型行业?
  • 为什么在中国,为何倾向于更加年轻的程序员,多年经验的程序员反而越发艰难?
  • 当程序员们意识到危机的时候,他们遇到了什么挑战?
  • 如何应对程序员的”35岁危机”?

​ 接下来我来谈一谈我这6年对技术的理解的变化,以及学习与适应变化的过程,从中我们一起寻找上述问题的答案。

技术是代码(0-3年)

那时候我就像是一个在技术的门外不断窥探的孩子,迷茫、思索,不断寻找属于我的自己的打开技术大门的钥匙。

​ 当我在大学中刚开始接触代码的时候,我和大多数人一样苦于如何完成老师的课后作业,回想起来,我对技术这个词的理解非常直观,技术就是代码,要如何做好一名合格的技术呢?多多学习与理解代码。实话说,谈不上有写代码的天赋,大学中学的第一个语言课是C语言,学的也比较糟糕,后来慢慢培养了一点技术思维,学java的时候又败给了面向对象。

​ 我时常为自己的天赋平庸而烦恼。如果技术就是代码,那时候我的技术能力简直就是灾难。

​ 上帝还是给了我机会,偶然之间让我接触到了JavaScript,这并不是学校授课的语言,但是这确实一个令人着迷的语言,在面向过程的的JavaScript(ES5)中,我找到了突破点,顺着这条藤蔓,我找到了适合我的对技术的打开方式,技术思维逐渐被打开,以前不理解种种逻辑,面向对象、指针,也很自然的就理解了。

​ 再后来参加全国比赛,凭借兴趣与努力不断学习,逐渐成为我们计院的top,这才算走上了编程这条路。

​ 在我那短暂而又高强度的学习编程的经历中,我始终都有一个明确的理念,技术 = 代码,要想编程能力进步,想成为更加厉害的程序员,就要拼命写代码,所以我知行合一,延续了在学校比赛时期的作息时间,工作时间外,晚上也继续学习技术,我非常积极的接触所有前端范畴的技术的上的工作,主动挑战任何技术难点,因为我坚信,代码写的好不好,是评价技术的唯一标准。

​ 就这样,在我写代码的前3年我几乎把前端范畴中能接触的所有技术,都学习了一遍,而对于重要的技术,也会重点学习与了解,通常会想方设法的了解实现原理;同时坚持费曼学习法,保持输出的习惯,这些年我的juejin博客的阅读量也还不错,大部分文章的内容也还说得过去。

​ 所以在我迈入职场的头几年,我的收入和社会认同感都有肉眼可见的增加,这些成果一方面激励我继续努力,但是另一方面我内心的疑惑也越来越大。

对技术的疑虑

​ 某一天晚上我在公司无所事事,学习ng,在学习的过程中,我突然开始思考起来,学习ng对我而言真的有用吗?

​ 公司不可能用ng的技术栈,不好招人、国内生态差、文档不友好,那在学习ng的过程中我能了解到什么?ng的一些编程思想,企业级的项目架构;可是我没有应用场景,怎么能有深刻的理解?最多只能扩大自己的知识面。自那之后我在学习新技术的时候我都会开始思考,我花这么多时间去学习这些我很难用到的技术,再随着知识慢慢被遗忘或者过期,是不是已经产生不了什么效果呢?

​ 我们时常说,技术为业务服务,若是学习的技术并没有在实际业务中发挥作用,没有让开发效率更高、没有让软件的速度更快、没有让团队成员开发体验更好,那岂不就是没用的技术。

​ 所以我转变了思路,决定不在走马观花式的学习,要打技术纵深,看axios、promise、vue2.x、vuex的底层实现,然而源码的复杂程度超乎我的现象,首先我个人不具备独立阅读源码的能力,在阅读的过程中,我需要搭配别人的博客,以及源码解读视频才能理解其核心逻辑,在这个过程中我充分认识到了一点就是这些人的水平,我一辈子都达不到。

​ 不过另一方面我还是要为阅读源码正名,这个确实有用,这就像数学公式一样,不理解原理就只能背诵,照搬硬套,但了解原理后,就能解释很多为什么,开发的能力得到很大的加强。

对没有结果的疑虑

​ 在我工作的前三年,我做过很多产品和需求、开源,有些是公司的,有些私人的,但是绝大部分都是失败,投入了很多精力,没有产生任何价值,我非常幼稚的认为技术是非常重要的一环,但是反复的失败,让我非常茫然,也让我逐渐意识到技术能决定的事情,并不多,也意识到做出一款被大家接受的产品是一件极难的事情,

​ 那段时间和我的领导聊了很多,这里我尊称一句w老师,w老师通过各种例子慢慢纠正我的对技术片面的理解,反复和我论述技术为业务服务,那时候我对这句话依旧是半知半解,我想技术当然是为了业务服务,技术好才能完成各种各样复杂的业务,这人我一度想不明白,w老师想和我表达什么,但是这还是埋下了一颗种子,为了我的下一个阶段做好了准备。

所以后面,我想明白了一些道理,也看到了我对技术理解上的局限性

  • 技术只是工具,本身没有价值,有价值的是技术形成的产品。
  • 程序员不仅需要怎么做,更需要知道为什么要做。

对0-3年的建议

从我的精力看,我觉得从小白 - 初级前端开发者 - 前端组长,3年时间足矣,需要做到以下几点

  • 学习技术的第一源动力是出于兴趣、与技术的喜爱,而不是为了获得一份工作或者高薪资
  • 打好计算机基础,良好的编程基础是程序员头三年高速进步的前提。
  • 要多写代码,量变才能产生质变,尽快成长为前端团队中的顶梁柱是这个阶段的核心目标。
  • 重视业务,千万不要觉得业务与自己无关,理解业务流程是工作的一部分
  • 要客观的认清自己,是否真的有编程天赋?与大牛的距离有多大?避免盲目学习与努力

技术是需求(3-5)

既然技术的最终呈现方式是业务,我直接关注业务不就好了?

​ 业务的落地由多个角色协作完成,后端、ui、运营、产品、项目经理,我大学期间学习了经济学相关知识,并且对此一直很感兴趣,我选择了与前端最贴近的产品经理。同时在公司,我也走向了基层管理岗位,前端组长。

​ 同时我与我的上级表明我想做产品的想法,并希望在现有项目中,发挥自己的产品的作用,上级欣然应允,同时也非常鼓励我继续做下去。

​ 所以在这个阶段,我从原本的纯技术开发,变成了技术 + 产品 + 管理齐头并进。

​ 学习产品思维是一个艰难的过程,在这个阶段,我系统性的学习了NPDP国际产品经理认证课程,看了《增长黑客》《人人都是产品经理》《幕后产品》《微信背后的价值观》等一系列产品经理相关的书籍,慢慢形成了产品逻辑。

​ 这个阶段,我经常问自己产品方面的问题。

​ 为什么拼多多不做购物车?难道是因为拼多多技术能力太差吗?

​ 为什么美团会员规则是这样的?如何演变形成的?

​ 为什么双11的优惠券规则如此复杂?为什么不直接给用户优惠?

​ 为什么最近上线的某个需求效果很差,为什么某个功能点又非常受到大家欢迎?

​ 羊了个羊爆火,我会尝试去分析,为什么他可以火,他是如何做的?

​ 参考竞品的时候,我会去思考,为什么他这样设计?

在如何做的基础上,我更进一步的思考了,为什么这么做?别人做得好,我会去分析,为什么他做得好,自己做的不好,我也会分析,自己为何做的不好的原因,而不是团队一起拍脑袋,或者个人主义去理解与看到需求。

​ 在这几年,我做过很多需求与产品,大部分需求都成功落地,并达到预期效果,但是绝大部分产品都失败了,只有零星的几个产品在某个场景下做出了效果;随着在产品方面的经验越来越多,我对需求的理解越来越准确,逐渐在团队中的产品角色站稳脚步

​ 如何平衡 技术与其他工作?

​ 如何学习产品相关知识?

技术是产品(5-?)

技术是?