• idk (unregistered)

    TRWTF is that I don't understand how people like Tom succeed in life/workline. Another WTF is how colleagues of Tom who worked with JSDL put up with this architecture.

  • Quite (unregistered)

    Don't tell me: the language used to put fings on der screen is called HMTL: HTML-based Merged Transition Layer the language used to get fings in and out of der database is MyQSL: Mycro-sized Quiet SQL Lookup the language used to write the actual code is JVAA: Java-based Version Activation Arrangement amirite?

    Captcha: Soup.

  • Quite (unregistered)

    The real WTF is the comment box not understanding newlines.

  • gcc (unregistered)

    Sweet lord, what a fantastically beautiful story. Made me cry myself to sleep.

  • werewolf (unregistered)

    Tom really is a genius, evil genius to be precise.

  • Quite (unregistered)

    An analogy to the enormity of what Jake did:

    “You polluted the water supply!” Tom screamed. “I’m reporting you to the bosses and having you fired!”

    “I don’t think I did anything,” Jake answered. “I’ve only been to the bathroom once ...”

    "You excreted into the toilet! You can't excrete into the toilet! I plumbed it into the water supply!"

  • not a robot (unregistered)

    the real wtf is svn, there would not have been any of those problems had Tom used git

  • DocMonster (unregistered)

    How the hell do morons like this get jobs? And worse why do people actually put up with that? The one thing I have taken away from this and similar stories, is never trust anyone who gets lauded over as being some sort of Genius virtuoso programmer. They almost always are a bullshit artist who somehow has found a job and just fix everything while resorting on seniority to keep their job

  • Ron Fox (google)

    "“JDSL was written by Tom. He’s a super-genius and wrote JDSL himself..." That's techno-speak for "Run kid. Get out of here while you still can"

  • David Thompson (google)

    This is a gem. Any way to find out which company in what country this is from?

  • Wafel (unregistered)

    I... I can believe a lot. But I can't believe this thing. I could believe this if Tom was the only programmer in the company, or built-it up himself over the course of a few years and all other programmers are interns still fresh in the college.

  • RRR (unregistered)

    I... I... I just... I... This is some fucked up shit right here...

  • Andreas (google) in reply to idk

    Easy: Get involved early enough so that a critical part of the company is built on something that can only be updated / understood / used / maintained by you. Make sure to tell everyone that you designed that system and sometimes comment on how the whole company could fail if there was an error in that system and you wouldn't be there to fix it. Once this goes to Management, they'll make sure that you won't get fired, since you successfully created a "support lock-in" situation. Because the company doesn't want to get out of its way to switch to another system (that would cost money) or can get other people to be able to support your monstrosity (because that would mean to fill in another position [money] and would also mean that you'd have to change big parts of your 'thing' to be actually readable by anyone else [simple risk-analysis will prevent you from ACTUALLY changing anything, since you can argument that a chang could POSSIBLY kill the Database, etc...]).

    Ta-Da! You're suddenly indisposable to the company and can through a hissy fit whenever something doesn't go to your liking.

  • Melnorme (unregistered)

    Wow. Craziest thing I've seen on this site in a long time. This one's an instant classic.

  • Tom (unregistered) in reply to Quite

    You CAN'T use comments in tdwtf. I haven't implemented comments yet. Ban Quite, or I quit!

  • TB3 (unregistered)

    I can completely believe this. I got fired in a similar situation where the 'genius' CTO wrote the code base. He was using Reactive Programming with Swift, pulling in a dozen Cocoapods that weren't used, no naming conventions for the files, classes or variables, the works. And since he was the CTO, I was the one who got fired.

  • PeterK (unregistered)

    Wow. It's hard to believe that management can be so utterly stupid. I guess when you know nothing about code this all makes sense.

    I really hope I never get stuck in a job this terrible.

  • divVerent (unregistered)

    To be "fair", JSON does not allow comments.

  • divVerent (unregistered)

    To be "fair", JSON does not allow comments.

  • Foo AKA Fooo (unregistered) in reply to idk

    Wow, just wow! Really makes up for the lack of WTF yesterday (and some more).

    I'm surprised there was no ERE (http://thedailywtf.com/articles/The_Enterprise_Rules_Engine) hidden in it. Or maybe there was, and Jake would have discovered it if he'd stayed for another few months^W^Wmany years and dug down to find the code that actually did something.

    "Another WTF is how colleagues of Tom who worked with JSDL put up with this architecture."

    Boiling frogs. Or just happy solitaire players.

    "TRWTF is that I don't understand how people like Tom succeed in life/workline."

    See Andreas's comment. And honestly, even if management was fully aware of the situation by now (doubtful), what are they gonna do? What if you realize that your total code base has zero (or rather, negative) value? Dump everything and start from scratch? Might be possible if it's just a small division of a larger company, but even that would not end well for the current management. Or if the whole project is really as simple as stated, they could hire an average programmer to rewrite it from scratch in a week. But then they'd got some explaining to do about the waste of time and money in the past years. Either way, lose-lose to them.

    So they're doomed anyway. They are forced to cling to Tom. The best they can do, if they've got any kind of competence, is to find another job ASAP. (And this may already have happened.)

  • Kabi (unregistered)

    Totally believable. I'm currently working in a place that started its own domain specific language to have a simpler language for quality assurance which only has a limited subset of C. After 10 years, they dictate that every software needs to be built with this language, regardless if it's run on a server 24/7 or used as a WYSIWYG designer for some product elements...

    I have to submit an article listing the "features" of our language once.

  • lordofduct (nodebb)

    The second they turned to deliberate, I would have said:

    "No need, you obviously have put trust in an incompetent developer and rebuilding this mess would be the death of anyone, I quit."

    Screw standing around waiting to be fired.

  • Joseph Osako (google)

    Tom is a genius. He's convinced dozens if not hundreds of people that he is the World's Greatest Programmer and that the sun shines from his ass, and gotten the whole company to drink his crazy Kool-Aid. It's the best job security one could ever imagine. Go Tom, at least until the company collapses under the weight of your bullshit.

    Addendum 2016-07-27 09:07: Damn; at the end of the first sentence, I should have said, '...just not a programming'. I expect that there are crackers who are crying at the sheer beauty of this, dreaming that one day they too could pull of such a epic piece of social engineering.

  • Jester (unregistered)

    "Another WTF is how colleagues of Tom who worked with JSDL put up with this architecture."

    In my case "Tom" is the CTO and majority shareholder (so cannot be sacked) and yes, he invented his own "language" that has to be used as well.

  • ray10k (unregistered) in reply to idk

    Pretty simple: Be the first guy who "knows computers" there, and have a boss who doesn't. By default, you'll have seniority over pretty much anyone in regards to how the company uses their computers, so when they start hiring a few more programmers, they'll be under your direct command. From there on out, they have two options: Do it your way, or leave. And if they happen to be fresh graduates with limited "real world" experience, all the easier to persuade them to do it your way. Fast forward a long time, and all the IT resources are set up the way you like, and switching to a sane system is prohibitively expensive, making you (as the sole person who "understands" the system,) too valuable to lose.

  • Joseph Osako (google)

    As opposed to the Inner Jason Effect, which is where you sit around in your boat all day depressed over your ex-wife killing your kids and your new wife, until a rotten mast falls on your head.

  • Sham (unregistered)

    Pretty much recycled WTF from as http://thedailywtf.com/articles/We-Use-BobX

  • EatenByAGrue (unregistered)

    I've been in the industry a while, and there has been absolutely no situation in which anything a supposedly "genius" level developer has done is actually a good idea. That's because the developers with great ideas explain them and code them so well that everyone thinks that the idea was completely obvious and simple.

    For example, in one small company, there was a junior-level developer that had a reputation for genius among upper management, but they also had a problem with errors in production and decided to allow me as a not-as-genius senior dev to do some sort of basic quality assurance prior to pushing to production. In one case, I had found what appeared to be a relatively minor bug from the supposed-genius' code, reported it to the genius, he comes back 5 minutes later with a fix, I dutifully patch in the fix, and ... immediately got a syntax error, because this genius hadn't bothered to run his code even once.

  • jkshapiro (nodebb) in reply to lordofduct

    Depending on your jurisdiction, you may get better treatment from the government if you let them fire you. Where I live it can mean the difference between being eligible for Employment Insurance (really unemployment insurance, but that's for another day) and not.

  • gnasher729 (unregistered) in reply to Foo AKA Fooo

    I don't think they are doomed at all. Ok, if they are not doing anything, they are doomed. But it seems that JDSL does in a rather tortured way put the complete application together. So you should be able to run it once, have the complete application, check it into git, fire the genius and throw JDSL away. I'll save the company in a week.

  • dkf (nodebb) in reply to idk

    JSDL

    It's JDSL. JSDL is something else (rather enterprisey, but mostly sane as it doesn't involve checking out code at runtime from lots of versions).

  • Bananafish (nodebb) in reply to Andreas

    So, Andreas, you've done this before??

  • Toby Johnson (google)

    To those asking "how on earth to people like Tom get a job, much less become the most senior person on the team", it really is amazing to behold non-technical people like middle management who are all too eager to believe anything these people tell them. It's a chicken-and-egg situation where you need competent technical people to call BS on stuff like this early on, and if that doesn't happen, the "architect's" system will grow out of control by the time anyone notices. I've seen it time and time again, and unfortunately by then the managers' reputations are too intertwined with the system that they wouldn't allow it to be fixed even if they could be convinced it was needed.

  • Irritable Bowel Syndrome (unregistered) in reply to idk

    This is the classic story of enforced mediocrity. You have Tom, who is a moron, who creates a terrible system. He's surrounded by a handful of people who suck at their jobs.

    They create awful tooling, and Tom throws a fit anytime someone does something he doesn't like.

    The people who suck don't know any better (and can't get better jobs) so they stay.

    Anyone who is good either detects how awful they are in the interview and never works there, or they get a better offer and leave. And anyone who is good enough to try to fix things is fired by Tom.

  • Jack (unregistered) in reply to Kabi
    Totally believable. I'm currently working in a place that started its own domain specific language to have a simpler language for quality assurance which only has a limited subset of C. After 10 years, they dictate that every software needs to be built with this language, regardless if it's run on a server 24/7 or used as a WYSIWYG designer for some product elements...

    I have to submit an article listing the "features" of our language once.

    Wait, did you literally write production code in c0? ( http://c0.typesafety.net/ )

  • isthisunique (unregistered)

    The fubar here is not the meta programming or config pattern but the specific use of it. It's too granular and defining classes like this doesn't seem to really have much advantage. Someone played with lego, probably build up a mind for that kind of work but can't really apply the same techniques to programming properly. This is a crude attempt at mastery of control. When I first started programming, I had a mind not too much like this especially when it came to things like DRY, flexibility, etc. There's sometimes always an initial desire for more introspection as well towards those ends. However there is something wrong with someone who does not quickly reach the point where they realise they are just over complicating it and work more with what they have and don't prematurely optimise the programming language.

    The SVN use is daft especially how granular it is, even if you're going to make something that granular you would at least do something to make it fast. GIT would be a better choice there but it's still fubar to use VCS for that. The irony is GIT is usually slower as it downloads the entire repository but this use of SVN makes SVN much slower. SVN externals (or even just copy) also lets you do something a bit like this but you would never use is in such a granular fashion. That's normally for the top of the hierarchy and large library inclusion small cases of borrowing, etc. Even a custom system would be better. Using it to construct objects is also silly especially as objects are almost modular like that anyway, especially in things like JS where you have prototype inheritance that lets you essentially do whatever (enough so that it can actually be dangerous). Saying that I have seen some popular JS frameworks that provide OO like this but there's no ridiculous VCS inclusion, functions are inline or if imported, from another class definition and it's not really JSON as in the subset but full JS where a configuration options is built in code.

    If you're going to have function variance like this, it would want to be done with macros and preprocessors. It's really only a thing though when you have real performance concerns and want to strip out certain checks and so on down various code paths where they become irrelevant rather than doing so in runtime (caveat is that this can kill cache, increase size of code, etc). A preprocessor can also save lines of code, keep things more DRY, help with portability, etc however in many scenarios it's YAGNI and the added complexity/indirection can be hard to make pay for itself.

    Meta programming and config patterns are really good though if applied properly. I have quite a few myself in scenarios that are quite normal.

    One of them is for templating and essentially works like CSS, but for attaching JS behaviour instead to HTML with pretty much full inversion of control. That was done because the front end team would destroy everything if they even got close to JS requiring a brutal SOC solution. The implementation was rushed however so I've never really been happy with it but the principle is pretty hot. Around the same time thought other similar templating frameworks have started to arise that basically do the same.

    The other common case is for things such as ORM. In fact technically speaking, your schema is a configuration that you can use in a config pattern to generate your objects or initial codebase config.

    You also have things like WSDL. I tend to role out my own sometimes for APIs (other than SOAP) to create some kind of RPC boiler plates. I tend to use my own config spec as WSDL is way over complicated and not really suited to misappropriating to non-SOAP APIs.

    The really common use for config pattern is for DRY. Rather than fork your project for a different domain such as a new country you have if statements and configuration to enable/disable various features, etc. It's critical for code reuse in domains where you need the same basic thing (IE, a car) but there are subtle differences in requirements.

  • The_Quiet_One (nodebb) in reply to isthisunique

    Umm, yeah. I don't think anyone here has said the WTF is the mere concept of meta or config programming. Tom abused virtually every single good programming pattern/concept, including reinventing the wheel using a square box (by creating your own vastly inferior programming language), source control (by making commits a core part of your meta programming solution), auto-sync with production upon committing code, lack of QA and testing practices (Jake's mistaken assumption that the home-brewed solution was sane should have been caught before it catastrophically failed on production), a horrendous dev environment (anything that doesn't allow you to 'just run' your program to test is a failed system), lack of any comments (not to mention no support for comments), and chances are no backups (deleting a database in production is definitely cause for panic regardless of whether you can recover in an emergency, but judging by the tone in the article at the end, they had no chance to recover from the code that broke production)

    So, given that, there's no need to take 8 paragraphs to defend practices and patterns which make sense when applied correctly just because this article shows someone who spectacularly failed at every aspect of good practices. This is like analyzing a plane crash where the pilot accidentally landed on an interstate during rush hour instead of the runway 5 miles away and saying, "Well, the fubar wasn't in landing. Pilots do need to land, you know."

  • t0pC0der (unregistered)

    Now THIS is a top quality article. Well done. Left me angry and sad yet for some strange reason giddy all at once

  • Herby (unregistered)

    My god. A language that DOESN'T provide for comments? That is a "feature" of every language I've worked on. This is TRWTF here. Even FORTRAN had comments, and it was designed back in the 50's (over 1/2 a century ago.

    Look, if you ARE designing a language, design comments as the FIRST thing. It is pretty easy to do, If you can't handle that, it doesn't need to be a language. Some languages even have multiple (sometimes conflicting) ways to specify comments, but they HAVE comments.

    I would say the same thing for configuration files and comments, but some of these are too weird to consider. Good specifications ALWAYS have a place for comments, and for the sake of the next guy (or yourself in 6 months) please include some.

  • GorGutz 'Ead 'Unta (unregistered)

    To me, the real wtf is that broseph implemented his "fixes" to their system without testing them or keeping a backup so that they can just roll back. Then again, the people in charge shoulda did version control from the start by the same token. These people who just have the current system, no backups, no possibility of a rollback just freak me out.

  • Ron Fox (google)

    RE: big discussion of how Tom got/kept his job. Well how he got it -- the usual company needed a genius and Tom told them he qualified. Hired. How he kept his job is a matter of reverse natural selection. Whenever someone better came along, Tom got him fired.

  • honnza (unregistered) in reply to Herby

    No need to have comments baked into a language. You can use string constants. Yes, yes, yes, Golfscript does have line comments, but the only way to have inline comments is "some \"comment\""; (the semicolon drops the string before it).

  • Guest (unregistered)

    Honestly this sounds pretty genius, unreadable and hard to maintain, yes, but definitely an out of the box solution that allows you to add methods to production and use them without having to worry about code merging. Who the f writes Drop table users in the comments anyway?

  • anon (unregistered) in reply to lordofduct

    If you quit, you don't get unemployment (at least in my state). If you're fired, you do.

  • Barf 4Eva (unregistered)

    In front of those managers, and at a new job, I would have happily called out Jake for the complete jackass moron he is and that if he were to stay on the company, what kind of horrible mistake they were making. In fact, I think I wouldn't even be concerned about the loss of the job at that point. No, I know I wouldn't. Instead, I would argue they can get rid of me, but at the same time, they should have a few highly experienced people brought on for a week or two to determine Jake's lack of competency. It shouldn't take any longer than that...

  • Tim (unregistered) in reply to Herby

    Yep - JSON doesn't support comments as a standard feature, as it wasn't intended to be human-editable.

    Of course, it commonly [b]is[/] edited by humans (for example, my current project uses JSON for configuration) and so many parsers have grown non-standard comment support. Of course, the comment support is disabled by default, so if someone puts a comment in and somewhere in the codebase the parser is used without enabling comments ... BOOM!

  • Tim (unregistered) in reply to Tim

    Damn - no edit feature (at least if unregistered) ...

  • Developer Dude (unregistered) in reply to idk

    I have interviewed or worked at places where the org thought they had a 'genius" on their hands because he/she was the one that invented some ad-hoc crazy system or app that only the "genius" understood. Which is basically a big red flag in and of itself.

    The place I interviewed at had a "genius" who could not understand how Spring AOP/etc. worked, so he invented his own system. 'nuff said - while the location was really nice (Olympic Peninsula), I was glad they never offered me the job.

    I didn't have a clue with the job I did accept, and I am still working there and dealing with the work of the "genius" - sigh - although from the sound of it, it isn't as bad as working with JSDL (I did work for one corp. that had its own macro language built on the instruction set of the Data General Nova - which even back in the mid 80s was obsolete (they cast about looking for used machines). Luckily I wasn't a dev for that system then - but most of the devs did complain about it (not the inventor of the macro language who thought it was the best thing since sliced bread).

  • cheong (nodebb) in reply to werewolf

    Btw, being someone who had to manually modify some minified javascript file that the original source is nowhere to find, I can somehow understand Tom's position.

    Blindly adding comments at these places without verify the code actually runs before checkin is a major WTF here. Although I think Jake should get a warning or two first before getting fired, Jake is the one doing wrong here.

  • cheong (nodebb) in reply to Joseph Osako

    You are senior management and you see two people in front of you, one is a new hire who you barely knows, and the other is someone who you know and have built vital application that keeps your business running. Given you do not possess adequate knowledge to know the difference (where lots of senior management do not), who will you trust to be correct?

Leave a comment on “The Inner JSON Effect”

Log In or post as a guest

Replying to comment #:

« Return to Article