4 ms·
For those of you who think and operate this way, I'm sorry, but this WILL catch up with you eventually. At my last job our sales pitch was "Yes". I won't use th
by WesleyJohnson 16y ago
For those of you who think and operate this way, I'm sorry, but this WILL catch up with you eventually. At my last job our sales pitch was "Yes". I won't use the word "literally" here as it would be an outright lie, but it was pretty close. Our sales guys went into meetings with the assumption that we could pull off whatever the clients wanted in nearly any time frame they wanted. This was all decided on at sales time without any consultation of the actual development team on capabilities, cost or how long it would take to actually implement. Management would tell the IT/IS department (yes, we had to do both) that it was a show of faith in the abilities of our team and that we should be proud of the fact that sales and management were so confident in us. You know what that is? BS. That is sales "selling" IT. It's complete and utter BS.
Sure, we met those deadlines, we implemented those features and we made small fortunes for the company. But at what cost? The infrastructure starts to resemble Jenga more and more, your spaghetti code becomes harder to maintain, you end up with magic strings, magic numbers, client specific cases and conditions and your start eating into your IT budget by having to hire more programmers to support all of your crappy implementations and more hardware to handle the un-optimized pile of crap you're running.
What's worse is the very people you rely on to keep this tower from falling over, your programmers who have become so familiar with all the undocumented edge cases of your system, are also the very people you're basically forcing out. You're forcing them out because they become tired of not innovating, not refactoring and not progressing the technology OR the business, but instead spending all their time stressing over not "crossing the wires" of this delicate catastrophe. And when you finally lose them as a developer, and you will, it costs you severely in down-time and loses in productivity while you get your other developers and new hires up to speed. But not only do they have to learn the business, they also have to learn all the edge cases that were only known to your senior employee who was finally fed up and quit. And guaranteed, something, somewhere will be forgotten, that wire will get crossed and you'll pay dearly.
And while I do agree that making money and growing the business is the end goal of the business, don't assume that your IT guy isn't concerned with that and just wants to write "pretty code". Often times your IT guys understand the business more than sales, middle management and sometimes upper management because they deal with the logic, the clients, the sales team, and everyone in between day in and day out. When they're pleading with you to say "no" to a customer or ask for an extension to implement feature "x" properly, maybe you should take heed a little more often. Because the duct taped feature "x" that won over client "A" today, could be the same feature that loses you client "b" and "c" tomorrow because the only developer that new their system well enough to keep them running walked out after being forced to write yet another band-aid.
Of course when he quits and everything falls apart, everyone will just assume he was an overpaid, crappy programmer and his buggy code is what was the ultimate cause.
- kenjackson 16y agoIt's amazing that you get so defensive over "learn the business". I never said to be a meek dev. In fact I clearly state that you should attempt to change minds with principled arguments that have the business in mind. But based on my experience, that's not what I've seen. I've seen devs fight to do a completely rewrite that management won't fund because everyone wants to continue to use the old LOB solution. The devs argue about how the old system is a rats nest and uses archaic technology. But the business says that its doing the job, why do you want us to switch to something that lacks the features we need, just because it uses REST rather than SOAP (whatever that means). And I've been brought in to consult on many of these disputes and probably 8 out of 10 times the "ugly" code is perfectly serviceable. What I've often done is shown how one can incrementally improve and rearchitect the existing code with no downtime... and probably more than half the time this ticks off the architect. His big dream was to do this monster rewrite that I've just shown is completely unnecessary. At the end of the day maybe I've hurt morale of the dev team, but janitors don't get paid to not clean bathrooms (not that we're janitors, nor is there anything wrong with being a janitor, but you get the point).
- anonymous245 16y agoThank you for your follow up. Clearly your experience is far outside my world. I've never heard of an outside consultant being brought in to second guess the company's "architect". It seems like you mostly move among bad developers. I don't think your experience is relevant to most of the developers reading HN. Obviously, a full rewrite not a good idea in most cases as Spolsky eloquently argued. PS: I didn't detect any "defensiveness" (you know, the catchall passive-aggressive term that is used to use to imply that the other side has a weak hand without backing it up) in the post you were responding to. It rang true to me.
- kenjackson 16y agoI don't think I move among bad developers, per se, but when I consulted I generally worked at places that weren't software companies. HN is filled with developers who plan to build companies (or work for companies) whose core business is to build software and either sell or have that software be the key part of a service. A lot of the places I did consulting for, if all of their in-house software stopped working, they could probably still do business, but a lot less efficiently. Most companies are not "about" the software just like they're not about the desks in the office. And actually... quite often I wasn't brought in to second guess the architect. Many times I was brought in at the request of the architect. But yes, most of the time you're brought in because they lose faith in the architect or team. If you see me stop by to do a simple audit of your code, you should probably get your resume ready -- well not really, as I don't do any consulting any more.