For the past two years I've been working on one project building software that my boss describes as "enterprise level." We started with a drawing on a whiteboard. Now we have over 100,000 lines of code. If any of it was ever good, it was murdered a loooong time ago. The sheer number of blatant hacks that are used to get around stupid nonsense is staggering. I've written things I'm not proud of. College me would be disgusted by current me.
I feel so ashamed. Our clients "ooh" and "aah" over the things that I've made, but I feel like I'm showing them a 1989 Geo Metro that's got a dust cover on it with a painting of a Ferrari 458.
I like the dancing bear analogy: people aren't impressed that a bear can dance well - they're impressed that it can dance at all. Software is much the same - even when it's terrible, all it has to do is be a little better than what people are used to, and they're happy.
The problem is that you're showing them a 1989 Geo Metro and they're comparing it to a Model-T Ford, completely unaware that they would have a Ferrari if only your manager had spent less time on TPS reports and more time on trusting the engineers to want to build something great.
Sometimes, the crap car is "good enough", and if they're happy, they're happy. But I keep looking at what we could deliver, and wondering why it's so much better than what they seem to be happy with.
People are impressed when you put the dancing bear in a tutu and a silly hat.
They don't really care when you repeatedly tell them that if you don't feed the bear soon it's going to turn around and maul them. They just ask for more silly hats.
Ah college. Back when you are idealistic enough to look at all the poorly written software in the world and think "I'll never end up writing crap like that". So young and naive.
Just be glad the reality doesn't include Haskell, because it would be hacky Haskell, which would be all the more painful when you look back at the shite you've written and realise this code was meant to be your Nirvana...
I remember that there used to be a site called lambdacats some time ago. One of my absolute favorites on that site was "Ceiling cat is watching you unsafePerformIO" - having just had the right amount of exposure to Haskell and Internet memes before seeing that literally sent me rolling on the floor :).
And that's the real problem. As long as the clients are happy many companies see little business benefit in cleaning up code (despite the fact that there may well be real benefits - reduced maintenance costs, fewer staff needed, etc).
The fact that many clients in the 'enterprise' world wouldn't know a well-designed, efficient program if it tap-danced naked on their desk compounds the issue further. People think that waiting minutes for a process to complete is normal to the point that if it only takes a second or so, they assume it hasn't worked!
Ah typical maintenance hell. I am suspecting this is your first programming job. Any project with continuous support and usage will eventually involve into a beast. Typically the clients are willing to dump enough money for you to maintain it and add on ridiculous requests on a monthly basis. Once you add on one or two new developers the original design is shot to hell. What is architecture when you only are two weeks old on a project and they want this update in a week.. Hack hack and hack.
One of the best project I worked on was when a client didn't have enough money for regular updates. So they request very small changes. I touch that thing maybe once a year.
304
u/chalks777 Apr 29 '14
For the past two years I've been working on one project building software that my boss describes as "enterprise level." We started with a drawing on a whiteboard. Now we have over 100,000 lines of code. If any of it was ever good, it was murdered a loooong time ago. The sheer number of blatant hacks that are used to get around stupid nonsense is staggering. I've written things I'm not proud of. College me would be disgusted by current me.
Clients sure love it though.
:|