22如何为项目做好技术选型

在架构设计过程中,肯定绕不开技术选型这个话题,大到架构、框架、语言选择,小到用什么组件、设计模式。

这也是最容易引起争议的话题,无论是现实中还是网上,到处有各种语言、框架的争论:Java好还是C#好?前端框架是Vue好还是React好?跨平台手机开发,该选React Native还是Flutter……

虽然这种争论从来没什么结果,但当你做技术选型时,却很容易受到这些信息的干扰,尤其是你身边有几个某种语言或者框架的狂热粉丝的话,他们会不停地在你旁边吹风,说他喜欢的语言或框架的各种好处。

阅读全文

21架构设计:普通程序员也能实现复杂系统

早些年,软件很简单的时候,不需要需求分析和架构设计,直接采用边写边改(Code And Fix)模型,也能做出来。后来软件复杂了,就对程序员要求特别高了,所以早些年的软件开发,都是个人英雄主义盛行。比如张小龙一个人完成了Foxmail,求伯君完成WPS,王江民写KV杀毒软件……

不过,那时候对于普通程序员来说,去写这样复杂的系统,也是可望而不可及的。再后来软件产品越发复杂后,靠高手的开发模式也不可行了。

软件需求越来越多,而高手又是稀缺资源,所以要解决的一个问题就是:让普通程序员也能参与其中,一起实现复杂系统,而不必依赖于很多精英。

阅读全文

2期-软件开发30个常见问题解决策略-需求分析相关

我们专栏已经完成了项目管理和需求分析这两个模块的学习。这两个模块看起来都和技术没什么关系,但却是项目中至关重要的部分。

项目管理贯穿项目始终,需求是项目的源头。希望通过对这两个模块的学习,能加深你对项目管理和需求分析知识的理解,能应用其中一些方法,帮助你个人能力更上一层,项目越做越好。

这个过程中一如既往的收到很多同学的精彩留言。其中有一些是提问,一些是针对文章主题自己独到的思考,这些内容都是对专栏内容最好的补充,可以加深你对软件工程的理解和学习。

阅读全文

20如何应对让人头疼的需求变更问题

我以前在国内做开发的时候,加班加点是家常便饭。这几年在美国工作,极少加班,但是产出却并没有下降,所以我一直在思索其背后的原因。这里面涉及因素很多,包括大环境、管理水平、配套设施等,但是有一个因素至关重要,那就是需求变更。

在国内很多软件公司,需求变更是常态,开发到一半,很多原始需求就发生了变化,这时候当初的设计已经不能满足要求了,很多代码需要修改,不得不加班加点来赶上进度。

反观不加班的美国公司,需求确定后很少变更。这样开发人员就可以针对需求有良好的架构设计,而不用考虑太多可能的变更,从容地在项目计划的时间内完成任务,而不需要加班加点。

阅读全文

19作为程序员,你应该有产品意识

最近电视剧《都挺好》热播,没想到其中一段台词却引发了很多程序员的集体焦虑。台词说的是:“作为一个程序员,你的年龄已经很大了!我问你,你学新东西有年轻人快吗?”

是呀,年纪越来越大,而新技术却层出不穷,是难免会焦虑。但如果你真的每个新的热点技术都去跟,都去学,就可以不焦虑了吗?我看也未必,因为新技术一直会有,学习也都是有成本的,只要你不能一直跟上新技术的步伐,你就会一直焦虑。

那焦虑是怎么产生的呢?

阅读全文

18原型设计:如何用最小的代价完成产品特性

我们都知道,软件项目中很多问题都和需求相关,比如说需求不明确,需求变更。这些问题轻则导致返工造成浪费,重则导致项目失败带来巨大损失。所以在软件工程中,搞明白需求是一件至关重要的事。

上一篇我带你学习了如何分析需求的方法,而分析需求,同样也离不开工具的支持。所以这一篇,我将带你学习需求分析中原型设计的用法,借助原型设计,用最小的代价完成产品特性。

什么是原型设计?

阅读全文

17需求分析到底要分析什么怎么分析

通过前面的学习,我们知道在瀑布模型中,第二个阶段就是需求分析阶段,同时需求分析的结果也决定了后续的系统设计、开发、测试等阶段能否顺利如期进行。即使是用敏捷开发,同样也少不了对需求的分析整理。

可以说需求就是整个产品的源头,所以需求分析的结果往往决定了产品的成败。如果没有正确把握客户需求,可能就会一步错,步步错!

就像我在《特别放送 | 从软件工程的角度解读任正非的新年公开信》提到的秋千的案例:

阅读全文

15不能盲目乐观,凡事都应该有B计划

说到风险,很多人都模模糊糊有一些了解,然而在软件项目中,有风险意识的却不多。比如说:

  • 估算一个模块工作量,程序员总是会给出一个乐观的进度,而最终实现这个模块的时候,却发现总是有些其他的事情发生影响了进度;
  • 一个关键的程序员,突然离职了,导致项目进度停滞。其实早前就有一些迹象,而项目经理没引起重视;
  • 技术负责人很激进的采用了一个最近很流行的新技术,结果做的过程中,发现这个技术还不太成熟,很多坑没法填,导致项目最终失败;

阅读全文

14一切管理问题,都应思考能否通过工具解决

早些年我在做项目管理工作的时候,除了制订计划外,还要花不少时间去跟踪计划的执行情况。

项目管理上出了问题,管理者总是喜欢从流程规范的角度去想办法,于是为此设定了不少流程规范,例如每天要写日报,根据日报更新项目进度,每周要开周例会,看看项目有没有执行上的问题。

对任务进度的量化也是个很困扰项目经理的事情,需要频繁的去问程序员:“你这个任务进展如何,大概完成比例多少?”,从程序员那得到的答复通常都是个很乐观的数字,例如80%。第二天以为他能做完,结果一问是90%,就这样要持续好多天才真的算做完。

阅读全文

13白天开会,加班写代码的节奏怎么破

说到开会,是很多人心中的痛,每天白天忙于参加各种会议,压缩了本来就少的可怜的工作时间。最可气的,有的人开完会工作就算完成了,而像我们写程序的,还得下班后加班加点赶进度!

所以一说到开会,程序员们往往如遇洪水猛兽一般,避之不及。

开会是有价值的

阅读全文

12流程和规范:红绿灯不是约束,而是用来提高效率

不知道你所在的软件项目中是不是也有各种流程规范,例如:

  • 开发人员不能直接在生产环境修改代码操作数据库,必须在本地先测试验证后,由运维操作;
  • 代码需要Review通过才能合并主分支;
  • 代码需要遵守各种规范,像命名、格式,还有缩进用几个空格还是tab的细节问题;

阅读全文

11项目计划:代码未动,计划先行

若干年前,我接手一个陷入困境的项目,当时的项目经理刚从技术高手转型项目管理,还是没有摆脱技术思维,项目没有什么计划。

他把关键模块分给了自己开发,同时还要兼顾项目管理,导致自己的工作遇到瓶颈,其他人的进度也受影响,大家加班加点也没什么进展,士气低落。

我接手后,第一件事是重新制定项目计划,在排任务时,避免了对某个人的过度依赖,设置了几个关键里程碑。我还特地把第一个里程碑设置的相对容易一点,只需要运行核心功能。

阅读全文

作者的图片

TsingChan

万事头开难,好开的始成功的一半。
软件工程。
践行目标管理,践行自动化降本提效,践行社会主义核心价值观。

IT IS ALL

中国.福建