I'm working at a big and renowned software company, but I'm not living
in the USA, so my experience could be different from people working
there. After all, big companies only come in third-world countries for
cost-savings. I also read pg's essays, which I liked, so I may be
influenced by his thinking.
I am a regular software developer, and I'm really passionate about my
work, that's why it hurts me to no end when I see decisions being made
that do not benefit the project. Some gripes include, but not limited
to:
* changing a good design with one that's not visually appealing, and
is really confusing, because we had to make it look like it's part
of the company's website
* to change the design, and to accomodate future changes, we are
including external server-side files in our HTML, files that
gathered a lot of cruft over the years, with bad coding practices
(inline CSS/Javascript). We have to load them from external
sources, such that when they change, it changes for us too.
* With our old design the main page had 100Kb, with 80Kb being cached
static content. Now we have 1 MB of static files that do not have a
cache header set, and a ton of inline code that adds an extra 300Kb
to one request. And this is after we negotiated with the right
department to slim down those files.
* we rewrote the administration interface because it was considered
to have business value the usage of a certain technology,
sacrificing months with code going down the drain.
* cool features that provided value to real users where pushed in
favor of features that provided value to the upper-management. How
useful is a statistics dashboard for a product that doesn't have a
community yet?
* hacking on cool stuff is not encouraged. After all we have a
release coming. No reason to waiste time on unplanned stuff.
* we had to negociate a period dedicated to increasing the quality of
our infrastructure / code.
* we have been working for over a year and I would really be ashamed
to place it on my resume: I really don't know on what we worked for
the whole year.
* my manager has a certain mentality that I don't like: he says he
trusts the upper management because they have more experience, he
says that we don't know what customers want (where customers mean
both real customers and the upper management). This one time, a "UX
expert" placed a link totally random and out of place, and my
manager agreed with the decision because the expert knew better.
* I have been practically forbidden to talk about these issues with
the team members.
So part of the blame is that of our management. I have never seen a
"NO" answer given to any request. Not to mention that my manager is in
the habit of passing blame ... the milestone release went wront? No
problem, we can blame it on John from Sales because he was the one to
request a last minute feature.
I also have an annoying passive-aggressive attitude, and because I
care about the project more than I care about my job, I think I became
the whiner, the bad apple of our project. I hate myself for this, but
the morale of the team is really low, and I'm not alone in thinking
that every possible bad decision ever was already made, although the
others cope with it better.
Of course, I was blamed for affecting the team's morale, since I was
so straightforward and sincere about it. I do admit that sometimes my
words are not "politicaly correct", but this project is like my
child. And since feelings are involved it is really hard to be
"politically correct" and say things in a "nice way".
So how can one cope with bad management? Am I wrong to think like this?
1. Be happy 2. Make money 3. Be promoted
It's not a startup, so you are not trying to be ultra rich. Now, when you complain you are first and foremost making yourself unhappy. That defeats the purpose of working there. First rule is that you be happy. And the best way to be happy is to ignore the bad stuff, focus on the good stuff and work on making everyone else happy.
You guys may be producing terrible code at work, but imagine a workplace where you are producing terrible code, but everyone is laughing and making jokes and so on.
Refocus your energy on making you and everyone around you happy. Forget the technology - let them make the decisions! That's what they are there for! Just focus on making yourself happy and your team members happy.
When everyone is happy, morale goes back up, make your manager part of this pleasant team. When people are laid back and relaxed, they are more likely to do sensible things.
The minute negativity comes into the team, it's all going to go downwards. You dislike your job, everyone gets infected by your dislike, and even if you win the argument, you lose at life.
So, forget the technology and focus on the people.