Developer Productivity: Skilled Versus Average

Developer Productivity: Skilled Versus Average

Neal Ford Atlanta, Georgia, U.S.

lET’S DEBUnK SoME oF ThE MyThS about developer skills for project man- agers who have been assigned for the first time to software projects. Under- stand that really good software developers are much more productive than average ones. In fact, some statistics say that really good developers are mul- tiple orders of magnitude better than poor ones. One order of magnitude is the same as multiplying a quantity by 10. The point is, a skilled programmer isn’t just a little better than an average one; the difference is huge.

What should this mean to our newly minted software project managers as they plan the development of this product? Managers erroneously think that even if you can’t get the best and brightest, you still get some usefulness out of medio- cre developers. But building software isn’t like digging a ditch, where even the poorest ditch diggers can make a hole.

In software development, what is programmed today becomes the foundation for tomorrow. If you have mediocre developers building your foundation, the really good developers have to go back and fix the flaws before they can move on. Hiring mediocre or average developers slows project velocity.* Frequently, taking a poor performer off the team is more beneficial than adding a good one.

Couple this with the fact that adding people to a late project makes it even later, and you can understand why most enterprise development moves at a gla- cial pace. The nonexperienced software project manager might reason that if adding more warehouse men allows a truck to be loaded faster, hiring additional programmers would shorten the time necessary to complete a software project.

* Velocity: A term used in agile software development to show the rate of progress for a team or a team member, i.e., how much an individual programmer will be able to produce in a given time period.

?

???????????????That won’t work. It will take time, and pull other programmers off-task, to get the new guys/gals up-to-date. In addition, the communication channels increase with each addition to the team. With a team of two, there is one chan- nel: Betsy Sue to Bill. Add Mike, and you jump to three channels. The number of channels continues to grow exponentially.

Here’s the formula: n(n–1)/2. With 12 people on the team, you have 12(12–1)/2 channels, or 66 relationships you must maintain as the project manager. Add one more person, and you now have 78 communication channels to oversee.

Building software with average developers exposes two project myths: 1) that you can shorten a project by adding people, and 2) that it’s OK to have aver- age developers produce average (buggy/off-task) code at an average pace. In truth, average developers drag overall productivity down and the project takes longer than necessary to complete.

The solution? Give good developers powerful tools. You’ll get higher-quality software faster. Second, having warm bodies doesn’t help projects, and having to babysit poor developers cuts the productivity of your good developers, who are craftsmen. Software is too complex to turn into an assembly-line manufac- turing process.

Want faster software development? Spend the extra money to hire and nurture excellent software developers. It will pay off in both the short term, and in the long term when it’s time to maintain the code.

时间: 2024-12-17 18:45:05

Developer Productivity: Skilled Versus Average的相关文章

Network management system scheduling for low power and lossy networks

In one embodiment, a network management system (NMS) determines an intent to initialize a request-response exchange with a plurality of clients in a low power and lossy network (LLN). In response, the NMS adaptively schedules corresponding responses

A Brief History of Scaling LinkedIn

原文地址 LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn's product portfolio, member base, and server load has grown tremen

Microsoft .NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0

249 out of 297 rated this helpful - Rate this topic Gregory LeakeMicrosoft Corporation Alan Le, Alex Arkhipov, Mike Hanley, and Steve NyholmVertigo Software, Inc. February 2006 Applies to:    Microsoft .NET Framework 2.0     Microsoft Visual Studio 2

Microsoft .NET Pet Shop 4

https://msdn.microsoft.com/en-us/library/aa479070.aspx Executive Overview The .NET Pet Shop application is designed to show the best practices for building enterprise, n-tier .NET 2.0 applications that may need to support a variety of database platfo

VIII docker

docker: 介绍: 镜像管理: 容器管理: 网络访问: 数据管理: 镜像构建: 私有仓库: 核心技术: 生产实践: 生态圈: 一.概念: https://www.docker.com/ Docker is the world's leading software containerization platform.(build,ship,run) docker is an open platform for building,shipping and running distributed

C#.NET开源项目、机器学习、商务智能

所以原谅我,不能把所有的都发上来,太杂了,反而不好. 1..NET时间周期处理组件 这个组件很小,主要是对时间日期,特别是处理时间间隔以及时间范围非常方便.虽然.NET自带了时间日期的部分功能,但可能还不强大.这个组件就是增强版本.详细功能可以看项目主页的介绍.在CodeProject: http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET 2.OxyPlot绘图组件 OxyPlot是一个.NET跨平台的绘图

Mysql--可用的 MySQL 产品和专业服务

一.MySQL Community Edition(社区版):MySQL Community Edition is the freely downloadable version of the world's most popular open source database. It is available under the GPL license and is supported by a huge and active community of open source developer

Atitit.研发管理--提升效率--软件开发方法DSM总结o99

1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实现 3 6. 参考 4 1. 什么是DSM? 只有提高抽象层次,将软件直接面向建模专家或系统分析师,然后运用自动化代码生成技术,这样才能高质量大幅度快速开发出软件系统,在OOPSLA(领先的软件工程会议),大家认为DSM可能是一种解决方案.Bill Gates 和 Grady Booch也发表过同样观点. DSM意味Domain-Specific Modeling领

docker讲解和命令汇总

docker 什么是docker? Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源(可以商业). Docker项目的目标是实现轻量级的操作系统虚拟化解决方案. Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等.由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操