话题有点大,但还是忍住想说两句,也算把自己曾经的困惑落在纸上,做个记录。
什么是软件的生命周期的,相信你能比我还熟练的罗列出来,从初步规划,到需求分析,再到系统设计,接着系统实现,往下系统测试,跟着发布部署,最后运行维护,中途免不了打些小补丁,做些修修补补的工作。
打住,现在来想一想自己的从业经历是一个什么样的过程。仔细想想还真是跟软件生命周期很像,差别在于两者不是一个正匹配的过程,而是反向的。摸清楚这样一个规律,我们发展的轨迹就不会那么模糊不清。按图索骥,回顾我们目前所在的位置,在对比生命周期的阶段,相信就会找到方向。特别是你在迷茫徘徊时。
看这张对比图:
入门阶段,囿于能力,经验的关系,一般只能从事一些边缘性工作,保持系统稳定,小修小补,大的需求还是搞不定。
小有心得阶段,随着从业时间加长,你也从一脸懵逼状态,变成逐渐有所掌握,心中有数人不慌,也有了自己的想法见解,并能在工作中实施验证。
受命执行阶段,此阶段重在执行,达成上级交代的任务,同时加深对工作任务,系统业务的理解,进而为把握整体的规划设计做准备。此时你也许就处在工作工作两三年的时间, 正是朝气蓬勃,执行力最强的阶段。
设计先行阶段,基本上能独立承担并达成任务,从更早期的设计阶段介入进去,前提是能把握局部与整体的关系,更关注局部的实现,并懂得如何与系统共存。
深度参与阶段,比设计更进一步,需要将抽象的需求分析量化,变成团队可以识别的计算机语言,以达到功能设计,存储设计的要求。同时将需求过滤,重组,确保无歧义,按优先级地执行。
高瞻远瞩阶段,早期的需求并不能完整的算需求,可能只是个需要,是个痛点,这就需要我们去调研,去头脑风暴,去验证其可行性,包括业务可行性,技术可行性等等。
再回顾自己的从业经历,是不是与上图很类似?那是不是按着这个节奏,就能平步青云般的达到最顶层呢?这个是理想状态,过程必须是充满变数,不然大家早都迎娶白富美,出任总经理,走上人生巅峰。
我们或许会在某个阶段徘徊,能跨过坎的就继续向前走,没跨过的就在原地打转徘徊犹豫,能守得住寂寞,偏安一隅的,就这么一直延续下去,直到突破为止。耐不住寂寞的就转行了。就像一个新技术面世后的采用生命周期是一样的,垮不过早期大众就是死亡陷阱。
做软件是个反复的过程,职业成长也一样,不断在实践中迭代升级,直到成为一方诸侯,割据一方。
也愿大家都能过关斩将,早日迎娶白富美,出任CEO,走上人生巅峰。
Spring
Boot + Elasticsearch 实现索引的日常维护
基于SpringCloud的Microservices架构实战案例-序篇
Nginx+Lua+MySQL/Redis实现高性能动态网页展现