为什么作一名 in-house程序员很糟糕?

时间:2022-02-21 19:01:58

按:节选自Joel Spolsky的《More Joel on Software》。这里in-house programmer是指在非软件企业工作的程序员。

我的理解是,软件开发是很复杂的领域,有其专有的方法论和组织文化,专门从事软件的企业比较容易拥有这些关键元素。但非软件企业的企业文化往往并不太适合打造软件,管理层也不太懂软件开发方面的知识,不晓得软件工程到底是什么,以为把几个程序员招来凑到一起就能做出所谓的软件来(这也许就是《浪潮之巅》中提到的企业基因吧)。所以在这种环境下,作一名in-house programmer会比较难成为业界高手,同时由于软件不是公司的核心业务,所以也不太可能得到很多升迁机会。

 

OK, so, why does it suck to be an in-house programmer?

Number one: you never get to do things theright way. You always have to do things the expedient way.

The second reason these jobs suck: as soon as your program gets good enough, you have to stop working on it. Once the core functionality is there, the main problem is solved; there is absolutely no return on investment, no business reason to make the software any better. So all of these in-house programs look like a dog’s breakfast: because it’s just not worth a penny to make them look nice. Forget any pride in workmanship or craftsmanship you learned in CS 323. You’re going to churn out embarrassing junk,and then, you’re going to rush off to patch up last year’s embarrassing junk,which is starting to break down because it wasn’t done right in the first place, twenty-seven years of that and you get a gold watch. Oh, and they don’tgive gold watches any more. Twenty-seven years and you get carpal tunnel syndrome. Now, at a product company, for example, if you’re a software developer working on a software product or even an online product like Google or Facebook, the better you make the product, the better it sells. The key pointabout in-house development is that once it’s “good enough,” you stop. When you’re working on products, you can keep refining and polishing and refactoring and improving, and if you work for Facebook, you can spend a whole month optimizingthe Ajax name-choosing gizmo so that it’s really fast and really cool, and allthat effort is worthwhile because it makes your product better than the competition. So, the number two reason product work is better than in-house work is that you get to make beautiful things.

 

Number three: when you’re a programmer at a software company, the work you’re doing is directly related to the way the company makes money. That means, for one thing, that management cares aboutyou. It means you get the best benefits and the nicest offices and the best chances for promotion. A programmer is never going to rise to become CEO of Viacom, but you might well rise to become CEO of a tech company.