当前位置: 首页 > 科技观察

关于互联网公司和软件工程的事情

时间:2023-03-13 02:23:34 科技观察

关于软件工程,我一直有一些零散的想法。恰好@技术人攻略在这一期谈到了这个话题,于是写了这篇“散文”文章。关于延期2004年,我大学毕业加入新浪时,正好参与了一个大型的互联网项目——新浪教育频道实习生就业项目。进度由项目经理把控,需求分析报告只有iPhone侧面这么高。流程比较正规,有ER图、数据结构表、接口图。从项目开始,我们每天都加班到晚上四五点钟,才回去睡觉,早上九点才回到工作岗位。还记得我和卫平半夜3点出去买烟,回来就看到前端妹子哭着嵌入页面。***该项目已延迟很长时间。出于对加班的恐惧,我当时对软件工程产生了兴趣,然后看了很多关于软件工程、统一过程、敏捷开发、极限编程、deadlines、人月神话的书。我试图理解为什么需求和开发之间存在如此大的差距,以至于它可以成为一门独立的学科。这种思考一直持续了很多年,直到2009年回到新浪担任新浪云计算的产品经理时,我才找到合适的答案。SinaAppEngine项目于8月成立,第一个版本于11月上线。整体进度延迟了3天(这也是11月3日推出的原因)。那时候,我们只有五六个人。我在新浪云负责的最后一个大项目——新浪云商城,一期上线,没有任何进度滞后。这让我发现延迟的核心问题其实不是流程,而是需求。作为一个开发了过亿访问量系统的产品经理,我对需求和进度的把控非常精准。当我们分解需求时,我们可以在技术实现层面讨论时间表。最后,我们的时间表可以精确到小时级别,误差天数。这一招屡试不爽,从快速恢复到JobDeer.com,我们的进度最多延迟几天。让我们谈谈质量控制。如何提高软素质程序员有把自己的高标准放在别人身上的习惯。所以我们会发明各种高效但不易于使用的框架,思考——如果你连这个都不懂,你算什么程序员?我一直是这么想的,但是当我2008年自己开了工作室的时候,发现招不到技术特别好的人,我们新招的同学连面向对象都不懂。所以后来我写了LazyPHP框架,它是一个将面向对象和面向过程封装起来的框架。整个框架有20个函数来处理一切。它只有一个目标,就是让不懂面向对象的人也能写出功能强大的Web程序。一般来说,它确实如此。还有一件事。在设计SAE时,讨论最多的话题之一就是如何让写出糟糕代码的程序员能够自我纠正。后来我们用云豆和配额来实现软限制。现在SAE上访问量特别大的应用优化的非常好。如何提高硬质量我从不相信软件是艺术,艺术永远比完美更好。所以一些核心的质量指标是必要的,比如单元测试、编码规则、定期的安全检查。而这些东西也不应该像天书一样天天读,而应该简单粗暴的在代码发布系统中实现,不遵守就不能提交代码。坦白讲软件工程,我觉得“软件工程”这个名字已经过时了,它是软件时代的遗物,放到互联网时代就很奇怪了。软件不再是一个定义好的大型项目,分发给外包公司实施。它是产品的组成部分,也是受需求影响最大的部分。需求分析,最初是软件工程的起点,现在已经由专门的产品团队来完成。这个决定创业公司生死存亡的事情,其实以前都是程序员干的。没有用户画像和应用场景,用户故事很容易迷失万里。我们需要一个新的、整体的产品工程,一个每天迭代整个产品过程的过程。我在这个方向上找到的最接近的理论是《精益创业》。它是产品全过程精益开发的实现方法论。我认为“产品工程”在未来会取代“软件工程”。大型互联网公司的技术团队会分为两类人,一类是私有云平台——提供通用技术能力(这部分前期可以使用公有云),一类是直接合并到业务团队进行实施。超大型项目将通过API划分平台和应用,通过强隔离有序生长;而过去的那些依赖,也会在这一层得到很好的解决。大多数人不需要关心系统,他们只需要关心自己的应用程序。软件工程本身已经浴火重生,从面向过程的管理变成了面向对象的支持环境(有点像对象容器)。具体的东西我也没有想太多,就随便写了下,大家可以顺便看看。