Go Ahead, Throw That Practice Out

Go Ahead, Throw That Practice Out

Naresh Jain Malad, Mumbai, India

WhAT Do SUCCESSFUl TEAMS Do ThAT oThERS Don’T? They constantly question their own practices and try to eliminate wasteful ones. They merci- lessly refactor their processes along with their software.

Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher. This French quote from Antoine de Saint Exupéry means “Perfection is attained, not when there is nothing more to add, but when there is nothing left to take away.”

Why don’t teams apply this principle today? Why is it that over a period of time, the value of the end product gets thinner and thinner, and the process and byproducts get bulkier and bulkier? Why do the lines of code expand, while the useful features of the software become fewer and fewer?

Key indicators that things are “broken” in the software development processes:

? The software bloats up in terms of lines of code and useless features

? The team building the software keeps growing in size

? The process gets more and more prescriptive, dogmatic, and rigid

? The team is experiencing “death by planning” meetings

? The amount of documents and supporting artifacts increases exponentially

? Newly discovered bugs keep pouring in from customer test groups

Team leaders have a tendency to keep adding more processes, more checks, and more audits, thinking that an increasingly stringent process will solve the problem. In my experience, it’s never a process issue. Adding more processes will only make it that much more difficult for the team to see the root cause of the real problem.

?

???????????????Why is it that most teams are afraid to throw away practices that are not really helping the team? Why do teams start off with as many practices they can think of, instead of adding the practices just in time?

This could be a symptom of the team not really understanding why it is using the process in the first place. Or it could mean that someone who does not fully understand the software development process is forcing a heavy-handed methodology upon the team. In either case, the project becomes a “house of cards” ready to disintegrate into a useless pile of code bits. Trying to change anything, without understanding the true reason the project is expanding without adding value, is useless.

In my opinion, a good project manager should have a healthy grasp of how the team is working. He/she should be able to stand back and evaluate how each process imposed on the team impacts the throughput of functional software.

A knowledgeable project manager should sift through all the possible activi- ties a team might be asked to do and retain only those that are vital to the success of this specific project. Once the leftover practices from projects past are swept away, the team’s productivity and throughput should get better in a short period of time.

“Less is more” is a very important philosophy when it comes to process.

时间: 2024-10-03 06:09:27

Go Ahead, Throw That Practice Out的相关文章

Java Concurrency in Practice 4.1-4.2相关问题及理解

今天终于又重新拿起了Java Concurrency in Practice,之前被虐的体无完肤,在看这本书之前,有一部分自己写的代码我根本没意识到是线程不安全的,还真的是要恶补这方面的知识. 1.Java监视器模式 监视器模式其实很简单,就是用私有对象的锁或者内置锁来保证所属对象的线程安全性.这里引入一个例子:车辆追踪 public class MonitorVehicleTracker { private final Map<String, MutablePoint> locations;

hdu 1094 A+B for Input-Output Practice (VI)

A+B for Input-Output Practice (VI) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 63087    Accepted Submission(s): 42387 Problem Description Your task is to calculate the sum of some integers.

npm run dev报错,events.js:160 throw er; // Unhandled &#39;error&#39; event

错误代码如下: [email protected] dev E:MySoftwaretestGitwebpackvue-projectnode build/dev-server.js "8088" events.js:160 throw er; // Unhandled 'error' event ^ Error: listen EACCES 0.0.0.0:8080 at Object.exports._errnoException (util.js:1026:11) at expo

异常处理(throw,throws,try,catch,finally)

一.异常 1.定义:程序在运行时出现的不正确的情况. 2.由来:问题也是生活中的事物,也可以被Java描述,并被封装成对象. 其实就是Java对不正常情况进行描述后的对象体现. 3.划分:Java对于异常的划分分为两种:一种是严重的划分.一种是非严重的划分. 严重的异常,Java使用 Eroor 类进行封装. 非严重的异常,Java使用 Exception 类进行封装. Error: 对于error,我们一般不使用针对性的代码对其进行处理. Exception: 对于exception, 我们一

throw er; // Unhandled &#39;error&#39; event

events.js:72 throw er; // Unhandled 'error' event ^Error: listen EADDRINUSE at errnoException (net.js:904:11) at Server._listen2 (net.js:1042:14) at listen (net.js:1064:10) at Server.listen (net.js:1138:5) at Object.<anonymous> (F:\socket\index.js:9

java 19 - 7 throw和throws的区别

1 /* 2 throw:如果出现了异常情况,我们可以把该异常抛出,这个时候的抛出的应该是异常的对象. 3 4 throws和throw的区别(面试题) 5 throws 6 用在方法声明后面,跟的是异常类名 7 可以跟多个异常类名,用逗号隔开 8 表示抛出异常,由该方法的调用者来处理 9 throws表示出现异常的一种可能性,并不一定会发生这些异常 10 throw 11 用在方法体内,跟的是异常对象名 12 只能抛出一个异常对象名 13 表示抛出异常,由方法体内的语句处理 14 throw则

使用 Throw 抛出错误消息

Throw 命令没有Exception severity 参数,The exception severity is always set to 16. Raises an exception and transfers execution to a CATCH block of a TRY…CATCH construct in SQL Server 2012. THROW [ { error_number | @local_variable }, { message | @local_varia

OSSIM best practice 顺利登上美国主力电商平台

OSSIM best practice 顺利登上美国主力电商平台 <开源安全运维平台OSSIM最佳实践>,Open Source Security Operation Platform: OSSIM best practice (with CD-ROM) 在国内取得不错的销量之后今日登陆美国各大电商平台. 全球OSSIM爱好者可以通过亚马逊amazon.com.ebay.com等海淘到<开源安全运维平台:OSSIM最佳实践>,任何银行的mastercard/visa信用卡都可购买.

hdu 1093 A+B for Input-Output Practice (V)

A+B for Input-Output Practice (V) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 67443    Accepted Submission(s): 45101 Problem Description Your task is to calculate the sum of some integers.