该如何做一个可持续发展程序员?

来自实验室编程思想培训会议记录,老王谈编程:一个入门程序员该如何进行可持续的提高来应对技术的不断更新迭代,如何站在一个更高层的角度来思考问题与进行职业规划。(带鸡汤)

一. 一些学习方法

  • 书:
    code clean:Robert著,讲了一些跟敏捷开发,DDT相关的东西。不少公司设计了极其严格的程序迭代开发策略,在一个迭代中对功能的开发等做了很强的限制。
    Legency code:在企业中,因为人事技术的变动,软件的维护是最难的,80%的程序员在80%的时间做的是维护的工作,修改代码时要时刻考虑对程序的影响,这本书主要讲了一些maintain的方法,包括一些auto-test的方法。unit-test采用了大量断言的技术,并且直接针对class method进行维护。
    code complete:代码书写,程序设计的核心思想与规范书。迭代抽象规范的思想,尤其是一些类借口变量的设计。
    23个最经典的design pattern:软件都是通过现有的知识来进行有限组合来解决新的问题,如同解方程,就如编译时的抽象语法树,又如过去的汇编语言,用C去写C的编译器,自己产生更优解。在软件背后总是有着熟悉的一些套路,或者套路的组合,而套路是又一些基础的元素所组成,就如元素周期表一样,所以看清其中的基本元素并且它是如何被应用的十分重要,也可以让学习变得更加效率,略过套路抓创新点,比如一些functional language是运用原来的面向对象语言与其他功能的结合而产生的。
    人月神话:神书之一,10人10月,1人100月
    。。。
    论被赶鸭子上架的老王是如何在九个月看完一百本书的,然后完成项目的。

  • Blog

  • Sample

二. 有效运用现有资源
对于新问题,寻找已有工具去解决无疑是最有效率的方法。

  1. ide
    有效运用ide高级的feature来加速快发,并有效抓住ide等中哪种是核心的功能,要有过滤和核心的sense,在ide中看source code也能有效的发挥其搜索和navigation的功能。
  2. 搜索
    静态搜索:awesome+技术名(Angualr Cli2 用了skill code generation 重构+创新)
    github code+navigation+变量名/方法名(尝试理解为啥这么写)
    动态搜索:example+断点 / 通过path来猜并加以验证
  3. 一些网址博客资源,http://caniuse.com可以查各框架的浏览程度。

三. 实践

  1. 尝试解决复杂问题,就如开发算法,先建立抽象,再通过拆分问题,设想限定输入 —> 输出来解方程。定义串联关系,先解决小元素,由小元素构成解答。数学问题可能没有一个解决方案,但是所有程序问题都是会有一个解决方案的,所以多试试跑起来找问题,利用好feedback,一些复杂的问题上手后可能不难,要有一定的侥幸心理。一年争取开发5~6个算法,同时实践也更利于看书的效率。
  2. 不始终纠结于问题本身,先用一种大局观去看待问题再进行剖析,对于未知的事物,用已知推测未知。学习做架构的设计,结合已有的东西,设计基础可持续的模块。

四. 思索

  1. 做超越年纪的事情,年纪越轻,潜力越大,加上知识面越深越广,也越容易被培养。
  2. 对于培养,抓住机会(Push下自己跟住节奏)+回馈+innovation(就像面对用户一样,提出功能看法,讨论论证),同时具有一定的argument —> improvement
  3. 跳出思维,思考和寻找新的合作机会,talking+知识是最容易产生机会的方式,老王逮人就是一通交流的能力确实让他为自己与公司收获了很多机会。把公司(lab)当成家,思考新技术对公司的影响,思考如何为公司解决问题。
  4. cooperation + 以完成任务为核心+耐心沟通交流+share
  5. 培养写具有优秀可读性document的能力
  6. 人品+眼光+实力+用户眼光 —> 机会, 站在更高维度看问题,避免恶性竞争。

五. 对于新技术的调研与presentation

  1. 从client user的角度去看待问题,比如pwa技术拥有很多好处,但是之所以上不了场的原因,比如它支持不了ios notification的功能,比如一些重力感应等手机feature它是否能实现,思考与真正的工程业务的结合能力,调研就要做的详尽彻底方方面面,而不是局限于网上的一些说法。
  2. 从同事角度上,如果要使他们使用新技术,那么最重要的是什么,最有力的说服点是什么,如果presentation具有说服力,那么就是真正的技术讲堂。

你可能感兴趣的:(总结)