Title before edit: I hate programming, why did i choose this field
TL;DR: Stupid mistake, made by hours waste.
Basically, I was extracting date from the SQL db, and it was not displaying. I tried everything, heck I even went to chatgpt, and copilot. Two and half hours of trying every single thing under the sun, you know what was the issue?
SELECT task, status, id FROM mainWorkSpace WHERE user_id = @user_id
I FUCKING FORGOT TO ADD ‘date’ TO THE DAMN QUERY. TWO AND HALF HOURS. I was like, “Ain’t no way.” as I scrolled up to the query and there it was, a slap in the face, and you know what was the fix?
SELECT task, status, date, id FROM mainWorkSpace WHERE user_id = @user_id
Moral of the story, don’t become a programmer, become a professional cat herder instead.
The best advice I can give to new developers is “question your assumptions”.
“But I set that variable” - did you?
“It should default to 0” - is it?
Remember - if things were working as you think they are then your code would be working.
Thanks will keep in mind next time it happens
I have great colleagues who still bust out this kind of cross-examination when we’re trying to figure out why my code is a bag of poo. I have some friends I’ve known 25 years who will do this, and it’s every bit as annoying and infuriating as it’s invaluable help.
Basically how I do rubber duckie debugging
See? It should work because I initialize it as this and iterate doing this and this which gives me a data structure like this and … wait … oh hell that clearly doesn’t produce the data structure I want. 🤦
We tend to see what we want to see, not what actually is.
We’ve all done stupid stuff like this. The trick is to pad time into estimates to account for it :D
The trick is to get project managers to automatically pad you time.
Yeah in my 25 years of experience, none of them have ever done that.
The difference between experienced devs and non experienced devs is that we have hundreds of stories like that under our belt. Hundreds of “Ah I wasted all this time because of a typo”, and now we know to check for it.
It never stops. And after a while, a dev will share this exact scenario and you’ll look back and share the same bit to them.
Real moral of the story: STATIC TYPING!
Seriously so many people think it’s a waste of time, and then stuff like this happens.
If only there were a good statically typed database, as opposed to thin wrappers over SQL.
And better error messages than “bro, you got a syntax error on this line”
How would static typing help here?
Thinking about C# and Dapper here 'cause they’re what I’m used to, but, for example…
result = await connection.QueryAsync<ResultType>(QUERY);
(whereResultType
is a statically typed record, class, or struct shaped like the data you want returned.)Given a query that doesn’t return something that matches any of
ResultType
’s constructors, the code’ll throw an exception at runtime complaining it needs a constructor that matches whatever it’s returning, whereupon you’ll notice it isn’t asking for it to have adate
parameter, so the query must not be returning it.
No worries. I’ve wasted more time on lesser mistakes than this. I also once made everyone an admin by forgetting a single ampersand. That was a fun eight hours.
At least its 2.5 hours and not 2 years because of writing h instead of H
I suspect there’s a long tragedy about this, the likes that would give The Odyssey pause.
What did you asked ChatGPT? I tried it and straightforward said that the date field wasn’t included on the select statement
https://chatgpt.com/share/80918db9-5284-4a9b-b971-dde78b00497a
Honestly I worry about the use of ChatGPT on programmers. Training your eyes and brain to see things takes time. I know the suits just want production but I’d rather have better programmers.
Of course, I could just be old.
Better to ask a rubber duck than an LLM.
It has better results, is cheaper, and makes has a positive compounding effect on your own abilities.
I posted the entire function where the issue was occuring and it was trying to solve the function and not the query.
This kind of stuff happens all the time IMO, we’re human and not perfect 🤷♂️
I don’t know how much of a help ChatGPT would be in this situation without access to your schema, at least with Copilot you can write a comment in the code explaining what you’re trying to do and get some usable pointers in the generated suggestion (which takes your codebase into account).
I usually try to get a second pair of eyes on my code if something that seems relatively simple isn’t working as expected… As you gain more experience these mistakes will become less common, and easier to spot
My second pair of eyes was in an another country for business stuff so I had to solve it all by myself and because of the frustration, i wrote this post. Sorry about that
That’s when rubber duck debugging comes in handy.
In those kinds of situations you need to remember to try to break the problem down into simpler sections to identify where the problem lies. One of the first steps would be to run
SELECT * FROM mainWorkSpace WHERE user_id = @user_id
and see if that returns anything.Was going to say that.
@OP:
One of the main skill a developer must have is being able to troubleshoot properly how their code behave.
Break your code in small pieces, check all of them with unitary test (formal or not) to validate their behavior then move to the next step. Never test everything in one shot or you will be overwhelmed by side effect bugs whom will distract you from the real root cause.
Being a programmer is not just coding but also testing and deploying (even locally).
That won’t avoid you being blocked by a silly mistake for hours, everybody did that at some point in their career, but that will reduce your frustration against yourself when you discover why the bug existed.
Do a pause, go walk, change the topic and the next time you look at your code, you will spot the obvious bug :-)
In those kinds of situations you need to remember to try to break the problem down into simpler sections to identify where the problem lies.
Learned that the hard way.
One of the first steps would be to run
SELECT * FROM mainWorkSpace WHERE user_id = @user_id
and see if that returns anything.It’s one of those situations where if i write something, i forget it because it is doing its thing and about selecting everything, i should’ve done that and it’s my mistake.
You should read up on what’s called “rubber ducky” debugging
Here’s a link to a comic that summarizes the idea succinctly: https://www.smbc-comics.com/comic/the-rubber-duck-method Wikipedia article here: https://en.wikipedia.org/wiki/Rubber_duck_debugging
If you’re not familiar with the table, use a
select top 10 * from table
if you’re on sqlserver, postgresql uses limit and oracle has fetch.Don’t recommend select * without limits or conditions unless you absolutely know the table, you can very quickly make a DBA unhappy
I do this, too. The only remedies I know are a walk or a colleague’s fresh perspective.
One of the hardest issues to troubleshoot is a bad assumption. Be glad you only spent 2 hours on this.
https://m.youtube.com/watch?v=CFRhGnuXG-4
Watch this. I have found that this makes it way easier to debug shit, is more readable, and cuts down on mistakes.
You want to hate programming? Try using JS. It’s anarchy.
“Why is this the way to do things?”
“Because it just is.”
Oh, and there’s at last 2 other ways to do it too.
You didn’t add the date field to your query and couldn’t work out why it didn’t return the missing field for over 2 hours?
Perhaps SQL isn’t for you as things get waaaaay more finicky than that.
You’ve never made a silly mistake where you “can’t see the forest for the trees”?
It happens to the best of us
One time I’ve been trying to force UE5 to let me edit TArray<TPair>, an hour later I realized I could just use TMap
Yes of course, but it’s not the sort of thing I’d make a rant post criticising the entirety of programming about.
It’s like going to a mathematics forum and declaring “Guyz I forgot to carry a 1, screw Maths.”
Because developers are all logical and don’t EVER show anger at the systems they’re working on…. Hahahaha…
I mean I personally wouldn’t post about it, but I’d probably rant over lunch at my stupidity…
The best devs Ive worked with are all “barn cats”. They yell, they challenge, they curse, they gesticulate, but they never offend.
(The f’n Workplace Sensitivity thing I just took outlawed so many behaviours that I know would exclude every superhero I know. What’s happened to the industry?)
There’s a difference between ranting to your coworkers at lunch about a stupid mistake and typing out a full rage essay.
Imagine the state of the sub if we all did that… Wait…
This “full on rage essay” is nine sentences, including the tl;dr and the sentence fragments. There’s really not a big difference between telling your coworkers a story like this and posting about it on social media.
Did you read it before the edits? If it’s written like that I think I’m entitled to exaggerate back slightly to make a point by calling it a rage essay.
Anywho I wouldn’t choose to rant like this to my coworkers or online. A quick 🤦 in chat usually does the trick.
I read it a few hours ago. Was it substantially longer before?
Oh I’m not encouraging it, personally I just ignore the rants like that….
But at the same time, I can identify the emotion that drew the person to do it.
Ah yes here you are successfully ignoring it.
Might not be encouraging it but you seem to be defending it.
I ignored OP’s statements, not yours.
You’ll find I replied to you and not them, but I appreciate your condescension in the midst of being wrong.
Ranting about problem you had and being dramatic about it? No problem, I get it. I’m here to be supportive of your struggles. I’ll absolutely defend someone that is being dramatic over their own mistakes, we’re all our own biggest critics. Beyond that, I’ll ignore it and let them get through their own emotions.
Feeling the need to judge someone over it? Yeah, YTA here and you’ll find that coworkers don’t like you for it. It’s unpleasant, and unnecessary.
Do you enjoy it when people point out your faults and say “maybe the tech world isn’t for you?”
…… but you’re not going to see it that way at all. You’ll create some meaningless “but it’s different” argument because you feel the need to defend your actions rather than reflect on them.
Have a nice day, I’m done.
It’s like going to a mathematics forum and declaring “Guyz I forgot to carry a 1, screw Maths.
You may think you’re joking, but as a Maths teacher I can tell you I have seen a lot of posts where someone makes a mistake with their signs, then uses their wrong answer to declare “The rules of Maths are wrong! Look - different answer!”. Yeah umm, try working on getting your arithmetic right first before claiming to have “proved” something. 😂
The title was an over exaggeration on my part
Whooosh
You don’t know the circumstances. They might have only seen the query results after several processing steps…
You are correct I don’t know the circumstances so all we can go on is what OP wrote…
it’s indeed a new language for me and I haven’t developed that ability to know where the bug is happening but I am going to get there.
Assuming you’re coming from a linear programming and OOP background, then data (incl. SQL) kinda sucks because it’s not always clear how to apply existing concepts. But, doing so is absolutely critical to success, perhaps more so than in most OOP environments. Your post isn’t funny to me because I’d be laughing at you, not with you.
If a variable is fucked, the first questions you should answer are, “Where’d it come from?” and “What’s its value along the way?”. That looks a lot different in Python than SQL. But, the troubleshooting concept is the same.
If object definitions were replaced by table/query definitions in planning then you’d probably not have made the initial error. Again, it looks different. But, the concept is the same.
Seriously. If this broke him it gets so much worse… but honestly op, this is how you learn what to do and what not to.
I know that, my anger has manifested this post, and I shouldn’t have criticized the entire field
I think anyone who’s been in the field for long enough knows you weren’t really slamming all of it. Beaking off is totally okay.
Get yourself a debug rubber ducky mate, talk to it when you are troubleshooting might fire off a coupe more pathways to identify the problem sooner.
So this is the second mention of a rubber duck. I’m trying to fiercely convince myself that talking to a toy on your desk was absolutely not a real thing for adults and that this is some satire I’m missing.
If it’s true, that’s beyond shameful for an adult. I would quit if I were next to that person’s office/cubicle so that they didn’t infect me.
In fact, if this was a real thing, don’t even tell me. I don’t want to live with that kinda shame for my species.