> However, I have trouble believing that all of these
> ideals will work when you have a PM screaming at your
> engineers to finish the internal CRM system [...]
That's the point. The point of these things is that instead of having a screaming PM demanding that deadlines be met, you hire self-starting employees who have fun with their job. It's an internal CRM system, so why not shove it full of in-jokes and vi-keybindings for navigation? Why not give it a REST API and a CLI app to consume it?
It may not be possible to get an existing company to this state, but perhaps it's possible to start a fresh engineering department that's run on these principles?
There's also the issue of exposure industry cred. I mean, we're talking about GitHub here, one of the hottest websites amongst developers. Working on it comes with a certain amount of prestige and every feature they add results in a massive amount of industry press on sites like HN. Of course engineers working there are going to be extremely driven and motivated, it's a very rewarding product to work on.
Now imagine you took the engineering team of GitHub (or one like it) and transplanted them to work on Widget Inc.'s CRM system that's primarily used by their sales, marketing and HR people. Instead of your end users being similarly savvy and motivated developers they're now your typical corporate office staff. They're not using your product by choice but only because it's what the corporate higher-ups handed to them. They couldn't care less about new whiz-bang features you add to the product, they're mostly concerned about getting their TPS report out on time. Interface changes only confuse them and slow them down. They're never going to tweet or post a blog post about how awesome the new thing you just rolled out is.
Do you think the engineers would be similarly motivated to work on such a product? I doubt it.
I agree with what you're saying, but the solution is not to make the situation worse by having a PM screaming at them about TPS reports. That will only drive away what talent is in the pull of Widget Inc; a net negative for the company.
Widget Inc does not need to have the best devs, so this is largely moot. Widget Inc does not compete on IT, does not need their apps to be good, does not care if the best devs work there, no matter what they say.
perhaps it's possible to start a fresh engineering department that's run on these principles?
The key word there is department. GitHub is an engineering company, with engineers from top to bottom. It's extremely unlikely that an engineering department could live in isolation of it's company as a whole. So there would indeed be a PM screaming at someone to finish the internal CRM system and move onto something that the (non-engineer) customers really want.
"It's an internal CRM system, so why not shove it full of in-jokes and vi-keybindings for navigation? Why not give it a REST API and a CLI app to consume it?"
Because the users of the system don't care about any of that crap, so it's a waste of time and money, which most companies don't have extra of to spare.
It may not be possible to get an existing company to this state, but perhaps it's possible to start a fresh engineering department that's run on these principles?