目录:三年软件开发的升级打怪路
1、软件开发类比于升级打怪
2、工作中的三板斧
3、学习
4、生活
1、软件开发类比于升级打怪
大榜:我搞软件开发有三年了,越来越觉得软件开发技术要提升、成长,很像游戏中的升级打怪,打一个怪,然后过一关升一级,一步一步成长为英雄,最后救下了心中的公主。
麻雀:哈哈哈,榜哥这体会很有意思。可以具体闹闹磕吗?
大榜:本身我自己是搞Java的,为了方便闹磕,我以Java攻城狮为切入点,说下Java攻城狮的升级打怪之路。
首先是第一阶段的升级打怪,这个阶段的学习,专注于会使用数据库、Spring框架,重点在于先用起来,用得熟练后,我们在下一个阶段去学习和摸索原理。
麻雀:升级打怪为什么分为多个阶段?
大榜:Java学习路线图是很庞大复杂了,对于初学者,肯定会被吓走的。如果直接按照路线图往下走,实践性不强。于是我把系统学习路线图划分为3个阶段,分别是α、β、γ阶段。
麻雀:那α阶段(第一阶段)为什么要这么设置呢?
大榜:你想一想,我们刚接触一个新游戏时,都是从简单开始的,等操作慢慢熟练了以后才去挑战大Boss。类比来看,所以说,α阶段的学习路线图也是设置的比较简单,把重心放在Java基础、数据库、应用框架、研发工具上,最后会实战一个容易上手的前后端分离的项目,等α阶段完成后,再去挑战β、γ阶段。
大家可以在学习的过程中,画出自己的升级打怪路线图,看看自己到哪一级了。我自己做了三个阶段的升级打怪,可以参考拙作:Java后端开发的学习路线图(分3个阶段)
麻雀:我看了你上面的这张图,我发现自己原来是Java菜鸡啊,目前刚打怪到α阶段的Java容器这儿,哈哈哈。看来,我要多花时间学技术,争取早日到达γ阶段,手撕源码。
大榜:有目标就是好的,我们一起加油啊!
2、工作中的三板斧
麻雀:榜哥,你搞了3年软件开发,悟出了软件开发技术提升相当于游戏中的升级打怪。还悟到一些什么有用的东西呢?
榜哥:有用的东西啊,那就是2个实用技巧。分别是原型界面设计技巧和编码方面技巧。不要着急,许我一一道来。
第1个实用技巧是原型界面设计,拿到一个软件项目,常见的工作套路是这样的:需求分析、模块划分、原型界面设计、软件设计方案,接着才是伪代码和代码实现、测试、部署、软件验收交付。
刚开始参加工作时,由于工作内容是对原有的老项目进行Bug修复和迭代开发,不是开发一个新项目,所以当时对原型界面设计的重要性体会不深。
麻雀:后来呢?
榜哥:后来,到我参加工作的第二年,加入到了一个新项目中,由于我自己不画原型界面,而且也不重视原型界面设计。导致开发时,常常遗漏了一些重要接口,同时也开发了很多无用的接口,这就造成了与前端程序员联调现场,才猛然发现自己有一些接口并没有开发,然后我就需要加班加点去开发这些遗漏接口。所以说,当时不重视原型界面,走了很多弯路、踩了坑。
麻雀:那你是如何爬出坑的呢?
大榜:当时我请教了一位有十多年开发经验的前辈,老前辈语重心长对我说:“小榜啊,要多动手去画原型界面,能够理清楚功能项,把原型界面上的按钮与后端接口对应起来,就不会遗漏接口。我搞了十多年开发,现在也在画原型界面”。
听了老前辈的建议,我开发功能时,就开始逼着自己去画原型界面,因为这样可以把功能理清楚,开发哪些接口也会很清晰。实践证明,画原型界面后,慢慢地不会遗漏重要接口了,也不用加班加点了。
麻雀:榜哥,你这个经历值得我学习,看来我以后搞软件开发要重视原型界面了啊,避免踩坑。第2个实用技巧是编码方面的,这一块,我更感兴趣,你悟到什么了呢?
大榜:你听说过下面这句话吗?"没有什么问题是不能用for解决的,如果还不能解决,那就使用多层for循环。"
麻雀:for循环有这么强大吗?
大榜:我工作三年,业务上遇到的大大小小的问题,都没有逃脱这句话。比如,遍历字符串的所有子串就是使用双层for循环,还有业务问题也是使用for循环来解决:比如获取书店商城中货架上的所有书籍信息。
麻雀:编码方面的实用技巧除了for循环,还有其他的吗?
大榜:那就是我所在的团队在业务开发中,大家遵循的9个单词(九字法则):make it run,make it right,make it faster!
麻雀:这九字法则感觉像软件开发的迭代过程,是吗?
大榜:是的,我们新开发一个项目,首先是让项目系统先run起来,然后才是让系统保持正确运行,最后才是让系统越来越快。举个栗子,我之前做的一个项目,没有高并发、高性能的需求,但是最开始团队想着用花哨时髦的技术来解决,像Redis、消息队列等都用起来了,实践表明系统复杂度不仅上去了,而且维护也麻烦,经常需要加班加点去修复Bug。
后来,我们团队遵循九字法则,首先让系统run起来,于是将Redis、消息队列技术栈都移除掉,只使用Spring Boot框架、MySQL数据库,发现系统不卡顿,完全能够满足客户的日常使用需求。
麻雀:榜哥,听你刚刚分享的例子,感觉之前你们团队做的优化,有点过度设计的味道,属于杀鸡焉用牛刀,其实是没有必要的,因为交付的系统不需要优化也能满足客户日常使用需求,是吧?
大榜:是啊。团队前段时间还发生过一个栗子:对于多张表关联关系的查询,团队最开始写关联多张表的SQL语句,实践表明这种SQL语句编写复杂,也不易维护。后面我们将多张表的关联查询,简化为先查询一张表,然后用查询的结果再去关联另一张表,结果表明这种单表查询的性能足够满足业务需求。所以团队后来,对于多张表的联合查询,都采用单表查询这种方法,毕竟简单、易维护。
麻雀:三张表以上的SQL语句,写起来确实就费劲了。如果单表查询效率还可以,能够满足需求,完全可以抛弃多张表的关联查询。
大榜:举了上面2个例子,我想表达的是,工作中的软件项目,大家不必刻意追求高并发、高性能,因为很浪费时间,我们在满足客户需求的情况下,最简单的系统就是最好的系统。大家可以把多余的时间用在刀刃上,可以多投资自己,比如提升技术、跑步等。
3、学习
麻雀:榜哥,3年工作经验,你是如何学习成长的呢?
大榜:学习成长是一个大话题,后面可以详细聊聊,我一般是向周围优秀的同事学习的,学习他们的代码、为人处世等。还有,对于自己,就是多看Spring、MyBatis等优秀开源框架,并对核心思想进行原型代码的实现,将理论与实践结合起来,这也是我后来要做的功课,与大家共勉。
4、生活
麻雀:榜哥,工作和学习之余,还干些什么呢?
大榜:我想培养自己的一个小爱好,现在也在摸索中,目前空余时间,更多的时候会去户外跑步、闲逛;有时候看一些小说书籍,算是陶冶情操把;有时候,会和钓友们出去钓鱼。
5、小结
大榜是一个有3年软件开发工作经验的人,麻雀是一个即将步入社会的学生,通过两人的对话讨论,大榜分享了3年工作经验的感悟,包括对升级打怪、工作、学习和生活,希望对大家有所帮助。