The company where I work has many dysfunctional development practices, that prevent me from doing my job as quickly and efficiently as is required by my clients. I cannot get my company to stop their dysfunctional practices, because of my highschool educated boss.
There are two major dysfunctions that cause this:
1. My boss insists that I continues to use code that was originally intended to be a prototype to show clients, and not production-level code.
2. Anytime that I try to implement a production-level version, my boss immediately directs me back to the prototype insisting that we fix it.
How the Prototype Came to Be
When I started at this company, their ecommerce system was relatively poor looking. It looked like a webpage that someone made in 1994. Shortly after I was hired the company had a Users Conference where they desperately needed to show the clients some sort of new functionality. The development team opted to have one of their C++ developers (not me) create the new (at the time) 2008 web look for the ecommerece system.
With the Users Conference coming up quickly, the appointed C++ developer quickly threw together a new look to show the customers, not documenting or writing down any of the features he was adding in along the way. I would also like to emphasize the fact that he was a C++ developer and used all sorts of development worst practices for displaying a webpage for instance:
* Nested upon nested HTML Tables for layout. (sometimes more than 7 layers deep of table nested in table)
* Not properly closing HTML tags, their attributes or terminating HTML Entities correctly.
* Making some capital and some lowercase html tags.
* Quirks Mode: Not specifying a DOCTYPE of any sort.
* Placing <SCRIPT> tags with large scaffolds of code in them that may or may not be contained in functions.
* ...and last but not least...testing the code only in IE7.
Time Passses a Bit
Since all of the clients were now sooooo excited from the User Conference about the new look for their ecomm system, they all sprung to call up me, all requesting that I install this abandoned piece of code into their existing ecommerce systems. Time passes a bit and all of these customers begin requesting new features:
* It needs to work in firefox.
* It needs to work on Safari.
* I need it to work on Internet Explorer 6 through 8.
* I want x functionality added to the site
* I want my look to match how my website look and works.
And mind you this code is still a prototype, the existing features have not been documented anywhere, and I, who inherited this abandoned child of a C++ developer, am expected to just fix this thing while it's poorly written, never code reviewed by peers, and not checked into any sort of version control system.
I continue attempting to make the changes each new look client requests, some of them, are possible and others are not.
The amount of technical debt that has been amassed by this time is ridicules, because 20 some users are using this look by now.
Attempts at Implementing a Production Level Version
Every attempt I've made at trying to create a production level version as opposed to a prototype has been squashed by one of the following:
1. A customer calling with a problem with the prototype (that they don't know is a prototype).
Now my personal opinion coming from an Agile background is that the prototype was made to be abandoned, not used in production. You shouldn't try to fix the prototype's problems, it will take as long (and maybe even longer) to do that as it will to just write a new one without problems, and when it's done at least you'll be able to maintain it, after various code reviews.
During the prototyping process a list of features should be amalgamated/documented so that the production version can be created. Compare this with being cocky and assuming that the guy who created the page knew what he was doing the first time around, can remember everything that he added to it, and then amassing so much technical debt that nobody can do their job anymore. I'd take this stance even if I was the one who code the look in the first place. Just drop it, admit you're human that you can't get it right on the first try, pickup and move on.
Unfortunately, I can't get my boss to do that, and I can't get the C++ coder to give me an exhaustive list of features because he just doesn't remember/has no unit tests to back him up.
This is just one example of the dysfunction that goes on at this place. And you better believe that it's not just on the front end that this occurs, the development team where I work has been amassing technical debt on the windows-only application backend to their product, probably since I was in high-school; I'm 28 years old. They just last week started using a version control system, and my boss was against it!
Fear of the Unknown
About once every month or so basis I get called into my bosses office and he remotes into my machine, closes every window on my system, and proceeds to do my job for me while I watch, because he "doesn't think I'm doing it right".
My boss doesn't allow me to offer any input or new ideas about how things can be done faster or better, which would result in more satisfied customers, and less dysfunctional development practices.
Then when I go back to my computer I have to reopen everything and re-figure out what I was doing. Additionally, he uninstalls programs that I use to keep up with my clients given that they call me so much while I'm trying to develop something for another client, stating that "he doesn't like tools, the only tool you should need is C++".
I am positive that I am more qualified than he is as I have a B.S. in Computer Science (Internetworking Applications) with 3 years in defense contracting, and he has a High School Diploma, and 10 years of self-taught experience. I think that he is a micro manager and that he is confusing his position as a developer/president of the company.
My father says that I should flat out ask him to lay me off, as according to the Wall Street Journal there is only a 3% unemployment rate for people my color, age and income level.
What do you think I should do? There's obviously no moving up in this place (as most everyone but myself are family).
- AIM: MASKKKK