竞品调研:
1,在接手项目之后,第一时间就要对产品经理设计的原型参照品,展开最详细的甚至比产品经理还要详细的调研和使用,只有这样才能对产品能有一个全面而深入的了解,并且知道竞品的设计理念以及设计流程中要规避哪些开发上的难题。
重审原型(注意审字):
2,在全面熟悉了竞品之后,则反过来重申产品经理的设计原型图与竞品的差别,罗列所有这些差异点,深入思考产品经理为何要有这些差别,这些差别带来的好的结果还是差的结果,对技术的要求是不是变得简单了还是复杂了,这些都要在心中形成一个非常清晰的概念,在与产品经理沟通时,能够简明扼要地说出关键点。
提取技术
3,在全面分析产品原型之后,就要第一时间分析实现该产品所需用到的所有技术,深入到每个环节,并将其形成列表;
放眼未来
4,对照着使用到的技术手段(例如队列,数据库,ES),来分析这些技术的到底想解决哪些难点。现有的这些技术真的能完全解决这些技术难点吗?此时应该去网上搜索有没有更好的解决手段来解决现有产品的需求,一旦发现有更好的解决方案,并不是立刻就开始学习和使用它,而是应该将这种技术手段,留作下一次开发时使用(原因在于掌握一门新技术,需要耗费大量的时间精力,一知半解不如不用,而急于去应用时,就会将一门好的技术用到烂,最后自己都不屑于顾,比如yii2框架中有很多人间已经完美实现的功能,因为时间紧任务重,我们没时间去学习,干脆自己重新用php原生代码来开发,既不优雅,又难维护,后来人根本不知道你你魔改了什么——再看一次笔记本定律);
温故而知新,系统把握
5,复习已选定的技术手段,温故而知新!如果拿来即用,就会导致我们陷入无法提升的死循环圈子里面,逐渐也让我们讨厌自己的写的代码,每次新项目的开发,应该作为我们重新开局的美好局面,新的局面毕竟需要更优雅的手段,更新鲜的技术血液融入进去,这样新的项目才能让我们觉得更加鲜活,也使得我们更有激情去打造一个还未出世的新产品,而且系统性的回顾技术,是一个难得的过程,这个过程总会让我们得到一些更新的东西。这里值得提醒的是,复习也要有计划,比如你打算重新学习下mysql事务和锁,那么第一环节就是找到相关的视频和或者书籍,或者在线文档,记得一定要是系统性,切勿是零碎片段式的复习,系统和片段式的最大差别就是,即使你掌握了片段式的技术,但是组合起来时,会出现各种bug,如同你即使把每个字都写的很好看,但是组合在一行或者整篇文章时,还不如一个工工整整写字的人写的美观。永远记得我们不是为了解决bug而存在,而是为了写出优雅的代码而存在,你可以写出千千万万行带bug的代码,但是你很难写出一次成型绝不返工的优雅代码,我们的目标是后者,想达到后者就要站在巨人的肩膀上前行。复习要有固定的知识量,以及完成这些知识量的所耗费的时间,计划要精确到每天完成的计划量,弹性修正每日的计划量,保证按期完成这个那个计划。
严谨的计划
6,新技术学习计划的定制:计,就是可定量,可计算的意思;划,就是可分割,可独立的意思;所以制定一个计划,第一就必须思考该计划的有哪些可定量的东西,开始新项目前,你要掌握redis的zset所有技能,那么哪些是可定量的东西?第一,你想从哪里获取这些知识——视频,文档,还是书籍,视频总共有多少集在讲zset,总时长是多久;文档有多少页在讲zset,总页数是多少,你看完一页并彻底理解它需要耗费多长时间?书籍也是;这就是定量,有了定量就可以制定掌握的时间,但是你需要同时掌握redis的set,list,zset,锁,事务等技能,而这就是划,将技能分割成一块块来逐个消化,排列他们的重要缓急程度,并说明你的原因,为每个行为找到他们的理由是一个很好的习惯,有依据的计划才是可执行的计划。
学习的目的是结果
7,有了上述的学习计划之后,检验学习的最好标准就是一个好的结果,学以致用,学完之后第一件事,就是将学习的成果转化项目某一细节或者功能的实现,只有现实意义的成果转化,才能看出来学习知识的实际意义,不然学习都是在浪费自己的生命。因此,将工作结果,也一并追加到学习计划中去,才能将学习的计划变得完整。
开发能增不变
8,开发做增量不做变量,小时候,我们都学习过猴子捡西瓜,摘苹果,捉小白兔,最后一无所获。代码下笔的那一刻,心中就已经有了一个清晰的形象,解决什么问题,返回什么结果,中间的流程是什么?要不要继续颗粒化,要不要加入前置或者后置,要不要留有拓展的方式等等,每一个函数都要这样想。保证清晰之后,后续如果需求发生了变更,那么这个函数就保留在这里,不要动,你怎么知道那天需求还会改回来?放在哪里只占用了一点空间,但也许有一天,就需要这个函数与另外几个函数进行组合拼装。所以,函数的不可分割的颗粒度把控和增增量思维的开发模式,要时刻记忆在心理。
开发也是开悟
9,促使自己觉悟。觉悟也可以促使?是的,敲代码都只是具象的呈现,实现具体的过程,但是代码就代表着现实,微服务就是一个完整政府政务处理流程。养成习惯的抽象概念,达到哲学的理解方式,时间久了,就可以让自己的衍生能力大大加强,所以每次的开发完毕之后,都要不断的反思并最终汇聚成多个抽象概念。促使自己的觉悟。
敏捷增量开发
10,从产品原型出发,将大流程画出来,这样就看到产品原型的大节点,然后再用放大镜的方式放大这些节点,绘制出这些节点内部流程,然后再用放大镜放大这些内部流程的节点,反复执行该过程,到达你发现开始有逻辑重复时,比如都要判断状态是否正常,都要判断是否在执行时间点的时候,这说明你已经接触到流程颗粒了,流程颗粒可以理解为不可再分的最小逻辑块,或者不可分割最小逻辑块的组合,要么一起成功,要么一起失败,不能进行拆分了。这就是流程颗粒。有了这些颗粒之后,你的每一份代码都是独立的,可重复使用的,即使这次项目逻辑没有用到,不保证下次逻辑不用,这种颗粒积累的越多越好,在未来的开发中起到的优化作用会逐渐显现,越超后开发,越轻松。