Is there any inherent reason why companies could not hire top engineers on a contractual basis for 6-12 months at a time? Given how specialized many projects are, it seems it would be more efficient to do this than hiring a new specialist full-time for each new project. The only reason I see that companies do not do this now is because it simply isn't the norm.
Also, as an engineer, I would prefer to work on a new project every couple of months.
Similarly, I really, -really- dislike the idea of institutionalized discrepancies between "the rockstars who develop" and the "grunts who maintain it". Because then any problems with your code after the initial "it works"...are blamed on the maintainers not being good enough, rather than the fact you wrote it as quickly as possible, without concerns for long term sustainability. In fact, it provides an incentive to getting code written as quickly and sloppily as possible, rather than as robustly and maintainable as possible.
The client is happily using the software and has many more ideas to implement, some of which I supplied! The system helped them explosively grow their business but over time has become part of the daily business routine which inevitably means they want to reduce costs.
Naturally, this means we are building fewer features each month but the cost focus pressures me to sacrifice some refactoring, testing, and UX quality which makes me feel more like the grunt that maintains it. On the plus side, my effective hourly rate has improved since I negotiated a fixed monthly fee into our contract and I've had time to find a couple more clients :)
Many if not most technology companies want their expertise institutionalized, especially when it comes to the most complex aspects of their business. This is where they create the most value and have the greatest opportunity to build competitive advantages. There is no incentive to outsource their high-value work to somebody who is going to be gone after a few months.
This is why companies like Google, Facebook and Apple are willing to lavish the most desirable candidates with significant cash and equity compensation.
> Also, as an engineer, I would prefer to work on a new project every couple of months.
Become a consultant. You may be able to make a lot more money, but:
1. You may find that there are no opportunities to work for the type of companies you'd like to work for because they don't hire consultants in any real volume.
2. Limiting yourself to two or three month engagements will exclude many of the lucrative opportunities, which typically demand multi-month if not years-long commitments.
Side note: the "equity/benefits/stability of being a salaried employee" are somewhat overestimated.
1. Equity has risks associated with it that are discounted during good times but become painfully obvious when the business cycle turns. Think Google or Facebook are great companies with bright futures? You can buy their shares without having to work for them for 4 years.
2. If you're working as a high-end consultant, you will easily be earning enough to create a tailored benefits package for yourself. For instance, you can set up a self-directed 401(k) and defer up to $18,000 of your salary (2015 limit). Your business can also contribute up to 25% (or 20% if you're a sole proprietor) of its profit as a profit-sharing contribution. All told, you can stash away up to $53,000/year pre-tax in a 401(k).
3. Stability is an illusion. Most salaried employees are at-will and can be terminated at any time for any reason, or no reason at all.
By the way, any advice for salaried engineers who'd like to start consulting? Anything you wish you'd known or things you'd do differently in hindsight?
This is true, but you need to look at who they actually are. The majority of folks who become fabulously wealthy off of equity (read: owning a piece of a business) are the folks who start those businesses and manage to hold on to most or all of the equity.
Most of these businesses are obviously not in tech, but if you want to filter out non-tech companies, the power law distribution of equity-derived wealth in Silicon Valley still doesn't favor employees, even those who join companies early on.
It's basically like being paid in lottery tickets. Fine so long as the rest of your salary is enough to pay the bills, not fine if you depend on it for your retirement, and either way, some of us would prefer the well defined payout of cash.
It may seem hopeless, and indeed many other factors do make good product companies fail. But when other factors do NOT intervene, then the remaining value does depend on your execution.
How greatly are transaction/switching costs affected when segmenting projects in 6-12 month intervals? I would guess, that when you're throwing senior engineers at projects, the switching costs are non-trivial, but low. It's probably an acceptable tradeoff to pay when developing specialized projects you don't expect to carry over to future ones.
There's also the argument of developing a labor force to compete with other enterprises. However, if the best engineers are in sufficiently high demand, it may be more economically rational for them to move between projects every 6-12 months, gradually increasing their pay-rate and improving their portfolio after completing each one. If this is the case, then companies would be forced to hire top engineers on a contractual basis (or pay them a significant markup annually), purely to compete in the labor market for top talent.
Or even, at the very least, by switching projects internally.
Au contraire. Top-level engineers should still spend much of their time on maintaining projects they designed, otherwise they start forgetting what works in the long run and what does not. It's not that good engineer throws in some secret juice only most advanced know; it's that good engineer knows what makes problems when maintaining the system or scaling it up.
Maintaining old but widely used code is a hard project.
The price to pay is that you have to find a job every 3-9 months, and that's not easy, even if your skillset is in high demand. You'd have to invest a significant amount of time. Conversely, the company couldn't build upon assets that they invested heavily in to acquire (job postings, resume screenings, interviews, offers, training, firing, etc.). If a reliable 3rd party could act as the agent for engineers, vetting their skills and credentials, maybe this market could become more fluid, but even if the benefits would be huge, the article clearly explains why the environment is not favorable.
If we get a project out the door in 3 years, that's considered amazing. Then it's in the field for 10-15 years. I can't imagine working on something that's over in a few months.
Real progress is made by working for decades on a particular team, on a particular problem set. See the work done in Bell Labs in the 40s and 70s, the work done at Cray in the 70s and 80s, and the work done at Intel at the beginning of the transistor revolution.
A strong team of people, working together, growing to fill in each others weaknesses - that is what produces the best results.
Successful, scalable, revenue-generating software projects that compete in a big market, on the other hand, are never finished. Microsoft still has top engineers working on Excel and Windows. Google almost certainly has some of their best people incrementally improving Search and Maps and Gmail. Many of Amazon's top engineers are working on improving AWS. Apple's certainly not transferring their best engineers off iOS.
The economics of software competition is such that making even a very small improvement to a successful software project that scales to millions of users can be worth billions of dollars, while creating entirely from scratch something that is half as good as another extremely valuable software project can be worth close to nothing. This means an extremely large number of top engineers are going to be working on incremental improvements to successful products purely as a matter of economic necessity.
Also, the idea that top-level engineers should constantly move to new projects is superficially alluring because new projects are supposed to be fun and challenging and the best people should be rewarded with fun and challenging tasks, but in the real world, engineering is mostly about constraints. From a product standpoint, coming up with a new product is challenging, but from a software engineering standpoint, greenfield development is not very challenging because there are so few constraints that make engineering difficult.
Edit: I'd also add that in companies that specialize in the type of projects I described in the first paragraph, what you're advocating is pretty much what happens - the best developers in non-product companies often become architects and managers who get to make technology choices, talk to clients, produce specs and/or working prototypes, while their less-talented, lower-ranking peers are left to deal with the details and implementation issues. When quality isn't important, this is efficient.
Edit2: I think part of the reason why people get the impression you do is that most people's greenfield projects are disproportionately fun hobbyist projects where they get to be the sole guy in charge, whereas most people's non-greenfield projects are disproportionately corporate projects where they are subordinate to the wishes of many others, including other developers, managers, product people, customers, designers, etc.
I'd suggest that products of this size and scope are an extreme minority of projects in general, that projects of the class you describe in your first paragraph are the norm, and an agent would help for those. Also, agents are good for renegotiation (and outside work, for that matter); David Letterman still has an agent. His agent negotiates his continuing to work on the same project, and monetizes his experience within that project as he accumulates it.
The only example I can think of might be a video game, but even this is becoming less the case.
It's a little different from consulting shops that might want to maximize the rate the customer pays, but often pockets any 'extra', with your rate staying the same.
Talent agents also know the market infinitely better than the talent does, since it's their day to day job to deal with the going rates.
Add in the benefit of them getting to play the 'bad guy' in negotiations if need be, so you can keep good personal relations with the client. Hell, a good agent is practically expected to be pushy.
For top talent doing short term freelance work, it would definitely have some benefits.
No, in this case dealmakers will often want to just make more deals and may even negotiate less aggressively for you.
For example a realtor would rather sell your house for less immediately rather than risk a transaction falling through.
The commission upside of pushing for a 20k higher salary is often just not worth the time compared to getting the next deal done.
An area where it may make more sense for engineers to have agents is in the freelance space. Any dev shop that has a sales team is doing essentially the same thing.
I would consider paying a finder's fee to an agent-type entity who could find me decent projects and keep my pipeline full so I didn't have to worry about it.