技术与业务的一些思考

前言

最近与朋友聊到编程的话题,对于以业务为主导还是以技术为主导的思想产生辩论

以业务为主导的思想

  • 技术是以服务于业务为优先
  • 从业务出发,将业务的抽象化,细分各种小模块
  • 业务细化是项目工程化的关键,可以逐个攻破难点,一些存在未知修改或者未来扩展的功能也应该分离,便于以后重构
  • 技术在此过程中,担任工具的角色,不必担心技术的具体细节,世界上许多代码开源且文档丰富,如同我不需要知道车子怎么造只要会开就行了
  • 这种思想适合在管理与决策上,业务抽象且细化后,从开发到测试到优化,具体实现可以安排专业领域的人去完成

以技术为主的思想

  • 由新的技术去推动业务的发展,对个人来讲,专研某一领域的技术,给个人带来本质的提升的同时,可以对某企业的服务带来高效的生产力
  • 作为技术专业人员,技术是基本素质与赖生工具,是敏锐的直觉与慎重的思维的结合,由此,高端人才能hold住业务,对业务的建模、工程化做出最优的决策
  • 计算机科学为人造科学,很多思路实质是从人类社会行为学习过来的,可以理解为操控机器去解决人类生产力问题的方法论
  • 技术发展与沉淀,形成各种优秀的工具,吾等开发者应当勤奋学习各类工具,掌握高端领域的技术,在业务工作中发挥举足轻重的作用

总结

  • 以上两种思路,实际上是个人精力有限的情况下,如何面对对待工作的业务需要个人技术发展需要的取舍
  • 顺便讲一下开发者面对业务需求或者问题的思路
    • 抽象化问题,细分要点
    • 明确数据流的方向
    • 对数据的处理环节,不管是从函数调用到IPC到网络通信,都是中间件,依顺序分析
    • 初始状态的定义,如数据结构、数据库表设计
    • 找出最小状态单元,状态转移方程
    • 思考要全面,兼顾未来变化和扩展的可能
    • 提出解决方法,且随有严谨的测试、验证方法
    • 哪怕面对对个人而言全新的未遇见过的难题,去抽象且细化问题,最后都是依靠经验去解决的问题