Worth noting that as I stopped saying no I also stopped feeling treated like an assembly line worker.
Worth noting that as I stopped saying no I also stopped feeling treated like an assembly line worker.
Its in the same spirit because you're not invalidating the problem or concern that created the request, but youre adding new information and context that way. I like your attitude but I think saying Yes to everything can be harmful if you have info they dont have that might factor into decisions. I think no, but with an alternative, can be really productive.
Since this experience I almost always answer "yes" to all client requests but with a list of compromises required to get something built. It keeps everyone involved happy, even me.
In any case, I think engineers should in general do more creators work and product people should focus on keeping the business alive. Indeed there must be people that know the market, the business implications and the competition.
However, in my experience working on a big product with multiple teams, the main problems with devs getting creative is
(a) the consistency of the user experience suffers badly
(b) the overall architecture erodes as everybody builds particular solutions fitting their specific problem
I am not sure what the best way is to reconcile Dev happiness and (a,b) in this context.
Anyway, one could solve it by maintaining a ratio of people with a lot of experience.
(a) A Designer needs to be on the team that can do a Corporate Identitiy (CI) => this way it's possible that Engineers create their own Bootstrap
(b) Either solve it top-down by having an engineer with enough architecture experience; or have architecture guidelines in place / develop them consensus-based
At most places there are very concrete guidelines about codestyle, usually ensured by linters. One can also put more emphasis on architecture style
If my boss comes up to me with "can we do unreasonable thing X" it's not my job to change his mind. It's my job to provide him all the relevant data and then let him decide on the course. If the request would take a large amount of effort I let him know. If the request would cause bugs or problems elsewhere I let him know. If the request would (in my opinion) upset users I let him know. What I don't do is tell him no.
If when given all the pertinent information my boss still decides it's a good idea to spend a month straight implementing a bug then I'm happy to oblige but only after all the information is on the table.
He's captain Picard and I'm chief engineer La Forge. The captain decides, and the crew executes.
Of course there's a couple catches to this approach where it doesn't work. If my boss would ask me to do something unethical I'd first try to tell him why it's a bad idea, before firmly refusing. I do this knowing full well that this might injure our working relationship.
The other assumption this method makes is that your boss is actually good at his job. A boss that makes unilateral decisions without consulting the experts that work under him is bad at his job. A boss that takes it personally when you tell him his ideas aren't good is bad at his job. A boss that isn't open to discussing approaches is bad at his job. A boss that tries to dictate how exactly you do your job is bad at his job.
Now of course all the above doesn't mean I'm acting weak-willed or indecisive. If I disagree with a course of action I let it be known. I'm not hiding my opinion. But I do respect that my job is to implement business demands and my boss' job is to gather, distill, and communicate business demands.
Anyways that's my approach and it has served me well so far.
https://letterstoanewdeveloper.com/2019/09/02/the-art-to-and...