>It is someone else's business, and I am there to do what they ask me. Which may or may not match to what they need, but that's not for me to decide.
I know that this is the right idea, but it is so painful to build something you know is stupid and waste of time. Its impposible to go home happy knowing what you are building is crap.
I look it this way: if I were good/smart/eager enough to decide if something is stupid or a waste of time, I may think about becoming the entrepreneur myself. I am not that person. I am a tool. Someone is paying me to develop something that it is important at least to them. I am a professional, I get things done for other people.
"I am a professional, I get things done for other people."
I agree, but only if people want to pay "professionally" for it. Additionally, there can be problems with this if you're working someplace where your job is potentially at risk if the project fails.
It's very hard to take strategic direction from folks who have golden parachutes in their contracts. Succeed or fail, they'll be OK, but when you can see the project is DOA, you now have to spend some time preparing to look for the next job/engagement/etc.
I realize not all situations are like this, but have seen enough to understand it happens. You can be professional, but also have to understand that sometimes your best interests and the project's best interests may not line up, and plan accordingly.
I learned the hard way to always be prepared to move on. I keep myself current. I actually assume the project will fail and prepare for it. If it succeed that's great news.
I never had and probably never will have golden parachutes. My insurance is what I know and why I do. It must be valuable for the marketplace, not just for the company I am currently working for. That is my duty.
I learned the hard way to always be prepared to
move on.
This bears repeating. I have had many jobs, and a lot of them were great jobs. Sometimes for whatever reason, you need/want to move.
It is quite often out of your control (e.g. the company is in trouble and they layoff your entire department or cancel the project you're working on) and even in socialist Europe there isn't really such A thing as job security (outside of the public sector anyway).
Even huge succesful companies like amazon/microsoft/google/etc sometimes have layoffs. Or they become less succesful for whatever reason you couldn't predict ahead of time and then have layoffs. Or they merge/buy another company and get rid of redundant/duplicate positions.
> I actually assume the project will fail and prepare for it
I do as well, but it is always a bit of a conflict in the back of my mind wrt feeling 100% dedicated to someone else's project. I want to feel that I'm committed 100%, but always have to be preparing for "this will not work out, what is plan B?".
At some point regardless of feelings you just shouldn't be 100% committed to some else's project, of which you have very limited control (if at all). You can be 90% committed and a professional and still get a lot done and do great work.
In the company's eyes you should be 100% or even more committed. Perception is everything in this case. But you must do it by creating your own reserve space, where you are really 90% (or less) committed while using the remainder to worry about your next gig, because it will come. That's when you learn to apply proactive procrastination (sometimes it pays off to hold off on something you suspect will be cancelled), and absolutely use all the time estimated and allocated. Say whatever they want, managers and people in general take estimates for what it must be. Therefore you make it so.
"I am a professional, I get things done for other people."
I get what you're saying here (I think). Part of being a professional is putting your own ego aside and not making it all about yourself.
However, a true professional doesn't actually obey an employer the way a simple employee does. And in that regard, regrettably, we software developers really aren't professionals. We can take a personal stand, but there is no professional code of ethics that we serve that stands above the client or employer, at least not in the sense that it does for physicians or lawyers.
It isn't really our "fault", though we could organize better. Professionals belong to associations that have formal standing with government. In many cases, they can't "report to" a person who is not a member of their profession. They must serve their clients, but they are empowered, by law, to stand up to their clients and refuse to breach the ethics of their profession.
This is software development. We are not professionals, and I sometimes say there is no such thing as "software engineer". I am an engineer by education (EE) and I can tell you software development is a long way from being a regulatable profession. Heck if you want to install an outlet or a faucet in your home you need to be properly licensed and insured. But when it comes to developing software that arguably is having more and more importance on people's lives there is no such thing.
>Heck if you want to install an outlet or a faucet in your home you need to be properly licensed and insured.
That's what happens when you have strong plumbing and electricians unions. They convince the legislate to legislate a form of welfare for their trade.
Small scale plumbing and electrical are tasks a significant chunk of homeowners are perfectly capable of doing without screwing up. It used to be that the majority of homeowners could accomplish these tasks and that was in the days before the Internet.
I've spent plenty of time in my career building stupid things. While I'd prefer to build non-stupid things, as long as I'm getting paid well for it, I will happily build your stupid thing. If you get hung up on needing more control over what you're building, you actually have a few other options:
1. Take on a hobby in your free time.
2. Work for a different company, where developers have more of a stake and help define the product (there are few but they exist).
3. Moving into a "product management" role where you're defining features and requirements, etc.
4. Put your ass on the line and gamble on starting your own company.
I've had a lot of existential issues with this. What makes me feel better is that the system in the moment is what matters. Everything gets destroyed in the end as per every world view (goes to a heat death, gets destroyed by Yahweh and a new Earth comes about, wolf eats everything). Nothing you build will last more than one or two generations, statistically. Just enjoy making the thing and the process of trying to solve a problem. Maybe pick which problems you work on.
I know that this is the right idea, but it is so painful to build something you know is stupid and waste of time. Its impposible to go home happy knowing what you are building is crap.