当前位置: 首页 > news >正文

电子商务网站建设教案wordpress置顶

电子商务网站建设教案,wordpress置顶,安卓市场2022最新版下载,phpcms网站建设转自#xff1a;软件工程能力漫谈#xff1a;比质量更重要的#xff0c;是项目管理能力 | ArchSummit 章淼老师在软件工程能力方面#xff0c;积累了多年的经验#xff0c;这个话题他之前也分享过多次#xff0c;整体上内容有修改调整。 章老师博士毕业后在清华待了 12…转自软件工程能力漫谈比质量更重要的是项目管理能力 | ArchSummit 章淼老师在软件工程能力方面积累了多年的经验这个话题他之前也分享过多次整体上内容有修改调整。 章老师博士毕业后在清华待了 12 年主要是做网络方面的研究到 2006 年的时候离开清华进入到工业界首先做了六年的用户产品研发之后在 2012 年加入百度一直做网络基础架构相关的开发工作主要是对内服务在运维部和系统部做 BFE 平台研发。2020 年 6 月份转入对外服务现在在做 BFE 商业化推广。2018 年 1 月到 2021 年 10 月份兼任百度公司代码规范委员会主席。 接下来的内容主要分为三个部分都是在围绕工程能力。第一说明清楚为什么要重视工程能力第二阐述什么是工程能力第三说一下怎么来提高工程能力。 为什么要提升工程能力 这个话题这两年受到很大的关注和现在形势变化有很大关系第一个很重要的形势是业界竞争加剧了很多所谓蓝海或者非常空白的领域已经不存在了大家都在同一个领域竞争竞争非常激烈成本已经发生了巨大的上涨现在中国软件工程师成本与美国相比差距没有那么大据之前的交流中国软件工程师的成本已经超过英国跟美国已经没有太大的差距了产业升级之前互联网公司大部分做的是 ToC 互联网现在很多公司都转向 ToB转向 ToB 对软件研发或者工程能力的要求已经有了非常大的变化。 另外也发现一些现象现在很多互联网公司加班加点。在去年还出现了 996.ICU圈外人不知道什么意思圈内人都知道每天 9 点上班9 点下班一周工作 6 天最后累到进入 ICU 重症监护室。今年我们也发现有一些变化很多公司开始响应国家号召减少工作时间尽量避免 6 天工作制。但是减少时间之后我们该怎么样保证工作产出这其实要依赖我们的工程能力。 我还观察到的现象很多的从业者写了很长时间的代码甚至 8-10 年以上但是很多的方法都是错的换句话说软件工程师是一个所谓的青春饭为什么其实跟从业者的素质是有关系的。所以以上的形式要求我们中国的软件工程师也需要更新迭代。 《经济新动能》一书讨论的是中国经济如何进行转型升级。在这种大潮流下IT 从业者或者中国软件工程师也要考虑这个问题就是这四个字“转型升级”。 什么是工程能力 很多人认识到要提升工程能力但是提升什么能力呢如果没有正确的认识可能也无从下手。有些人会认为工程能力就是写好代码。确实我们很多软件工程师每天关注的或者平时学习的东西仅仅是写代码。 但是我今天重点想表达的观念是工程能力不仅仅是写好代码这么简单也不是某一个人写好代码这么简单它反映的是团队的综合素质。软件工程师大多是理工科毕业感觉人文学科对软件工作似乎是没有太大的帮助但我经过这 20 多年软件研发之后深刻体会到做工程不仅仅是自然科学也是人文社会科学。所以对于从业者来说是需要关注那些非技术的方方面面而且你会发现在你工作的大量时间中并不是用在琢磨技术上很多时间可能是涉及到沟通等非技术因素对我们影响非常非常大还有包括项目管理这些看上去和技术并没有直接关系但是对研发项目或者工程能力影响是巨大的。 工程能力的定义来自《百度软件工程能力定义》这是百度内部的文件写于 2019 年底当时要提升工程能力需要有文件阐述到底什么是工程能力。最后我们写了这样的一句话使用系统化的方法在保证质量的前提下更高效率为客户和用户持续交付有价值的软件或服务的能力。这句话可以拆解为以下五个要点第一是研发的目的是要提供价值第二是质量第一第三是要实现价值持续交付第四要使用系统化和科学的方法第五是持续提升研发效率。 软件研发的目的是要提供价值 业界中的现象是很多从事软件研发的同学比较习惯从技术角度来考虑问题比较喜欢研究复杂的技术技术简单觉得没有意思没有兴趣去搞。这就造成我们花了大量的精力搞了很复杂的技术但是做出来对社会没有价值。所以这里面也写了一下我的观点我们在工作中所使用的手段包括技术设计、编写代码等技术只是手段而不是目的。所以我们不要因为在做的过程当中使用太多的手段而忘记我们的目的。 在软件项目规划阶段需要从客户需求或商业价值角度考虑而不是你写完整后再考虑这个问题。另外要建立成本意识我们要考虑投入产出比要做一个项目应该是有收益而不是最后获得收益比成本还要小那就亏本了。这是刚才说的第一点软件要能够提供价值。 质量第一 这一点也经常被忽视在项目紧急的时候就在时间和质量之间进行权衡和取舍牺牲质量降低对质量的要求。那么在《软件开发的 201 个原则》里面对质量也有所讨论第一条讲到质量第一。作者是这样说的无论如何定义质量客户都不会容忍低质量的产品。即使质量差也按时交付产品这似乎是政治正确的行为但这是短视的。从中长期来看这样做是自杀。质量必须放在首位没有可权衡的余地说的非常明确。我们拿这条来衡量我们现实当中工作会发现很多团队其实都是在做这样的事情。 那我们该怎么做呢第一对所有的项目首先需要明确定义质量的要求质量并不是绝对的在各个场景下可能质量要求有所不同。所以我们到底做到什么样的质量这是需要在项目初期定义清楚。第二在质量方面不能妥协。前面提到我们的软件要交付提供价值如果是低质量的软件无法提供价值整个研发活动就变得没有意义了。第三点我们也需要平衡质量和交付时间的关系不是降低质量要提高技术水平通过技术手段更高效率、更低成本的保障质量比如说我们可以用自动回归方法甚至用 AI 方法用这些高技术来保证质量。第四高质量的软件一定是设计出来的而不是靠后边测试、运维保证的这些都已经很晚了。所以我们在设计阶段就应该保证软件设计的质量这是非常关键的。 实现软件价值的持续交付 观察到很多现象即项目执行过程当中的前紧后松状态前边非常投入花了很多资源等软件研发出来之后后边软件没有人关注了会发现设计文档腐烂、代码没有人维护。原因是我们没有对软件整个生命周期与价值输出有清晰的认识我们只做了短期准备我们觉得软件开发完就结束了。所以第一点要提升认识认识到软件开发与维护都是长周期的一个软件甚至可以运行 10、20 年。在这样的认识基础上需要综合考虑全周期的研发成本问题而不是只考虑开始的时候很快的最后成本非常高。要做好长期维护的准备而且要持续进行改进一个软件是逐步通过长期迭代、长期优化产生出来的。 这一点也非常非常重要。我们可以看到的现象是什么在中国软件很多从业者是缺乏对软件开发方法的深入学习。我曾经做过调研很多从业者看过真正的软件工程的书籍不超过两本甚至有些人没看过比如说我看到一些列表某个语言的用法比如说某些网络知识这些都不是专业的软件工程的书籍我们可以看到在中国软件复用比例是非常之低的。所以这一点我们首先要认识到软件工程本身是一个非常专业的方向软件诞生已经超过半世纪这些方法甚至在上世纪 90 年代已经出现很多成熟的方法但是非常遗憾的是中国很多从业者对这些方法都还没有充分的掌握。另外我们也要基于现在优秀的基础设施高速迭代现在出现了像云原生思想包括很多设施已经云化这些对我们是非常有帮助的。还有软件复用能力建立可复用的软件。 使用系统化和科学的方法 是否使用科学的方法效率差距是非常大的可能差 10 倍、100 倍甚至从零到一你用这些正规方法有些软件就可以搞定如果你没有掌握系统科学的方法这样复杂度的软件你可能根本搞不定。所以掌握科学方法对我们驾驭大型软件是非常重要的。 谈到系统科学方法我引申一下我们需要坚持软件开发的原则很多从业者在现实中我发现很容易屈服于各种外部力量比如说一个领导怎么怎么说或者说他的需求方怎么怎么说或者周围人怎么怎么说就很容易做出很扭曲的行为。这个原因是什么呢我思考一下因为很多从业者并不知道软件研发的基本原则一个人当他心里没有原则的时候很容易屈服于外界压力所以我们需要坚持软件开发的原则。 这里讲到什么是原则原则是工作的准则而且它代表了很多的集体智慧。在《软件的 201 原则》里提到了很多重要的原则我们这儿列了一下比如说质量第一先确定问题再写需求没有文档的设计不是设计。像这样的原则都非常重要但是你仔细想在现实工作当中很多团队、很多人在工作当中不断的打破这些原则这恰恰是造成我们工作非常低效重要的原因。这里面我写了没有原则就会随意妥协结果就是低效、低质的工作。 这也是百度这些同学为什么在过去两年很努力在推这本书《软件开发 201 个原则》这是 1995 年出版的非常经典的软件工程书籍这里面提到很多重要的原则这本书上个月已经正式出版我们发现很多开发者对这本书评价非常高。但是我也看到很多人对这些原则嗤之以鼻甚至看不懂有些人对这本书评价非常低这一点是非常令人痛心明明不知道这些原则当把这些原则告诉他的时候也没有任何感觉这一点我是非常遗憾的。 持续提升研发效率 研发效率绝对不是一天可以见成的甚至永无止境。发现很多管理者对业务目标非常关注但是对软件研发的能力并没有持续关注。这是一个非常大的误区。所以提升效率、提升人效应该是一个软件研发团队一直需要追求的目标应该去想一想我们今天是怎么做软件的一年两年之后我们怎么能够更好的做软件会有什么变化。 软件工程能力提升该怎么做 在百度的软件工程能力定义里工程能力的素质中的个人能力素质包括团队的能力素质以及公司的能力素质。个人能力素质包括需求的把握、系统设计这两个主要是关于前面的设计阶段。编码能力、项目管理还有运维能力这是软件后期上线运维以及产品意识、客户服务意识、安全意识、质量意识还有沟通能力。对一个个体来说这些是非常重要的工程能力。 这里想强调一点对于工程能力来说人是根本。我认为人的要素是最为关键的。这里面有一个说法为什么使用同样工具的人为什么你的效率只有别人的 N 分之一。而且对一个优秀的人来说他只使用一般的工具他工作的产出会远远超过一般的人使用优秀的工具。还有一个很重要的趋势是什么呢小规模优秀工程师团队要远远超过大规模一般工程师团队。这是为什么呢因为对一个大的团队来说沟通成本是非常高的团队内沟通成本是随着人的数量呈指数级上升。所以这方面由于现在软件工具提升包括各种云平台的出现实际上把效能变的更大了一个小的团队可以做非常非常多的事情。 对于一个优秀产品一定是来自于优秀的人与团队的一定不是来自一个一般的团队。我也曾经讲过软件是人类智慧的结晶优秀的智慧结晶一定是来自优秀的人与团队。所以我的建议是软件研发主管或者 Leader多投一些精力培养团队成员。 从个人素质来讲我经常简化为三点代码、文档、项目管理。这三者当中的排序我个人认为项目管理是高于文档、高于代码这可能跟很多人的认识会不一样很多工程师认为代码是最重要90% 甚至 95% 以上的软件工程师是忽视项目管理的没有掌握正规的方法。 首先从代码说起要求非常清楚要能写出让别人很容易看懂的代码这个要求好像非常低但是其实很多人是做不到的。这里面我引用的是 Python 的非常好的一句话第一句话是优美比丑陋好你的显示比隐示更好。其实 Python 语言很多人没有关注到这里面讲到的东西所以我们代码应该是写的要尽量简单、尽量优美要尽量使用简单的方法。 所以写好代码方法也很简单我这边列了五点 第一合理的模块划分。很多同学模块划分有很严重的问题导致未来软件维护非常困难也非常难以复用。第二清晰的函数定义。别看函数这么简单我发现很多同学对函数语义定义并不清楚。第三短小清晰的代码段落。如果我们想想很多同学写出的代码几百行没有任何一行空行、注释。第四准确的命名强调一下漂亮代码要具备一定的语文基础写代码和写文章一样。第五清晰的注释确实应该讲很多人的代码里面几乎看不到任何一行注释。 此外认真的代码评审是提升代码质量最好的方法同时也是传播编程方法最好的方法。但是非常遗憾在中国互联网行业还有很多团队没有真正执行代码评审。 真正的软件工程师在软件上的追求差一个空格都不行。我们离这个目标还很远。 工程能力提升的第二点文档 我们需要大家重视文档文档的忽视确实受到了所谓“敏捷”运动的影响因为很多人对敏捷有错误的认识似乎很多人的概念里敏捷就是不写文档。但是我今年确实对敏捷做了一些研究敏捷运动当时的起源是应对上世纪 80 年代或者是 90 年代非常重视文档要求做一个项目要写非常非常多文档文档已经成为工作的负载。所以敏捷思想提出要少写一点文档是说少写一点而不是不写不知道在中国怎么传成敏捷就是不写项目文档。 在《软件开发 2.0》的书里面明确提出没有文档的设计不是设计。所以现实当中很多软件工程师没有做设计直接就是扑上去写代码这件事情是非常荒谬的在其他行业都会去写设计文档再投入生产而在我们这个行业都没有写任何文档就做完了开始编码所以这件事情非常荒谬。 另外一个角度大家要认识到为什么要写好项目文档因为在整个项目过程当中我们有超过 50% 的时间是用来沟通的所以沟通效率会极大影响研发的效率。文档的目的是什么呢我认为第一点提升沟通的效率通过一个清晰的文档可以极大提升沟通效率。第二是提升对思考过程的管理。你在整个设计过程当中我们把文档作为一种设计工具用来整理思想。 所以从这个角度出发我们很多人关于文档是作为最后存档方式的一种认识是非常错误的。这里面我写了两句话第一不会写文档就等于你不会做设计。第二不会写文档就无法成为高级工程师。所以很多人的天花板是非常明确可能写了 8-10 年的代码但是你不会写文档所以至今仍然无法跃升成为高级软件工程师。 怎么才能写好文档第一用户思维。比如说写需求文档要从用户角度想问题而不是从内部实践角度。第二准确的概念定义。这跟刚才讲代码命名有一点类似命名代表了概念在文档里面也同样面临着概念的问题。第三要有清晰准确的逻辑这一点也非常重要。第四可能大家一般没有关注到就是规范的表达方式。无论是用文字还是图表我确实在工作当中会说某某同学请你不要再使用你的方言。很多人确实没有使用规范的方式他用自己看懂的方式表达别人理解起来很困难。第五一定要有研究和思考能力我们在工作当中都在不知不觉做着研究研究就是定义问题、分析问题、解决问题。第六严谨科学态度很多同学写文档有很多的问号、不清楚的地方都留下来这样的话保留之后进入下一阶段这样做的系统是经不起历史与时间的检验。第七要认真和充分的设计评审很多团队在代码评审上做的不好应该在文档评审上做的更差很多文档可能没有人看直接通过了。所以这里面现在是 7 点似乎好像很简单如果能把这些做到我们一定可以产出非常高质量的项目文档。 也推荐对大家提升文档是有帮助的两本书第一《人人都是产品经理 2.0》如果想学怎么做需求分析我建议看看这本书即使你不是产品经理。第二本是《金字塔原理——思考、理论和解决问题的逻辑》也很不错大家可以看看这两本书。 第三点要强调的也是最高优先级的重视项目管理。从我到工业界差不多 15 年时间我认为大量的团队忽视了项目管理在《软件开发的 2.0》里面提到一个观点原则 127好的管理比好的技术更重要。有再好的技术如果你管理的不好这个项目也是要失败的。这里面就会有一个大家经常问到的问题我不是管理者也不是 Leader为什么要做项目管理从德鲁克的观点出发他提到我们现在这些人从事着这些行业其实都是知识工作者每个知识工作者都是管理者我们要站在这个角度上看问题。所以每个工程师其实都是管理者要做好自己的管理。而且现实工作当中你会发现很多项目是工程师在管理他的经理、Leader这些细节都管不过来。而且从整个行业趋势来看高度自组织的小团队才是趋势。大家可能记得我前面提到由优秀的人构成小规模软件工程团队远远高于大规模一般人构成的团队。 好的项目管理来自第一了解项目管理的常识和原则第二实事求是的态度。我发现很多人在面临项目问题的时候采取回避或者是隐瞒的态度这不利于项目正常进行。所以这里面非常强调我们要讲真话要敢于向外披露。 第三需要对知识社会有正确的理解。知识社会的特征是什么从权利为中心转向以知识为中心我们要尊重专业、自主管理这些不是靠人能看住即使可以看着人表面在工作但没有看住大脑。还有以人为中心要摒弃大工业生产的思想每个人都是螺丝钉每个人都会被替代这样的思想是会被替代的。 这里面推荐两本书一个是德鲁克《知识社会》如果没有知识社会我们不可能建立现在非常高效知识团队。第二本书是清华的《快速开发》出版的非常早但是非常好的一本书。 总    结 我们的社会越来越被信息驱动在信息社会里面软件驱动信息社会软件研发是非常重要的。其次软件工程师的提升对中国有巨大的意义大家不要忽视自己的责任。
http://www.zqtcl.cn/news/632526/

相关文章:

  • 毕业设计论文网站开发需要多少湛江建站免费模板
  • 做豆制品的网站集团网站建设策划方案
  • 燕郊网站制作哈尔滨企业网站建站推荐
  • 本地网站做通用会员卡建立电子商务网站目的
  • ftp网站地图怎么做网站模板出售
  • 用rp怎么做网站导航菜单手机app制作入门教程
  • 国外创意网站市场营销在线课程
  • 怎么做点图片链接网站网站建设云解析dns有什么用
  • 重庆网站建设哪家公司哪家好企业 网站规划与网页设计word
  • 手机必备软件100个网站建设和优化排名
  • 天津公司网站怎样制作网页设计图片尺寸
  • 网站建设中模板代码网络营销推广公司哪家好
  • 百度免费建立网站搜索引擎推广效果
  • 网站建设分金手指排名十二建设内容管理网站的目的
  • 无锡网站策划制作网站的工具
  • 免费的网站开发软件百度做网站推广的费用
  • 汽车维修东莞网站建设怎么用阿里的域名 做网站
  • 网站怎么做免费cosy WordPress
  • wordpress 关闭自动更新青岛济南网站建设优化
  • 外贸网站推广平台哪个好如何建设手机端网站
  • linux新建网站巩义网站建设定制
  • 网站建设要什么软件有哪些北京seo
  • 空调设备公司网站建设wordpress 4.9
  • 潮州市网站建设公司网页设计代码模板素材
  • 深圳做网站开发费用个人网页设计作品手绘
  • 怎样做网站跳转国内企业建站模板
  • 优化网站哪个好互联网公司市值
  • 广州微信网站开发游戏企业用什么程序做网站
  • 深圳赶集同城网站建设网站空间类型
  • 怎么样做网站代wordpress手机上传图片插件