Wednesday, July 23, 2008

Nepotism Trumps Competence

This article on the dailywtf.com sure brings back memories. The shithole that was my last job sounds exactly like this place. And it reminds me of a story I want to tell. Maybe one, depending on comments/feedback, I might submit to TheDailyWTF itself.

Its all in how it looks.

My last task at my former workplace was to develop a CRM Portal. CRM stands for "Customer Relations Management". Essentially, I was overhauling the entire company website, and adding on a "private" section where clients (or potential clients) could log on, and view their projects, and see the development and test versions of their software projects. It would also house all the project's documentation and requirements. So, if you're a software developer, think of a customized install of Trac. Written and developed by one person, who's got about a year of experience writing .NET web applications. Who's doing everything from database design, documenting requirements, developing the code, testing the code, and prettying up the frontend.

To top it off, since we had nothing like this at all in our infrastructure, it was "Priority #1A" that I get this application up and running. It was also "Priority #1A" that I rush the application out the door because, as the President of the company put it, "You don't have a charge code. You're burning up overhead." (At this point, we had burned something like $200K in overhead in money we didn't have on various un-billable tasks.). Most of our tools had been various "re-invent the wheel from scratch" tools, done only half-right and only working half the time, because again, in the words of our infinitely wise President, "I'd rather spend $10K on you guys (who we referred to as his "A-Team") than spend it on software where we don't have control of the source" (and yet, we couldn't use Open Source Software because we were ".NET shop".)

So despite pressure to just churn out a finely polished turd, I knew that whatever I did, there would an incredibly long list of changes to the look, feel, and behavior of the "portal" application as soon as it was presentable. Instead of following our "one, true, established way" of creating applications -- the monolithic approach with lots of copy and paste, I actually tried to separate function and form. This meant I was building a layered application, with separation of duties between business objects, a data access layer, and presentation. As a shop, nobody had really tried to do that, as any realistic schedule to get a functioning application out the door was quickly slashed so that we were forced to just churn, churn, churn. Our president did not believe that architecture and testing paid for themselves.

Finally, having reached a presentable status (meaning: I had pages that behaved like an actual web application), the company president finally got to review the portal. He was already upset at how it was taking so long, and that until this point "I had nothing to show for it". If you haven't already guessed, the president of our "software division" had no idea of the complexity of code behind any of our pages, and just judged applications on whether they worked like he expected them to, and if they had lots of .NET controls on every page. Never mind how complicated or simple the business logic behind the pretty page was.

As an added bonus, I'll freely admit I'm a horrible web interface designer. While we were supposed to master web application development "from top to bottom, front to back", my previous assignment (which lasted nearly 4 months) had been writing PL/SQL stored procedures for another application. While other team were becoming more proficient at CSS-based layouts, I was learning how to best optimize our applications database logic. So I was naturally more skilled "on the back end". I hadn't learned what the company president liked to see in a web page, or expected to see (again, no documented requirements on how this "portal site" was supposed to work. Simply a "you figure it out" command).

Needless to say, expecting changes in page layout, I didn't really commit much time to a "stylish design". I figured a minimalist design could successfully showcase working features, and could be styled up. I even stated so much in the first review.

The first review did not go well. Aside from picking apart my "minimalist" design for lacking decorative colors, "webby javascript stuff" (direct quote there), and "looking very much incomplete", my boss failed to appreciate any of my hard work. Most of the features worked! Of course, functionality lost over form. Nitpicking the layout seemed to be the purpose of our review meetings.

And so that became my daily routine. The all-hands morning meeting. My one-on-one with the president, where he'd always give me a day's worth of UI overhauling (and contradicting yesterday's design decisions) and then going back to my cube to implement the changes.

On day 3 of this routine, I was informed that I'd be getting an intern to help me out. One of our client's had a high-school aged son with some web layout experience. He had no programming experience, but he was his high school's ultimate frisbee club's webmaster.

I sat him down and showed him how the application was laid out. He basically knew HTML and CSS (and had a better sense of style than I did) so after a quick run down on what it does he was able to get up and running. Our daily meeting was delayed an hour or so because the President had more pressing business, and a co-worker needed my help dealing with a database problem.

I come out my co-worker's cube to find that the meeting between the company president, myself, and the intern had started without me. The intern was showing off the styles he'd applied to the master template and the president seemed pleased. I feel relieved. Now we can actually start using this thing. I can move onto a project that's bringing in revenue and not have to deal with our presidents daily musings on what is "webby enough" to represent us to the internet.

About an hour later, a co-worker tells me that the intern is being put in charge of the remainder of the portal project. Not understanding cascading style sheets, it turns out our company president believes that the intern entirely recoded the web pages he showed off (including the back end functionality) in the sitdown meeting, instead of just applying new styles and layout. In his mind, with that kind of programming skill, he was more qualified to finish up the project than I was. I was re-assigned elsewhere (to another "re-invent the wheel from scratch" app) shortly before being laid off (something about being $200k in the red because of project mismanagement).

So it turns out its about how something looks, and not how it works.

I'd appreciate comments, especially advice on how to cut this down in to a more reasonable anecdote.

Labels: , , , , , , ,


Comments:
I don't think that cutting the story down would add anything but rather subtract from the feeling of it
 
cut-down version: "I was fired after a new kid changed the colors on the GUI of an app I wrote because the bosses thought he rewrote the whole app." ;)
 
Post a Comment

Links to this post:

Create a Link



<< Home

This page is powered by Blogger. Isn't yours?