Doing a college class on Database Concepts, it feels weird, like for more than half the class I had no idea what the fuck I was doing with SQL, but then like two weeks ago it clicked for me.
Speaking of SQL... my company is doing contracting work for a bigger, extremely bureaucratic corporation / institution.
We're building a product that the client will be deploying internally on their servers. It's really me who's building it, all the code is mine, aside from some dockerfiles and other deployment scripts someone else is writing.
In building this, I'm not using an ORM, just inline SQL. I've never been a big fan of ORMs. I like to be directly involved in laying out the table design and I hate all the goofy constructions and weird bugs ORMs come up with, that you end up having to debug by hand anyway.
So at first, I had the goahead to start building this (just kinda prototyping, sketching it out) before we had hard specs from the client about the deployment environment. This was with the assumption that if I didn't do anything too exotic, the final changes to match the actual environment would be minimal. Which is more or less what happened. Started off with MySQL, then they told us we'd be using postgres, so I rewrote it, but otherwise that was the biggest env related change.
Now after a few weeks of work and testing, it was pretty much done. I moved on to a new project while my coworker started talking to the client's guys about deployment.
This is where it gets weird. They're saying they want to micromanage how the tables are named and how the columns are named. They're using some gui tool to model the relations graphically, and it generates column names from the English descriptions they put in, and they're horrendous.
Like hypothetically what was
location.product_category_id
in my code became
loctn.loctn_prodkt_cat_index_uid
in their proposed schema. Yes, they would occasionally reduplicate the table name in the field name too. Yes, they would arbitrarily toss in words like index into the field names. No, none of this was done consistently.
I'm going to have to rewrite this (and the project that has since come after this, fuck me). Or my coworker will be assigned to it. It's mostly a search and replace job but you want to do it right. I had to spend two days this week helping my coworker debug what the new SQL code broke.
I wanted to hassle them about this and get an explanation from them, but they're also a client and this is not really a hill to die on. This project is a little crud REST API with some automation tossed in. I'm not super proud of it but on the other hand it's also not terrible.
So now I'm just trying to rationalize this to myself. Maybe they're used to working with braindead pajeet python code that just uses an ORM and this isn't usually a huge problem most of the time? So they're using that shitty gui tool, maybe it's just laziness on the part of the database pajeet we're working with? I can deal with that.
But I push a little, and my more business minded colleague talks to the project manager on the client side. (I don't think he trusts me not to call him a knob gobbler, which is fair enough) The business manager replies "nah, just policy that we abbreviate columns that way". This makes no sense. A human is having to type out the longer English descriptions, so at some point there is some control over what column names get generated. But by this point, I feel like I'm losing this fight.
Also, by the way, terrible H1B1 hires are making this so much worse. I've worked with intelligent, competent pajeets before, but they're rare. Your typical pajeet coder is well trained, but only in providing the same cookie cutter solutions to very specific problems, and god help you if you need them to demonstrate some creativity or flexibility in solving an unexpected problem. And the language barrier is a huge problem.
So here's what I think would happen if I kept pushing: they'd put me on a call with their database pajeet again.
I'd spend an hour trying to figure out how the field names are generated. I'd be asking if typing the English documentation text in their shitty db schema GUI program is what does it. (which is what I'm guessing). I'd ask them if they could type whatever doc text is necessary to generate fields at least mildly close to the original field names. That'd be a good compromise. I'd be ok with that.
But I'd have to sit there explaining myself over and over and wait a good thirty seconds each time for the pajeet to reply and say "but no see mister we put the description in the box here". I don't know if it's the language barrier or the lack of problem solving skills but there's something serious wrong with these people in the tech industry.
All in all, I think it'd probably take an hour and a half to get a yes or no on that proposal and I'd look like an annoying spergy asshole the whole time. So I'm just giving up now.
Also why are we hiring people who can barely speak English for a technical position? Nuance and the ability to express it and understand it is vital. Also if I went to Bangalore and couldn't speak the local language competently I'd feel like a huge asshole.
Also half of them consistently misspell my first name. Marvin is not difficult to spell (not my real name). It's in my email signature. I always am very careful and respectful to spell their names properly yet they treat my name like they're writing a Nigerian prince email.
Fuck me, I hate big orgs.