- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Oh god yes. How many times have I seen a smart but technically clueless boss make stupid technical decisions because they don't know any better and get sweet-talked by a scam artist or clueless moron who only knows how to bang out SQL or XML or whatever.
In most of my situations, the response to fire the consultant is "Why? It works, why mess with it?" without any idea why it really doesn't work.
Admin
I'm pleasantly surprised that the boss was willing to listen to the voice of reason. I know many who would have just doubled down and refused to change their mind for fear of appearing to have made a mistake.
Admin
Admin
Admin
Back in 2000 we were riding the last ripples in the waves of the Dot Com exploded bubble. Our company got major VC so we had to have some nice catchy technobabble to impress shareholders. You see, back then XML was this "thing", so our "portal" was "XML driven" no matter what that ever means.
So, being a Microsoft shop, we set up a global ActiveX control, with some cache, and we processed XML with XSLT and generated HTML. Veterans from that time would like to point up that XSLT and XML support was, at best, flaky under Windows (MSXML2) so we actually had to change our XSLT code (and lot of XML namespaces, etc.) several time in the first year.
Of course, XSLT processing was a costly operation, so we created a "document cache". It was a shared ActiveX object with a big array of strings (the processed blocks of text). It even had an admin interface, because if you changed your template, it would not know, so a developer had to go to a special page and press "clear cache". Hey, at least it was password protected!
The real WTF is that it actually worked and that code lasted for about a decade.
Admin
Admin
Like I said: I never mentioned Hibernate.
Of course. if you think that having heavyweight objects for things like day of the month is OK, and querying every single table in the database three times for each search is OK, then go ahead. But one thing is for sure: I'll never work on that code.
<!-- Emoji'd by MobileEmoji 0.2.0-->Admin
I'm fucking terrified of your database now if you consider 3NF "college-project stuff".
Admin
The extent that they set it up to eagerly fetch everything, sounds like, which may have been a default back in the day. I don't know, but lazy loading is the default now.
Admin
http://www.anti-roboforex.com/uploads/0016aa64-0b81-4c22-aa58-90a90c9f2b9c.png
Admin
There was this guy. He wanted to build a house. But it was taking a long time because he was buying nails and other hardware one at a time. He would go to the hardware store, buy a nail, carry it to the lot, drop it in a box, then go back to the hardware store....
That was bad enough, but to make it worse, he had just one box. Everything he bought was dumped into that box. So when he finished buying and needed something to build, he had to dig through the box for each thing he wanted.
And that, boss, is why our product is so slow.
Admin
But that builds character!
Admin
Admin
Yo, I've been maintaining code of such nature only today. It's actually kind of a primitive MVC in a sort of way - procs deliver models (obviously not typed) which are delivered by controllers (in this case some VB code) to views (xsl). New projects are MVC proper of course but we have some customers not yet fat enough of wallet to have moved on. It's kind of not so bad in itself but the implementation is in fact a proper, serious, nuclear weapons grade WTF sighs I could do a few submissions but have not the heart yet...
Admin
An important principle of management, lost in these modern days of the MBA: You can't manage a team correctly if you don't have some basic knowledge about what they do.
For example, most managers have a pretty good idea of what a salesperson does and how to judge their performance. If they aren't making calls, closing sales, and so forth, then you know there's a problem. Ditto for finance - if bills stop getting paid on time, or reports show up with incorrect numbers, or money isn't where it's supposed to be, that's an indication of a problem.
And the tech team is no different. I'm not saying the Big Boss has to understand the intricacies of a Perl regex, but he does need to understand what the tech team can do for the company and how to determine if they're doing it. Otherwise, they will be fooled by somebody like this architect or a Paula Bean sooner or later. (It could have been a lot worse - companies like Accenture do that for a living.)
Admin
QFT! This should be drilled into the head of everybody who believes that a manager is made by their MBA.
Right, but most of those subjects fall under the heading of 'business' -- MBA types generally are familiar with those already.On the other hand:
is very true -- but the MBA types don't want to believe it, and the same holds true for *operations*. A MBA makes a lousy MOP or MYO, at least in their "out of box" state! My employer has a dedicated training track for prospective field management for that very reason -- if you tried to run a railroad with nothing but what a MBA gives you, you'd run the business into the ground, or worse, have the FRA and NTSB asking you some very hard questions about what you were doing with the capital budget...Admin
Being an EE, I only work in tech companies, so my experience is different from being in a tech position within a non-tech company. Every manager was an engineer first before being promoted into management. (In some cases, they shouldn't have been made managers, but that's a different discussion.) The CEO may have come from the business side of the company, but management of tech departments up to at least the VP level usually has the technical background to understand technical discussions. Of course, business reasons (too expensive, schedule is more important than Doing It Right, etc.) may drive technical decisions, but at least they understand the implications of what they're deciding.
Admin
Heh, well, yeah, our code was horrendous, and we used (of course) Name-Based Filesystem Powered Backup Versioning System, a.k.a. '
bak1.bak2.bak3
'.Also, our deployment system was to copy everything to a network share. A real story: one of the devs had the production directory mapped as a drive in his PC because why not, and then came this virus which was kind of famous back in 2000 that renamed files to .JPG extension, or corrupted them or something like that. Well, he got this virus, and of course, the server was immediately affected too. Fun times...
Wish to say that I wasn't responsible for this, but ugh, I totally was.
Admin
Just because everybody knows it has happened, doesn't mean the boss is ready to admit is has happened.
Admin
TLA overload!
Admin
The NTSB is there to protect you!
Admin
From TLAs?
Admin
Of course! The FLA protects you from TLA Laceration Accidents.
Admin
Apologies for the TLA overload:
MBA -- conventional meaning ;)
Where I work: MOP -- Manager of Operating Practices -- supervises mainline train crews over a portion of the RR MYO -- Manager of Yard Operations -- supervises a railyard
In the USA: FRA -- Federal Railroad Administration -- the US RR regulator NTSB -- National Transportation Safety Board -- the (rather famous and busy) US transportation investigatory body.
Admin
Sounds like the kind of stuff they taught us in university!
Admin
To make situation worst, I once took over a (non-inhouse) web-based project from a left staff and see it uses a lot of things that no sane administrator would have allowed on server (requires separate copy of MS Office, and require domain admin account to run, just some obvious example) And when I suggest rewriting at least the most problematic part, my boss say he don't want me to and I should live with it.
I submitted my resignation the next month. (For this issue and other "little things")
Admin
I'm inferring (i.e.: reading into that more than what you explicitly said) that the customers who pay less get the more expensive service.
Admin
Strict 3NF can't always optimally exploit performance characteristics of the RDBMS. The table examples give in the Wikipedia page on 3NF illustrate that nicely: In the 3NF-compliant form, you have to perform a JOIN to get the birthdate of the winner of a particular year, and JOINs are generally bad for database performance.
Also see Denormalization.
Admin
Admin
Meanwhile here in the real world update anomalies are still far more fucking annoying than joins are expensive. But yeah, there are cases, yadda yadda, just not that many that make much sense.
Admin
Not totally, they just get the service they pay for at the time, and if it happens to be at the time when things are done by method A then that's what happens. If they can afford to update to modern method B they do but if they limp on for over 10 years on method A they don't, but you're correct in that ongoing dev and support costs do ramp up on the limping choice. Of course it is possible to avoid the extra costs by paying for the upgrade to method B but it's often a less chewable lump sum. What a business eh, bit rot feeds my family, what can you do etc.
Admin
In the real world, JOINs are so bloody expensive, that an entire generation of developers is flocking to NoSQL to avoid them (and ignoring the lessons learned by RDBMSes, but that's a different story).
Admin
Admin
Yes, and designing databases properly avoids 3NF and JOINs. Glad we agree.
Admin
Actually, no. In a well-designed database, JOINs make heavy use of indexes, and are therefore not a performance bottleneck. If you design a database to use no JOINs at all, then you end up with a massive amount of data duplication, which then leads to massive headaches trying to keep it all consistent.
Basically, a well-designed database should be in 3NF as much as possible, only dropping to 2NF to gain performance if no other means are viable.
<!-- Emoji'd by MobileEmoji 0.2.0-->Admin
Admin
Admin
Until you try to populate a datawarehouse, then the indexes cause a performance bottleneck
Admin
Well, OLAP is another story. Then you generally do not want 3NF.
Admin
All this RDBMS mumbo jumbo is fine until you start doing coding in any language which is not SQL, mapping to real stuff and nesting thousands of JOINs only to get a freaking model.
You all like your SQL and that's fine, but I hate the fuck of it, and even though I see when and RDBMS is the solution and when it's not. Luckily today we have several popular and production ready options like document, key/value and graphs stores, which allows many many many hacks in RDBMS to be burned in fire.
In conclusion, TRWTF is storing all your data in a single system, be it an RDBMS or be it a NoSQL store.
Admin
Admin
If you need to "nest thousands of joins" then you're having a major WTF all in itself, regardless of what tools you use.
I've been designing and developing applications in a variety of languages for almost 20 years now, and I think I can count the instances where I had to use more than say 10 joined tables at a time, probably on one hand, definitely no more than two.
Admin
Admin
Is there a badge for people that don't recognize exaggeration/magnification? We've got two winners here.
Admin
I'm sure @blakeyrat would also appreciate that.
Admin
Wait… what am I saying? Do I really want more whoosh badges than @accalia? :laughing:
<!-- Emoji'd by MobileEmoji 0.2.0-->Admin
So the point you tried to make doesn't really exist.
I'm always open for a few more badges. :relaxed:
Admin
Really? You haven't been around here for long?
Admin
See e.g. Why NoSQL can't write. It goes into a lot of depth on NoSQL problems, but it also illustrates quite well what the strength and weaknesses of RDBMSes are. This is from a guy working for MySQL, he really knows this stuff. The upshot is, you cannot rely on an RDBMS doing everything well with 3NF at scale.
If you don't have scale, of course, do whatever the hell you like. But if you don't have scale, you have a college-level problem.
Admin
Just because a data set is small by Google/Facebook/... standards doesn't make it any less business-critical (!)
My problem with RDBMS isn't RDBMS, though, it's asinine database designs that mangle foreign key handling to the point where you have to
INNER JOIN ON INSTR(list_of_children, child_pk) > 0
. Now that is database performance murder! (I strongly suspect that there is no index on this planet that will speed that query up, too -- if you know of one, though, please, please tell me!)