前言
最近与朋友聊到编程的话题,对于以业务为主导还是以技术为主导的思想产生辩论
以业务为主导的思想
- 技术是以服务于业务为优先
- 从业务出发,将业务的抽象化,细分各种小模块
- 业务细化是项目工程化的关键,可以逐个攻破难点,一些存在未知修改或者未来扩展的功能也应该分离,便于以后重构
- 技术在此过程中,担任工具的角色,不必担心技术的具体细节,世界上许多代码开源且文档丰富,如同我不需要知道车子怎么造只要会开就行了
- 这种思想适合在管理与决策上,业务抽象且细化后,从开发到测试到优化,具体实现可以安排专业领域的人去完成
以技术为主的思想
- 由新的技术去推动业务的发展,对个人来讲,专研某一领域的技术,给个人带来本质的提升的同时,可以对某企业的服务带来高效的生产力
- 作为技术专业人员,技术是基本素质与赖生工具,是敏锐的直觉与慎重的思维的结合,由此,高端人才能hold住业务,对业务的建模、工程化做出最优的决策
- 计算机科学为人造科学,很多思路实质是从
人类社会行为
学习过来的,可以理解为操控机器去解决人类生产力问题的方法论 - 技术发展与沉淀,形成各种优秀的工具,吾等开发者应当勤奋学习各类工具,掌握高端领域的技术,在业务工作中发挥举足轻重的作用
总结
- 以上两种思路,实际上是个人精力有限的情况下,如何面对对待
工作的业务需要
与个人技术发展需要
的取舍 - 顺便讲一下开发者面对业务需求或者问题的思路
- 抽象化问题,细分要点
- 明确数据流的方向
- 对数据的处理环节,不管是从函数调用到IPC到网络通信,都是中间件,依顺序分析
- 初始状态的定义,如数据结构、数据库表设计
- 找出最小状态单元,状态转移方程
- 思考要全面,兼顾未来变化和扩展的可能
- 提出解决方法,且随有严谨的测试、验证方法
- 哪怕面对
对个人而言全新的未遇见过的难题
,去抽象且细化问题,最后都是依靠经验去解决的问题