脑力开发

首页 » 常识 » 诊断 » 和软件开发相关的一些思考
TUhjnbcbe - 2021/1/6 23:34:00

1.

虽然有一句话叫“deadline就是第一生产力”,并且在很多人身上还挺灵验的,包括我。但是这个“灵验”,其实是不考虑质量的。

如果考虑质量的话,通常deadline是没有用的。这是因为,在大多数时候,对于脑力劳动者来说,所做的事情,并非是对以前工作的重复。

永远有新的状况会发生,导致deadline无法完成。所以,真正良性的项目开发过程,不是拼命去赶deadline。

当然,这不意味着制定deadline或者制定计划没有意义。但关键是,在项目执行的过程中,需要不断地根据实际情况去调整计划。

这本质给项目管理带来了挑战。因为项目管理者需要小心地分辨:deadline没有完成,到底是项目成员怠工?还是项目计划制定不合理?亦或者是新的,没有预估到的情况发生所导致。

这些判断,分析,对项目的把控并合理做出调整,就是有经验的项目管理者的价值。

而一刀切地使用固定的deadline,是没有技术含量的,随便谁都能做。

在软件开发的过程中,一刀切地使用固定的deadline,结果也一定是牺牲软件的质量。

2.

以上这一条,同样适用于很多非软件开发的脑力活动。比如学习。

给自己制定计划,每周学习多少内容;每天背多少单词;每天看多少页书;等等等等,通常都是不合理的。

合理的学习计划不是在学习之前制定出来的,而是在学习的过程中,慢慢调整出来的。

否则,一味地坚持自己最初制定的学习计划,只能牺牲学习质量。

如果你经常主动学习,尤其是有质量的学习,一定会经常调整自己的学习计划,认真审视自己最初制定的学习计划的不合理之处。

慢慢的,你就能找到自己的学习节奏,制定出越来越合理的,适合自己的学习计划。

你就变成了一个“有经验的学习者”。

我曾写过一篇文章,叫《慢增长》,也聊过这个问题。

3.

永远不要让开发者估计开发时间。大多数开发者(在我看来是所有开发者,包括我)都会高估自己的开发速度,低估软件工程的复杂程度。

所以,再一次,有经验的项目经理是非常重要的。当然,前提是有经验。

这则漫画搜索自网络,我没有找到作者信息。侵删。

4.

不同的语言,平台,框架,IDE,系统,编程范式,等等等等,他们都只是工具而已。

因为这些工具而打架,是很幼稚的。

争执到底是Java好还是Python好,到底是面向对象好还是函数式编程好;已经暴露了你是一个初级程序员。

这近乎等于是在争论:到底是十字改锥好,还是一字改锥好,亦或者是扳手更好。

关键的问题不是谁更好。实际上,我们也无法定义出到底什么是“好”。

关键问题是:你现在的项目,你现在要完成的事情,你现在要解决的问题,使用什么工具更合适。

软件行业的经典结论,就是没有银弹。

不管你对什么技术疯狂的痴迷,都应该明白,这种技术不能解决所有问题。

5.

我有些怀疑,一门心思地只做技术,不与人做“真正的沟通”,会让人越来越自大。

因为技术是一个太有掌控感的事情。计算机一定按照你写的每一行指令去运行。而计算机运行出你所期望的结果,又是一件太有成就感的事情。

这两件事情在现实世界都不太会发生:

1)没有人会永远按照你的指令去做事情,哪怕你是总统,首富,或者CEO;

2)世界不会按照你所期望的方式运转。

所以,很多人技术做得太久,会孤芳自赏,会自大,会渐渐“丧失”理解其他人的能力。

这里说的技术,是广义的,不仅仅局限于计算机技术。

技术人员也需要多和“人”做真正的沟通,而不仅仅是和计算机做沟通。

了解不同人的想法,不同人思维的差异,可以让你更容易地去接受这个世界存在着的不同。这将让你更谦虚。

在我看来,这种谦虚,是有力量的。

众所周知,乔布斯是一个自大的人。但是,请大家看看这段影片所展现的,到底是乔布斯更自大,还是提问的技术人员更自大?

这则录像来自年,乔布斯刚刚回归苹果不久,一次开发者大会上,乔布斯对这样一个问题的回答。

“乔布斯,你是一个聪明又有影响力的人。但是很遗憾也很明显,很多时候你根本不知道自己在做什么。我希望你能用清楚的语言解释一下Java编程语言以及其变种是如何阐述OpenDoc内置的一些想法。等你说完以后,你能不能跟我们说一说你自己过去七年都干了些什么?”

我们可以说乔布斯展示出的风度,在于他视野的广阔,经历的丰富,等等等等。

但在我看来,最根本的一点,还是在于:乔布斯

1
查看完整版本: 和软件开发相关的一些思考