Wednesday, November 22, 2006

There are some projects that are by nature frustrating. I'm talking about a great project which started dream-like and is now a nightmare. Shouldn't make a habit of bitching around, but I need a vent, and maybe I'll learn about it. Have it here, as a reminder.
Be Simple. That should be great, for us, for design, for the company. An it was that way, for about two days. Why? Because of bureocracy, because even if it sounds ironic IT guys are deeply conservatives. Have you heard of paperless office? The bubble, it seems, exploded in their faces so now they abhor any automation. Or maybe it's the old syndrome of being afraid of the machine, ironic. Anyway, when I entered the project I was delighted to work on such a simple idea. Fresh air, for someone from the communications-protocol-down-down layer. I would even learn about accessibility, usability and so on. Now it's a beast, the white elephant some are afraid to call theirs.
In Design Simple is Good. It all started as a web service to me. How great would SOA be to my experience? And then it was constrained to a database app, then not even that. Stupid budget constrains, in my opinion. Why can't we use open source alternatives? I mean, I already know them, if you want to avoid expenses, TCO should be high on the list. But no, I was unwillingly railed to scavenge resources I could found on a dumpster. Which might have been a great adventure, wasn't it for my shattered dreams of learning. Stuck in java, sucks. Don't get me wrong, I prefer it over many, yes COBOL I'm talking to you. Anyway, I presented my design and it was accepted. Suddenly I had the same nightmare any architect has. They say yes, but they mess it all around. Can't we do X instead of Y? But it ruins the design! (Meaning it will be useless 90% of the time and it costs twice to do than this useful thing you see "boring" but is vital to this other thing you consider a must-have. In other words, I had PHBs.
Keep It Simple Stupid. I accept I made some mistakes in my design. My mark was very high for a first approximation, made the stupid error of not knowing my customer. Which you might know, is not always the same as the final user. I mean, I did thought about the final poor guy sitting infront of it. Even a guy that may come in five years. But not in the stockholder. I perceived a strong, "It's great" in my face "We can't allow it" on my back. So what it was originally thought to be a 3 interaction thing, became a 20. I did a design based on Model-View-Controller. You could have call it via command line or a GUI, potentially even Web. Had any of them ever heard of MVC? I mean, I'm surrounded by developers, right? CRUD? Anyone? My design had a nice feature so that we could automate unit tests. Now there are 5 poor testers trying their best. We have a build every week. Can they ever fully test it? They must, or so the PHB thinks. As if they hadn't other choice. I proposed a demo of how to fully test the GUI, automated. The answer, no, too complex. Yeah, the curve lesson, for 5 minutes. Any VB coder there can testify that you can automate GUI tasks...
Code once. Oh man! The pain. Really. How can it be sooo many guys who doesn't know an object even when confronted? I get it, you learned C. Fine. That should be helpful... However who on this earth believes that creating a file, with one class, with one method is a good technique? Thanks SUN you made it obtuse to have GOTOs. And sometimes they use objects as structures, ok, less bad, I guess. Then why the fsck do you create twice/trice the same stupid structure? And it is almost by chance that you use one or the other. Man, please if you are going to learn java, learn it, not the keywords, but how things do on java. Too many packers, I think. And what's up with all the software engineer you do for a living. I mean, I know you use it everyday with the rest of your code, why you infect my poor project with lazy spaghetti code? Oh and another bad bad, ok, let us admit it, stupid thing, who writes proxy classes that just pass the method to another class, which in turn passes to another, which returns it, and so, again in reverse, just to ignore it?? And how about all these horrible conventions you use, but completely forget to continue using for half the class? Maybe you got 2 personalities. And I know about encapsulation, but if you are going to pass a value, just make it public. And if it isn't too much, if you ever write a class which has a method that requires an instance, why do you declare it static?? We already have an instance. Why another??
Ok Ok I recognize I'm not making myself specially friendly. It's just that I'm pissed of. I declare some good things have come from this project, but most of it is shit. Why? Because of Me not staying away of PHBs slaughtering my work, my effort.