15 workplace barriers to better code

该产品昨天必须发货。用户对缺少功能尖叫。老板的老板说,我们最好移动,否则斧头会掉下来。似乎没有什么能尽可能地发挥作用。

No one is happy with how quickly developers change the world, and everyone wants the code to flow like water from a fire hose, but no one wants to give developers what they need to get the job done. The same boss who wants the job finished yesterday won't hire more people, buy faster machines, or do any of the dozens of things that make it easier for programmers to just program.

Here are 15 real-world roadblocks to programming progress, each of which is getting in the way of building the next generation of software. Our informal survey was surprisingly easy. When the developers suspected they were talking with a sympathetic ear, they poured out their complaints.

Programming productivity obstacle No. 1: Meetings

这most common complaint as to what is keeping you from your code is meetings. If the programmers are to be believed, they are all chained into dark conference rooms for weeks or even years as the bosses prattle on about minutiae. While the programmers usually blame managers for ruining the meetings, they will occasionally turn on their own and blame some other programmer for going on and on about bugs or features or architectural strategies.

While some of the complaints are foolish -- the same programmers will grouse if the bosses keep them in the dark and don't communicate -- they all flow from the difficulty of diving into the abstract world of software. A short-order chef or a barista may be able to juggle different requests, but switching the brain into the right mode for manipulating abstract algorithms often takes time. Switching back out of that space for a meeting can delay work for another hour or so.

编程生产力障碍2:回复所有电子邮件

If meetings are bad, the alternative may be worse: endless emails passed around for all to see. Wading through the replies takes hours, and no one is happy with the result. Then the developers with the worse attitudes will simply say "tl;dr" with some kind of odd pride.

Some teams try banning emails for one day a week. Others get rid of them altogether. This solves the problem of overloading but at the cost of communications. Suddenly people aren't working together. This is supposed to be good?

Programming productivity obstacle No. 3: Trying to measure productivity

总是有一个受到一本书的启发的管理团队,上面写着:“您无法管理无法衡量的事情。”他们开始计算代码存储库或软件或错误修复的行。他们认为计数正在测量,测量必须是好的。

But programmers are game players, and this turns work into a big video game with a leader board. Instead of making the code better, the programmers concentrate on writing lines of code or solving bugs or committing to the repository or whatever is being counted. If bug fixes are rewarded, suddenly reports of tiny bugs proliferate, along with the fixes. One gets points for reporting the bug, and the other gets points for fixing it. Or if lines of code are counted, the programmer who could solve the problem with 10 lines of code suddenly decides that 5,000 lines of code will be more flexible or feature-compliant -- anything to add 5,000 lines to their total.

测量生产率实际上可以通过鼓励长期文件充满功能丰富的,过于工程的代码来使代码基础变得更糟。

对于这个问题没有真正的解决方案。我们need to track bugs. We need to organize our workflow and coordinate the creation of the software. It's impossible to measure elegance.

Programming productivity obstacle No. 4: Prima donna developers

As far as programmers are concerned, there is only one coworker worse than a boss: the other developer who created the last iteration of the code but no longer works on the project. Just as every home contractor will disparage the skills of the last carpenter, every programmer can quickly identify the horrible, inexcusable, completely brain-dead behavior of the last generation.

这个may be true, of course, but it's rarely as bad as the programmer makes it sounds. If anything, it's often not a problem caused by lack of skills. There are different styles, and they change over time. The last generation didn't have access to the same libraries that we do today. They couldn't read the latest book on best practices.

这个prima donna attitude关于先前的编程工作通常可以减慢项目。骄傲和自我利益的混合可以使程序员丢弃完美的代码,以便他们可以“正确的方式”重建它。

编程生产力障碍5:“稍后修复”的思维定势,又称“技术债务”

这re's never enough time in the day or days in a project plan to build what we need to build. We cut corners, patch code, and take out the virtual duct tape. A smart manager once called this "technical debt" after figuring out the bean counters understood that "debt" was something that must be paid off. Bean counters understand "debt" even if they don't understand code.

每个项目都有一些技术债务。有时它可以很快回报,但是通常下一代出现并发现它是在一个洞中开始的。他们需要构建上一代从未做过的事情。就像国债一样,但不那么大。

Programming productivity obstacle No. 6: Nonprogrammer managers

这re will always be smiling, happy folks who majored in anything except computer science involved in your programming project. Perhaps they married the boss's kid; perhaps they were in the right place at the right time. But the boss made them manager, even as they're trying to figure out the buttons on their BlackBerry. What's worse, they don't have a single ounce of Asperger's in them, so they insist on staring at your eyes throughout the meeting.

有些程序员喜欢这些高兴的手,因为欺骗他们很容易。如果您告诉他们Johnson DB的大时间失败了,他们会相信您,并将这个不祥的消息传递到链条上。有人必须从上层管理人员那里拿起挡板。但是其他人认识到这些家伙只是打电话会议并妨碍您。他们几乎没有提供指导,他们能提供的最好的是一些质量测试。

Programming productivity obstacle No. 7: Programmer managers

尽管程序员可能对必须与非程序员经理进行互动感到满意,但他们经常悄悄地说,具有编程人才的经理可能会更糟 - 有时更糟。

以前的天才可能会决定对该项目进行微观管理,并剥夺大量代码,因为它们具有新的愿景。或者,也许他们会在8080汇编器或C或Java中编程时如何在一半的代码中做同样的事情。无论如何,尽管他们被雇用给后者的目光投向了,但他们比大局更痴迷于技术细节。

编程生产力障碍8:男子气概的程序员,又名“ brogrammers”

While it is always enjoyable for programmers to blame the suits and glad-handers over on the sales team for every problem and any disruption, the programmers must also admit that some of the problems can lie with themselves. Programmers are hired for their computer skills, not their people skills.

程序员擅长沟通,他们以为或自我而闻名。他们可以锁定一些技术论点,例如pitbull会锁定在转向的腿骨上。客户是否想要不同的东西都没关系。程序员挂断了技术论点,他们仍将在两年内野餐公司将其放大。

While programmers can often filter out each other's idiosyncrasies, teams can fail when programmers knock heads. It's common for two people with different political views on, say, dynamic languages ornosqlto end up on the same team. The decision on what is right for the project becomes a referendum on everything these programmers have held dear. Then nothing ever gets accomplished. Everything is tied up in the next battle of the 100-year war.

Programming productivity obstacle No. 9: Selfish or cowboy coders

Did you just get a null pointer from his code? That's your job to catch that. And you better think twice about passing in a zero because the self-absorbed coder doesn't check for divide-by-zero errors. That's your job.

narcissist coder's workis supercool and superfast but only because it leaves much of the bulletproofing and testing to you. That's your job to handle the mundane chores so that it doesn't crash.

许多团队最终发现这太晚了。代码块在早期测试中正常工作,但是在有人开始通过它们推动真实数据后,每个人都意识到没有人检查问题。糟糕。

编程生产力障碍10:文件不良

写作文档需要时间. But we're paid to write code. We're often measured by the lines of code we generate. You want results. We're just doing what you want. Don't worry, we'll remember it all and write it down eventually.

Sometimes there's plenty of documentation, but it's for a version of the code that is months or years old. Did I say that this method stores the data in the Foo table? My bad. That was two generations ago, and we haven't had time to work through the code and fix those old notes. But we'll get to it -- honest.

Programming productivity obstacle No. 11: Slavish devotion to documentation

While we've all experienced projects with no documentation, it's common for projects to fail with too much verbiage and too little coding. I've had several people show me a shelf filled with binders and say, "They were paid by the pound for their documentation." Reading it all would take a year.

Programmers often handle the requirement to write a comment like they handle discussing"Battlestar Galactica" or "Dr. Who."他们编写无数页面上充满了细节,而无需总结或指出要点。当文档不提供太多的抽象或理解时,这可能是致命的,只是对代码所做的事情的反流。他们没有启发;他们只是将代码翻译成英文。

Programming productivity obstacle No. 12: Distraction-rich environment

One client insisted that I come into their office every day. Then they insisted that I use their PC, which could not be customized for a week. Then they didn't have any office space, so I was plopped into a converted conference room with six interns, who would spend half of their day talking about what happened the night before. The other half was devoted to figuring out what they would do that evening. While it was entertaining, I got little work done.

尽管销售和营销团队可以在某些背景噪音中运作甚至蓬勃发展,但程序员通常需要像图书馆一样的沉默。闲置的聊天,分散注意力的敲击或铃声会将程序员的大脑从抽象的工作区中抢走,然后重返现实。然后需要几分钟才能使大脑在需要的地方。

一位开发人员告诉我,他讨厌他的新桌子,因为那是three feet closer to the air-conditioning vent, which was, he said, incredibly loud. Three feet and it was ruining his concentration. This may be humorous, but it's true.

尽管许多企业会沉迷于具有乒乓球表等动力学玩具的程序员,但他们常常忘记开发人员需要沉默才能集中精力。然而,他们将程序员打包到大房间里,并认为这是协作的乐趣。

Programming productivity obstacle No. 13: "Cultural fit"

Do you want your own office? Or do you want to be in a team room where you can shout out your questions? Do you like to start work early in the morning, or do you want to stay late?

Every team works better if the people have a similar style. The teams that can'tfind a common groundquickly fail. The communication never happens, and they end up working at cross-purposes.

While it's tempting to generalize and say quiet offices or bullpens are superior, it's better to leave that to the team. I've found it's great to have everyone in earshot when you're doing plenty of low-grade upkeep and building out infrastructure. If someone yells to someone else, it's not much of an interruption when you're waiting for a compiler or a build to finish. Sometimes I'll even know the answer. A general call to everyone can be very efficient.

但是,如果我创建了具有许多活动部件的复杂算法,那么中断,谈话甚至键盘敲击确实使我无法集中精力。那是我想要自己安静的办公室的时候。

编程生产力障碍14:紧贴旧技术

dice.com上有680个职位清单标题中的COBOL在70,000多个清单中。这仍然接近1%。防守者会说这是一项伟大的技术,仍然可以完成工作。为什么要重写那张尘土飞扬的打孔卡只是为了前进?

他们有一个观点,但他们常常忘记了保持这一古老的密码的成本。通常需要翻译所有内容,通常使用自定义代码。某些代码是在ASCII之前编写的,这意味着转换输入和输出。旧系统通常会计算空白字符,只是为了弄清数据库中的内容。这是更多的转换。

12 Page 1
第1页共2页
IT工资调查:这results are in