1. CRUD apps run the world. They were here long before all this sexy unnecssary stuff and will be here long after these fads pass.

Fair point. "CRUD" is a straw man. Actually, most apps should be simple. That's just good design. If CRUD is enough to solve the problem, then one shouldn't do more if it compromises simplicity or conceptual integrity.

2. Whether you want to admit it or not, everyone answers to someone.

Sure. What I like about Valve's model is that, yes, employees answer to the company. What isn't there is the middle-management extortion of "since I can fire you, you invest in my career, and you're lucky if I give you a 2-week 'plum' project".

Everyone answers to someone, but the terms are widely variable. We're a lucky set, being programmers. We have skills whereby, if we can solve the leverage problem (as a group, we're poor negotiators) we can deliver so much value to society as never to be poor. Unfortunately, because we are so critical to operations, and because we're terrible negotiators, there's a class of people (VCs, tech managers) who spends as much time devising ways to hack us as we spend coming up with ways to hack computers.

It's the fact of answering to a careerist middleman-- often for little in return, resulting in long-term career stagnation-- not the abstract "answering to someone" of having to deliver value, that makes corporate engineering so humiliating.

3. Make no mistake about it: if you build anything, you benefit, often more than those you built it for. In fact, to become an excellent programmer, there is no better way. It doesn't matter who you built it for, it just matters that you built it.

I agree, but at least in my experience, programmers are lucky if they get to spend 10-20% of their working time on building, and it's rare that we actually get to own and to finish a project.

Most of us get staffed on fourth-quadrant ( http://michaelochurch.wordpress.com/2013/01/01/fourth-quadra... ) maintenance work that's largely evaluative in purpose, while the company decides whether it trusts us enough to give us real work. Of course, the managerial gatekeepers who proctor and grade this years-long dues-paying/testing period use it for hard-core extortion.

I think this problem (of long slogs on evaluative make-work, and projects never getting to be finished) might be the visceral appeal of game development. Sure, it's a horrible industry if you look at the conditions, but unlike much of software, you actually finish and ship a product.

I'm 29 years old and I'm starting to have the experience of getting genuinely rejected for jobs that a top-talent person of my age should be able to get (and that I would be able to get, with better work experience). This is not a case "they're idiots" rejection (a pathetic defense mechanism) or "lost in the shuffle" bad luck, although that happens too. It's genuine rejection that occurs because the quality of my work experience is mediocre. There are a lot of jobs that I would be able to get at this point, had I not drawn a string of bad bosses and shit projects. Now, some of that's my fault: I should have shown initiative and started open-source hacking five years ago. Some of it is not my fault. If I had landed on a machine learning project when I joined Google, I'd be spending a lot less time ranting on HN and more time building awesome stuff.

4. Literal definition of "professional": earns money. There's probably no better way to be a professional programmer than to build corporate CRUD apps. Looser definition of "professional": someone I would want to march into digital battle with. I would most certainly pick someone who has written many corporate CRUD apps that someone who has recently embraced some sexy new technology from the conference and community du jour.

Disagree. The defining trait of a profession is a set of ethics (that one professes) and processes to which one subordinates. For programmers, "don't build logic-bombs and back-doors" would be an obvious first commandment. "Never compromise on quality to gain rapid career progress", i.e. "don't launch and flee", would be a more controversial second one.

When you're a professional, there are ethical principles which you have the right and obligation to place above managerial authority. To make sure this works, the profession controls the economy (a controversial process, for sure) in order to make sure you always have work and your boss never has you by the balls. Professionals can't use the "just following orders" defense. If a doctor's boss tells him to kill a patient, insubordination (against that boss, subordinate to the higher authority of the profession) is a requirement. He loses his license and possibly goes to jail if he fails it.

We don't have the right to tell our bosses, "I won't do that, because it's unethical". Nor do we have the right to expect our bosses to invest in our careers-- and, most often, they don't. Ergo, I'd say that we're not professionals.