The notion that creating a half-decent application is quick and easy enough that I would be willing to transform their idea into reality for free.
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
I'm pretty sure that government software always blows because they think software can be written according to a fixed schedule and budget
It's tempting to think it's like building a house, and if you have the blueprints & wood, it'll just be fast and easy. Everything will go on schedule
But no, in software, the "wood" is always shape shifting, the land you're building on is shape shifting, some dude in Romania is tryna break in, and the blueprints forgot that you also need plumbing and electric lines
Well, that’s probably true for the most part but by far the reality is that it comes down to lowest bidder 9/10 times. Unrealistic budgets and unrealistic time frames with as cheap labor they can find gets you a large amount of government funded projects throughout all the years.
That's absolutely true. What's hard and what's easy in programming is so completely foreign to non-programmers.
Wait, you can guess my password in under a week but you can't figure out how to pack a knapsack?
That just because I'm a programmer that must mean I'm a master of anything technology related and can totally help out with their niche problems.
"Hey computer guy, how do I search for new channels on my receiver?"
"Hey computer guy, my excel spreadsheet is acting weird"
"My mobile data isn't working. Fix this."
My friend was a programmer and served in the army, people ordered him to go fix a sattelite. He said he has no idea how but they made him try anyways. It didn't work and everyone was disappointed.
And everyone expects you to know how to make phone apps.
He said he has no idea how but they made him try anyways.
Uh, I've been present when such a thing happened. Not in the military, though. Guy should install driver on a telephone system, despite not being a software guy (he was the guy running the wires). Result: About as bad as expected. The company then sent two specialists on Saturday/Sunday to re-install everything.
The worst and most common misconception is that I can fix their Windows issues from a vague description they give me at a party.
My favorite is "and there was some kind of error message." There was? What did it say? Did it occur to you that an error message might help someone trying to diagnose your error?
What did it say?
I've had users who legitimately did not understand this question.
"What do you mean, what did it say? I clicked on it but it still didn't work."
Then you set up an appointment to remote in, ask them to show you what they tried to do, and when the error message appears, they instantly close it and say "See, it still doesn't work. What do we even pay you for?"
I've had remote sessions where this was repeated multiple times, even after telling them specifically not to close the message. It's an instinctive reflex.
I once had a friend who told me, that he finds it interesting that I think and write in 1s and 0s.
"Just"
That one word has done a fuck ton of lifting over my career.
"Can't you just make it do this"
I can't "just" do anything you fuck head! It takes time and lots of effort!
A lot people compleatly overrate the amount of math required. Like its probably a week since I used a aritmetic operator.
Sometimes when people see me struggle with a bit of mental maths or use a calculator for something that is usually easy to do mentally, they remark "aren't you a programmer?"
I always respond with "I tell computers how to do maths, I don't do the maths"
Which leads to the other old saying, "computers do what you tell them to do, not what you want them to do".
As long as you don't let it turn around and let the computer dictate how you think.
I think it was Dijkstra that complained in one of his essays about naming uni departments "Computer Science" rather than "Comput_ing_ Science". He said it's a symptom of a dangerous slope where we build our work as programmers around specific computer features or even specific computers instead of using them as tools that can enable our mind to ask and verify more and more interesting questions.
At the same time, I find it amazing how many programmers never make the cognitive jump from the "playing with legos" mental model to "software is math".
They're both useful, but to never understand the latter is a bit worrying. It's not about using math, it's about thinking about code and data in terms of mapping arbitrary data domains. It's a much more powerful abstraction than the legos and enables you to do a lot more with it.
For anybody who finds themselves in this situation I recommend an absolute classic: Defmacro's "The nature of Lisp". You don't have to make it through the whole thing and you don't have to know Lisp, hopefully it will click before the end.
On the other hand in certain applications you can replace a significant amount of programming ability with a good undertstanding of vector maths.
They can't possibly judge what is trivial to achieve and what's a serious, very hard problem.
As always, there is an XKCD for that.
The example given in the comic has moved from one category to the other. Determining whether an image contains a bird is a fairly simple "two hour" task now.
Plot twist: The woman in the comic is Fei-Fei Li, she got the research team and five years and succeeded 🤯
- You're a hacker (only if you count the shit I program as hacks, being hack jobs)
- You can fix printers
- You're some sort of super sherlock for guessing the reason behind problems (they'll tell you "my computer is giving me an error", fail to provide further details and fume at your inability to guess what's wrong when they fail to replicate)
- If it's on the screen, it's production ready
If it’s on the screen, it’s production ready
"I gave you a PNG, why can't you just make it work?"
I actually get that somewhat often, but for 3D printing. People think a photo of a 3D model is "the model"
That there's something inherently special about me that makes me able to program....
... Yes...patience and interest.
The things that make me a good programmer:
- I read error messages
- I put those errors in Google
- I read the results that come up
Even among my peers, that gives me a leg up apparently.
People think I can hack anything ever created, from some niche 90s CD software to online services
That IT subject matter like cybersecurity and admin work is exactly the same as coding,
At least my dad was the one who bore the brunt of that mistake, and now I have a shiny master's degree to show to all the recruiters that still don't give my resume a second glance!
"But why? It both has to do with computers!" - literally a project manager at my current software project.
I mean the classic is that you must be "really good at computers" like I'm okay at debugging, just by being methodical, but if you plop me in front of a Windows desktop and ask me to fix your printer; brother, I haven't fucked with any of those 3 things in over a decade.
I would be as a baby, learning everything anew, to solve your problem.
That they have any business telling me how complicated something is or how long something should take for me to implement.
That it's dry and boring and even I must hate it because there's no place for creativity in a technical field.
That the business idea, the design, the architecture, and code for the next multimillion dollar app is just sitting in my head waiting for the next guy with enough motivation to extract from me.
I found it useful when explaining programming to lay people to try to put various programming paradigms in everyday terms.
Imperative programming is like a cooking recipe. You need specific ingredients in certain amounts and you need to perform actions in a very specific order, or the recipe won't turn out right.
OOP is like a bicycle. Lots of pieces interconnected and working together, hopefully interchangeable and standardized. It can also be used to explain unit testing to juniors. Clock mechanisms or engines can also work but people tend to relate better to bicycles.
Declarative programming (SQL) works like ordering at the restaurant. You still need to know how restaurants work and about meal courses and how to read the menu etc. but you don't need to know how the sausage was made, only if it's good or not.
After doing it for 15 years, I must be good at it and everything should be easy.
hidethepainharold.jpg
That it's mostly sitting behind a computer writing code. More than half my time is spent in the exploration phase: math, research, communication and developing a concept. The actual writing of code is typically less than 1/3.
Also as someone mentioned before, that it's considered something 'dry'. I honestly wouldn't be able to code properly without my intuition. Take for example code smell. I don't know why the code is bad, I just feel that it's off somehow, and I keep chipping away until it feels just right.
Doesn't happen as much, but family and non tech friends would present me to other people that "worked with computers" thinking I could take new job opportunities. They were always wildly unrelated to my field.
I know I know,.. they acted in good faith, and probably could have adapted a bit, but like 30 years ago there was a lot of overlap and systems where somewhat similar, but now somebody trained in Linux kernel maintenance isn't going to learn how to create SharePoint SPFx webparts. Development is very specific now!
The speed at which it takes to make something. We had a vulnerability with a JavaScript library in an old app that I do minimal support on, I said that it only uses like 3 or 4 libraries, so depending on what it is the whole frontend may need to be re-written. IT: "Ok well we have to get that expensed." Sure bro let me just bill the client that is paying for it and error support 20k for new dev time. Nah, the fix is gonna have to be a workaround on your end, we do not have the bandwidth and they don't have the capital.
-
I'm a programmer, so I must know how to get X done in Y software.
-
I don't use or so I'm some kind of Luddite and can't possibly know anything useful about computers.
One thing that fascinates me about #1 is that the absolute raw dependency people have on Google doesn't seem to ever lead to searching for a tutorial.
Not programming per se but my sister thinks it's okay to have 300+ Chrome tabs open and just memorize the relative locations of them whenever she needs something. She's lucky she has a beefy computer.
It has been a long time since I've interacted with people who are largely tech ignorant, but back in the day people always assumed I could hack anything since I'm a website developer. It wasn't uncommon for people to ask me if I can hack Facebook. I mean the answer is "probably not, but maybe", but they think that means furiously typing for 20 seconds and yelling "I'm in!", when the reality would be months worth of snooping and social engineering.
Based on some places I used to work, upper management seemed convinced that the "idea" stage was the hardest and most important part of any project, and that the easy part is planning, gathering requirements, building, testing, changing, and maintaining custom business applications for needlessly complex and ever changing requirements.
I think that non-tech people think that tech just goes. Like you pull it out of a box and turn it on and it just works. They have no idea how much jenk is in everything and how much jenk was eradicated before a user came went anywhere near.