杂谈:开发人员如何进行复杂业务的学习?让boss刮目相看
一点小拙见,欢迎指正
一、概述
大型复杂的软件系统,是有许多人共同协作完成的,有些产品的业务是很复杂的,其在需求文档,及开发规范上都做得很好,不然维护的人越多,没有文档和规范去限制,岂不更加乱套。
如果文档不健全,或者代码也不规范,软件业务还复杂,那这样的公司也没必要继续干下去(ps:这样的公司很少)。
我目前所在的公司,维护的系统业务上比较复杂,其技术上不是很难。所以,更比较偏向于业务上的掌握。我是一个把技术当成兴趣爱好的人,让我学习业务,无疑是赶鸭子上架--难为人。但迫于我需要拿薪水养家糊口,还是避免不了去学习业务。
技术是为业务服务的,两者相辅相成。要想技术实现上更饱满,开发人员需要对业务熟练掌握。所以,这个坎我们也必须要过。
结合我对复杂业务的学习,做一个总结,希望对有困惑的读者能尽一点绵薄之力。
首先,我从身边的同事和朋友,了解到开发人员对学习业务的常见误区:
- 提需求的才应该负责业务,开发人员只负责实现需求功能。
- 让开发人员学习业务的时候,下意识就认为从看代码开始学习,代码经手人太多,代码不规范和注释不健全,导致怨声载道。
- 业务文档不全,学习起来特别困难,不知从何处入手。
基于以上的误区和自己最近学习业务的理解,下面谈谈几个学习建议。
二、八个学习建议
准备一个空白word文件,和一个可运行的系统debug环境。
写下如下几个问题?有助于去寻找答案,帮助理清思路。
问题1:xx业务的概念,背景,特点分别是什么?
问题2:xx业务是如何落地到我们软件系统中,涉及哪些改动?
问题3:xx业务在系统中,有哪些相关需求涉及到,是否能找到对应的需求文档及代码详细设计文档?罗列出来
问题4:xx业务在系统中,涉及的数据库表有哪些,是新增表还是修改表?根据相关问题,查阅资料或请教同事,收集资料,并将答案写到word中。
根据需求文档的需求编号,idea全局查找,大致浏览一下项目代码,找到基础数据的来源入口。
5. 转换角色,把自己当成一个用户,从界面上去操作相关功能,对有一些不清楚概念的选项参数名词,查阅资料,理清概念。结合数据库的表字段,来理解含义,并记录到word中。
名词解释:重点把业务名词的概念搞清楚,并记录下来。这点蛮体现大家的专业和细心。把不清楚的概念搞明白,我蛮喜欢这样的。
记录下每一个操作所涉及的页面,后端接口,表。
debug调试技巧要牢靠。那这里主要说一下,debug时,常用的技巧。
1) 浏览器端chrome的开发者工具,查看每一个操作是否有涉及与后台交互,有哪些数据传输。
2) idea的全局查找和断点跟踪调试。绘制一些图表,方便直观阅读。
三、后记
这是我最近对学习复杂业务,领悟出一点小小的心得体会。
如果把技术比作是我的左手(我是个左撇子),属于惯用的,处在舒适区,代表着硬实力;那业务就是我的右手(拿笔杆子的),属于不惯用的(使不上什么劲,除了拿笔,和拿筷子),则体现出的是软实力。
一点小拙见,欢迎指正
喜欢的读者,可以关注我➕,以免迷路。分享我奔走在技术道路上的点点滴滴。
杂谈:开发人员如何进行复杂业务的学习?让boss刮目相看的更多相关文章
- 开发人员看测试之TDD和BDD
前言: 已经数月没有来园子了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来.但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动力.最近这两天有听到Jbehave这 ...
- SharePoint 2010 开发人员学习指南
kaneboy 翻译,一切内容版权归 Microsoft.1. SharePoint 开发起步教程 这是一个为准备进入到 SharePoint 开发领域的 .NET 开发人员所准备的免费在线学习课程. ...
- 适用于 PHP 开发人员的 Python 基础知识
Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...
- 每个Java开发人员都应该知道的10个基本工具
大家好,我们已经在2019年的第9个月,我相信你们所有人已经在2019年学到了什么,以及如何实现这些目标.我一直在写一系列文章,为你提供一些关于你可以学习和改进的想法,以便在2019年成为一个更好的. ...
- 【转】十步让你成为一名优秀的Web开发人员
第一步:学好HTML HTML(超文本标记语言)是网页的核心,因此你首先应该学好它,不要害怕,HTML很容易学习的,但也很容易误用,学懂容易要学精还得费点功夫,但学好HTML是成为Web开发人员的基本 ...
- 业务gis 怎么让别的开发人员不需要懂gis就可以搞开发? (五)
我们稍微搭建了一个比较简单的图形使用模板,flex端操作这里我就不说了,按大家喜好写,最后javascript部分可以通过jsduck工具生成一个开发文档给业务开发人员,前提注释部分要写好,要公开的注 ...
- .NET CoreCLR开发人员指南(上)
1.为什么每一个CLR开发人员都需要读这篇文章 和所有的其他的大型代码库相比,CLR代码库有很多而且比较成熟的代码调试工具去检测BUG.对于程序员来说,理解这些规则和习惯写法非常的重要. 这篇文章让所 ...
- .NET开发人员值得关注的七个开源项目 .
NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...
- Web开发人员常犯的10个错误
说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框 ...
随机推荐
- Educational Codeforces Round 68 Editorial
题目链接:http://codeforces.com/contest/1194 A.Remove a Progre ...
- 【Offer】[63] 【股票的最大利润】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 例如,一只股票在某些时间节点的价格为{9, ...
- 【Offer】[46] 【把数字翻译成字符串】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串: 0翻译成"a",1翻译成"b",..... 1 ...
- [ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
昨天,在测试新的数据库时,迁移表遇到了这个问题.现在记录一下解决方案. 1.在配置文件中添加关闭严格模式的配置:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS ...
- NLP(十七)利用tensorflow-serving部署kashgari模型
在文章NLP(十五)让模型来告诉你文本中的时间中,我们已经学会了如何利用kashgari模块来完成序列标注模型的训练与预测,在本文中,我们将会了解如何tensorflow-serving来部署模型 ...
- DevExpress的TextEdit、RadioGroup、ColorPickEdit设置默认值
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- apache ignite系列(五):分布式计算
ignite分布式计算 在ignite中,有传统的MapReduce模型的分布式计算,也有基于分布式存储的并置计算,当数据分散到不同的节点上时,根据提供的并置键,计算会传播到数据所在的节点进行计算,再 ...
- 创建进程池与线程池concurrent.futures模块的使用
一.进程池. 当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开启过多的任务数量就应该考虑去 限制进程数或线程数,从而保证服务器不会因超载而瘫痪.这时候就出现了进程池和线程池. 二.conc ...
- 制作mysql大数据表验证覆盖索引
昨天跟同事聊起数据表性能的问题,能不能仅用覆盖索引实现数据的汇总统计.找了一个开发环境已有的数据表进行测试,通过explain命令,能看到mysql通过覆盖索引就能实现sum的需求,而无须去读取实际行 ...
- 大数据处理中的Lambda架构和Kappa架构
首先我们来看一个典型的互联网大数据平台的架构,如下图所示: 在这张架构图中,大数据平台里面向用户的在线业务处理组件用褐色标示出来,这部分是属于互联网在线应用的部分,其他蓝色的部分属于大数据相关组件,使 ...