An interesting situation happened a few months ago at the place I work at...
Our company is in a multifunctional building - the kind where you have it all - offices (on the side of the building, not facing the nice scenery), appartments (on the upper floors) and some shopping as well (on the bottom front). Bussiness was going well for us, so we hired some new people. But it was becomming apparent that the space we bought 5 years ago was getting cramped. There was no budget nor time for moving our whole company to a new location.
Fortunately for us, one of those "crap that I can't believe someone would buy, but they will buy it cause it's cheap" store went belly up and it was right next to us, just add a door to a wall. So, we bought it.
That gained us a few offices, enough for a few years by my estimate. What will happen then? Well, I hear the butcher next door isn't doing all that well...
Tim
@Tim
Best posts made by Tim
Latest posts made by Tim
-
Butchering code
-
RE: Emergency. Giant crack in the basement. Evacuate!
Sure it will, hardware hacks always work!
-
RE: In our French Overlord's IT group, it's still 1998
As with all WTFs corporate, dilbert has covered it: http://dilbert.com/fast/2002-06-08/
-
RE: Why are you asking me as a user which redistributables to install?!
Dude, given you're dealing with Duke Nukem Forever, you're lucky you don't have to install Runtime stuff from 1998. Anyway, the real WTF is actually installing Duke.
-
RE: My first WTF story...
Well, it's official - I'll be writing the new support app for the Regulator! Yay for me!
-
RE: Account activation
Same problem here - and it's been that way for a month or so.
-
RE: My first WTF story...
My apologies for any mistakes, English is not my first language. As for the requested parts of code, I'll see what I can do.
-
RE: My first WTF story...
Thanks. As for the Euro quotes, sorry about that :-)
Unfortunately, the Regulator is another thingamajig I did an internal tool for... and it looks like I'll be some putting lipstick on it soon.
-
My first WTF story...
Hey guys, this is my first little WTF, the first one that happened to me so far (not counting our internal politics). I hope you enjoy it more than I do. The story is real, aside from the names.
"The Probing" or "How Tim became the general purpose person"
The company at which Tim worked was a small sized hardware/software development company ( 30 or so people ) – they made specialized instruments, both the software and the hardware part. Tims role in this was a hardware developer and a firmware developer - an engineering position. He was happy – not only was developing devices from scratch an interesting job and developing firmware for them was part of the process, but also as long as he was doing his job well he got to stay a long way away from internal politics. The firmware was generally a smallish code running in a microcontroller, residing in its 32kB of program memory, enjoying the vast infinities of 2048 bytes of RAM and managing various functions of the device, coded in C or assembly - a layer at best above hardware. This was all well, but Tim also did something extra – to automate testing or just to simplify some tasks he'd occasionally slap together a PC utility – nothing too complex – in C# under .NET. This helped him and his coworkers to speed things up. They could ask the software division, but it would be far quicker to just do it, as they were busy. Always. But in the end, this extra skill was his undoing...
The Probe
The Probe was the company's next medium product – a fairly complicated device for measuring a complicated value. Data from the probe would be sent to a PC and analyzed there by some math. Tim did the firmware and helped with the hardware. And all was OK. To test the whole system he created a little app with a little graph (slow as snails, slapped together using GDI+), the basic controls, the math and stuff. It wasn't much, there were anti-patterns, nor was it the model of efficiency. Tim knew this, but, since it was for internal use only, no one complained as they did not do so before. With things set up the way they were, Tim and his colleagues probed the probe and soon finished its development. They reported this to the powers that be and left things run their course – the software guys should now take the probe and its specs and mess around with it, make some nice application with all the bells and whistles.
So, the head of hardware went to the head of software developers – a rather disagreeable man.
„Yeah, we're kind of busy right now.“ said the leading software fellow.
„OK, when will you be not busy...“
„I don't know, check back later.“
"OK, but put it somewhere on the things to do."
Tim didn't really know or care about this – he'd gone back to his normal routine. A year passed, the occasional reply from the software people was – we're busy, check back later. Due to bizarre internal politics the head of heads could not really do much against the situation – the software head being a co founder of the company. Projects had been requested and been done and all was right in Tims small corner of the world.
All was well in the world, until the Powers above remembered that the Probe existed. This was thanks to a rumor of a bid they might win if they had a working Probe like device, complete with software.
„Yeah, we're kind of busy right now.“ said the leading software fellow.
„But you've been saying that for a year! And we need the software for the bid!“
„And?“
„Can't you, I don't know, assign someone to it? Or get more people?“
The discussion went downhill from there.
Remembering that Tim had SOME software the Powers above called Tim into their lair.
„Tim. Remember the software you did for the Probe?“
„Uh, yeah, think so...“ said Tim, trying to remember what the Probe actually did.
„Great, can we use it for the bid?“
Tim chuckled, expecting them to do the same. When they did not, his face turned to a „stunned by a perverted idea“ kind of expression and he replied:
„What? No, no way! It's just for our internal uses!“. Trying to remember what the software actually did and why it should by no means reach anyone outside of the company he started:„It's not stable, no good proper GUI, it's slapped together from...“
„I understand. So, could you make it into something that we could ship?“
Not hoping that they were joking now, he said: „Well, no, I'm not a software guy. Why not just give this to the software department?“
„They are busy. Anyway, we need some software.“ Tims face turned into a „Infinite pain two words away“ expression. “You have experience with it, you'll do it.“
After a few minutes of protestation and arguing that it's not his job, it won't end well, it will be a catastrophe, should the customer use his software and various other completely true arguments, armed with reasoning that if he's a good embedded programmer, he'll do an OK job on a PC, management did its magic and Tim was appointed as a temporary software guy, with a deadline and other projects on hold.
The state of things was such, that he wanted to keep his job – aside from this, all was OK enough. So, Tim had at it.
The Coding
The application required was simple enough – for someone who coded proper PC applications, with big, scary GUIs, knew the framework inside out and worked seriously with .NET. Tim facepalmed and began planning. His first diagrams of the app looked like some kind of occult diagram to invoke Codethulhu. Then he sat down, redrawn it and pondered some more. Then he began to code the application...
The coding was painful. Not knowing anything about proper UI design he sat down with some of his engineer colleagues and asked how would he prefer if it looked and felt. He told him, they argued a bit and compromise to do it in a way that felt wrong.
Not knowing about the wonders of serialization, and other niceties of the systems he did a lot of things manually. He used XML, but not in the proper way. CSVs were his preferred format for pretty much everything.
Threading was a royal pain... until various Forms and Windows controls were involved. Then it became Hell... after studying on and (possibly) understanding invocations and the more complicated synchronization methods, things got better, which meant back to "royal pain".
Never working on a project of this type he faced problems like „Who should control the visibility and enablement of some controls?“, „Should this be an event?“, „Give this class access to this?“ and thought up answers to them, which may or may not have been correct... He probably implemented a few anti-patterns, and he may have created some new ones in the process. Properties were also something new – he saw them at first as a necessary evil, or didn't use them at all. Later he found out that they weren't all that bad, and in the end he even liked them and used them almost properly.
The difference between code done at the start of the project and at the beginning of it was very visible – learning through doing is a very good, quick method for learning. Unfortunately, it's not the best method for doing.
During the development people asked him for status reports, he received numerous "recommendations" from his coleagues in his department (most of which were in conflict with each other) and experienced other soul grinding horrors of the world of PC coding. He yearned to route a PCB, he couldn't wait to solve the next little problem with a scope, a multimeter, his faithful JTAG debugger and a soldering pen. Or a hammer.
The Application
After a few months Tim finished the app. He wasn't proud of it. The good news was that it was stable. It also looked reasonably OK. And, apparently most importantly, it did the job. But it had rotten guts, lots of hacks and an evil stench about it. Some parts were quickly slapped together from various Internet tutorials. It had Tims very own graph plotting code, based on GDI+. It looked OK enough, but was rather inefficient. Riddled with spaghetti code, holding together by UI calls that would make a proper .NET coder shriek in horror, the app did its job.
Tim had no illusions about the quality of his work – he knew that, should anyone see it, parts of it would end up on the TheDailyWTF. He even wrote a nice little article there about his pains, which was not published on the front page. But, it did the job well enough to satisfy the powers that be, and that's all that mattered. Knowing that he'd be stuck with its maintenance (which he knew would be Hell, thanks to the spaghetti form his code had) for years to come was a burden he already accepted and came to terms with.
After writing some documentation, he handed the work over, hoping to never hear of it again. The bid wasn't won due to a lot of things. The head of the software people grinned:
"See? If you'd leave coding to the professionals, things could have ended differently."
At that moment Tim realized why people go postal. After these experiences he just wanted to go back to his desk, sit back and make lovely little balls of solder.
A year passed, and Tim had regained much psychic health, when he was summoned to the Powers.
„Tim. Remember the software you did for the Regulator?“