As someone who spends time programming, I of course find myself in conversations with people who aren’t as familiar with it. It doesn’t happen all the time, but these discussions can lead to people coming up with some pretty wild misconceptions about what programming is and what programmers do.

  • I’m sure many of you have had similar experiences. So, I thought it would be interesting to ask.

deleted by creator

candyman337
link
fedilink
227M

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.

@NABDad@lemmy.world
link
fedilink
English
37M

Nah, the fix is gonna have to be a workaround

Ah, yes. The “do nothing but cross your fingers and pray it doesn’t bite you in the ass” workaround.

candyman337
link
fedilink
27M

No, one part of the fix would be an access policy limited to their network or via VPN. Security is part IT and part dev

Elise
link
fedilink
247M

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.

I really like the word you used, code smell. I often have a hard time expressing to co-workers in code reviews why something feels off, it just does.

Elise
link
fedilink
1
edit-2
6M

deleted by creator

jadero
link
fedilink
227M
  1. I’m a programmer, so I must know how to get X done in Y software.

  2. I don’t use <social media app> or <messaging system> 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.

I’ve lost all faith in tutorials as sources of relevant knowledge. If I’m searching about a specific problem, any from-the-top how-to might as well be Ben Stein reading it aloud at 50% speed, and then a year of my life later, it skips right over the place where something fucked up.

I live in the second one. On purpose. I’ll never wear my debian tshirt.

jadero
link
fedilink
67M

Me too.

I found that my 2600 t-shirt keeps them at bay. First, they ask what 2600 is, then they make sure that nobody allows me near their computers.

@Asudox@lemmy.world
link
fedilink
6
edit-2
7M

The most I read and hear is “you’re a hacker”. And I get labeled as the computer nerd alot in school.

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.

Idk I’m not sure I’d trust any dev who doesn’t consider cyber security in their coding. So much development is centered around security whether that’s auth or input sanitization or SQL query parameterization…

If you’re working on an internal only application with no Internet connectivity then maybe you can ignore cybersec. But only maybe.

… You know not all development is Internet connected right? I’m in embedded, so maybe it’s a bit of a siloed perspective, but most of our programs aren’t exposed to any realistic attack surfaces. Even with IoT stuff, it’s not like you need to harden your motor drivers or sensor drivers. The parts that are exposed to the network or other surfaces do need to be hardened, but I’d say 90+% of the people I’ve worked with have never had to worry about that.

Caveat on my own example, motor drivers should not allow self damaging behavior, but that’s more of setting API or internal limits as a normal part of software design to protect from mistakes, not attacks.

It’s fair to point out that not all development is Internet connected, but ~58% of developers work in web dev.

5% in desktop apps

3% in mobile

2.4% in embedded

And then of the remaining I’d be shocked if few of their domains excluded Internet facing devices.

https://survey.stackoverflow.co/2023/#section-developer-roles-developer-type

But you’re right to point out development isn’t a monolith. Professionally though: anyone working in a field where cybersecurity is a concern should be thinking about and knowledgeable of cybersec.

I didn’t realize just how siloed my perspective may be haha, I appreciate the statistics. I’ll agree that cyber security is a concern in general, and honestly everyone I know in industry has at least a moderate knowledge of basic cyber security concepts. Even in embedded, processes are evolving for safety critical code.

No one’s saying to ignore it.

If I own and run a sandwich shop, I don’t need to be on the farm picking and processing the wheat to make the flour that goes into my bread. I could do that, but then I’d be a farmer, a miller, and a sandwich maker. All I need to know is that I have good quality flour or bread so that I can make damn good sandwiches.

I’m confused where cybersec sits in your sandwich analogy. If every time you sold a sandwich someone could use it to steal all the money in your business you’d probably need to know how to prevent reverse sandwich cashouts.

I’m not talking about advanced, domain specific cybersec. I don’t expect every developer to have the sum total knowledge of crowd strike… But in a business environment I don’t see how a developer can not consider cybersec in the code they write. Maybe in an org that is so compartmentalized down that you only own a single feature?

In a few words, I’m reiterating the point that a professional software developer =/= professional cyber security expert. Yes, I know that I should, for example, implement auth; but I’m not writing the auth process. I’m just gonna use a library.

Well, at least I know from this that some folks give my résumé the first look! Not exactly more than cold comfort though, especially when I’ve already built a career in business management after a family friend gave me a leg up when the “I don’t want to do my job!” HR sorting bots kept discarding my resume for not having gone to Harvard for either my Bachelor’s or Master’s.

@huginn@feddit.it
link
fedilink
1
edit-2
7M

My part of the hiring cycle they’ve already gotten past the pipeline / bots. I’m there to do architecture and design questions 😉

But I do read every resume.

jadero
link
fedilink
107M

That IT subject matter like cybersecurity and admin work is exactly the same as coding,

I think this is the root cause of the absolute mess that is produced when the wrong people are in charge. I call it the “nerd equivalency” problem, the idea that you can just hire what are effectively random people with “IT” or “computer” in their background and get good results.

From car software to government websites to IoT, there are too many people with often very good ideas, but with only money and authority, not the awareness that it takes a collection of specialists working in collaboration to actually do things right. They are further hampered by their own background in that “doing it right” is measurable only by some combination of quarterly financial results and the money flowing into their own pockets.

Doesn’t help that most software devs don’t have the social IQ to feel comfortable saying “no” when they’re offered something that they don’t feel comfortable with and just try making it work by learning it on the fly, even learning a company enforced format of code layout is often left for new hires to just figure out. If it weren’t for how notepad++ has an option to replace tabs with spaces, I’d have screwed my internship over when I figured out that IBM coding (at least at the time) requires all spaces instead of any tabs after a stern talking to from my supervisor!

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.

“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!

Skvlp
link
fedilink
297M

Also “simple”. “It’s a simple feature.”

Simple features are often complex to make, and complex features are often way too simple to make.

Skvlp
link
fedilink
87M

I believe that it’s not for nothing that simplicity is considered more sophisticated. Many, many cycles of refinement.

It’s like, gotta be just one line of code, right?

Anything can fit in one line of you are brave enough.

SUPAVILLAIN
link
fedilink
27M

I’m pretty sure that’s a breach of style guide in at least three different languages

but probably not C++

Everything is one line of code in a turing machine.

I used to work on printer firmware; we were implementing a feature for a text box for if you scanned a certain number of pages on a collated, multi-page copy job. The text box told you it would print the pages it had stored to free up memory for more pages; after those pages had printed, another text box would come up asking if you wanted to keep scanning pages, or just finish the job.
The consensus was that it would be a relatively simple change; 3 months and 80 files changed — with somewhere in the ballpark of 10000-20000 lines changed, — proved that wrong.

printer firmware is tens of thousands of lines long

I’m starting to understand why printers are so horrible

Just what was in the main repo (at least one other repo was used for the more secure parts of the code) was a little over 4 million lines. But yeah there’s a lot of complexity behind printers that I didn’t think about until I had worked on them. Of course that doesn’t mean they have to be terrible, it’s just easier to fall into without a good plan (spoiler alert: the specific firmware I was working in didn’t have a good plan)

Out of curiosity do you have any good examples of this hidden complexity? I’ve always kinda wondered how printers work behind the scenes.

A lot of the complexity came from around various scenarios you could be in; my goto whenever people would ask me “Why can’t someone just make printer firmware simple?” is that you could, if you only wanted to copy in one size with one paper type, no margin changes, and never do anything else.

There’s just so many different control paths that need to act differently; many of the bugs I worked on involved scaling and margins. Trying to make sure the image ended up in a proper form before it made it to hardware (which as more complexity, ran on a different processor and OS than the backend so that it could run realtime) when dealing with different input types (flatbed scanner vs a document feeder, which could be a everyday size, or like 3 feet long) different paper sizes, scaling, and output paper. I mainly worked on the copy pipeline, but that also was very complex, involving up to, something like, 7 different pieces in the pipe to transform the image.

Each piece in the pipeline was decently complex, with a few having their own team dedicated to them. In theory, any piece that wasn’t an image provider or consumer could go in any order — although in practice that didn’t happen — so it had to be designed around different types of image containers that could come in.

All of that was also working alongside the job framework, which communicated with the hardware, and made sure what state jobs were in, when different pieces of the pipeline could be available to different jobs, locking out jobs when someone is using the UI in certain states so that they don’t think what’s printing is their job, and handling jobs through any of other interface (like network or web.)

That’s the big stuff that I touched; but there was also localization; the UI and web interfaces as a whole; the more OS side of the printer like logging in, networking, or configuration; and internal pages — any page that the printer generates itself, like a report or test page. I’m sure there’s a lot more than that, and this is just what I’m aware of.

Skvlp
link
fedilink
197M

I worked in a post office once. I once had a customer demand some package delivery option, if I remember correctly. He was adamant that it was “only a few lines of code”, that I was difficult for not obliging, and that anyone in the postal service should make code changes like that on the whims of customers. It felt like I could have more luck explaining “wallpaper” to the currents in the ocean…

explaining “wallpaper” to the currents in the ocean…

If this isn’t just a saying I haven’t heard of, I’m doing my best to make it a common place phrase, absolutely perfect in this context!

Skvlp
link
fedilink
27M

Thank you so kindly :) It’s not a saying, as far as I know.

pinchcramp
link
fedilink
67M

I would have written that comment if you hadn’t already done it.

I don’t know exactly why people think that we can “just” do whatever they ask for.

Maybe it has something to do with how invisible software is to the tech-illiterate person but I’m not convinced. I’m sure there are other professions that get similar treatment.

I know you built the bridge to support 40 ton vehicles, but I think if we just add a beam across the middle here, we should be able to get 200 tons across this no problem? Seems simple, please have it done by Monday!

AwkwardLookMonkeyPuppet
link
fedilink
English
47M

I get that from our product owners a lot, and I usually say “yes!”, followed by an explanation of how much time it will take and why it’s not the path we want to take. People respond well to you agreeing with them, and then explaining why it’s probably not the best approach.

I once watched a video lecture from the guy that implemented lambdas in the JVM and he was giving community feedback that he received. He said, “Obvious but wrong answers have the word ‘just’.”

“Just” is a keyword that I’m going to triple my estimates. “Just” signifies the product owner has no idea what they are requesting, and it always becomes a dance of explaining why they are wrong.

I like to say:

We have a half finished skyscraper, and you’re asking me to Just add a new basement between the second and third floor. Do you see how that might be difficult? If we want to do it, we have to tear down the entire building floor by floor, then build up again from the second floor. Are you prepared to spend the money and push back the release date for that new feature?

It’s a meme to say “can’t you just” at my workplace

“Would you kindly”…

0xCAFe
link
fedilink
English
637M

They can’t possibly judge what is trivial to achieve and what’s a serious, very hard problem.

wagesj45
link
fedilink
387M

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 🤯

Well that’s after thousands of people and 100s of millions in money

Of course, but I still find it remarkable that the task that was picked as an example for something extremely difficult is now trivially easy just a few years later

That is a pretty hard thing to do, to be fair. And the list of things that are easy sometimes makes big jumps forward and the effect of details on the final effort can be massive.

0xCAFe
link
fedilink
English
37M

You’re right! Even for programmers.

I Cast Fist
link
fedilink
537M
  • 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

I’ve had questions like your 3rd bullet point in relation to why somebody’s friend is having trouble with connecting a headset to a TV.

No idea. I don’t know what kind of headset or what kind of TV. They are all different Grandma.

If it’s on the screen, it’s production ready

“I gave you a PNG, why can’t you just make it work?”

I Cast Fist
link
fedilink
197M

I actually get that somewhat often, but for 3D printing. People think a photo of a 3D model is “the model”

Dude, I would just 2d print the png they sent and give them the piece of paper.

If they complained, I would say: “I literally printed the thing you told me to print.”

Programming and Software Engineering are related, but distinct fields. Programming is relatively easy, Software Engineering is a bit harder and requires more discipline in my opinion.

that programmers make $300-500k/year

The worst and most common misconception is that I can fix their Windows issues from a vague description they give me at a party.

monotremata
link
fedilink
227M

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?

@KISSmyOS@feddit.de
link
fedilink
21
edit-2
7M

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.

monotremata
link
fedilink
177M

Or it won’t happen when you’re watching, because then they’re thinking about what they’re doing and they don’t make the same unconscious mistake they did that brought up the error message. Then they get mad that “it never happens when you’re around. Why do you have to see the problem anyway? I described it to you.”

When that happens, I’m happy. Cause there is no error when the task is done right.
I mail them a quick step-by-step manual with what they just did while I watched.
When the error happens the next time I can tell them to RTFM and get back to me if that doesn’t solve the issue.

Isn’t the solution to send them this link? ;-)
https://distrowatch.com/dwres.php?resource=major

Won’t solve their problem, but they won’t be your friend anymore :)

exu
link
fedilink
English
187M

This does solve the problem for you though

Deceptichum
link
fedilink
127M

You Don’t Win Friends with Salad Linux

Windows bad. Linux good. No need for nuance, just follow the hivemind.

Do you have a few minutes to talk about our Lord and Saviour, Linus Torvalds?

Don’t you mean Linux Torvalds?

that hurt to type

Kaldo
link
fedilink
4
edit-2
7M

Oh you have an issue on Linux? Just try a different distro

(this one hurts more because it technically usually works)

Lol! My mum still asks both me and my husband (“techy” jobs according to her) to solve all her problems with computers/printers/ the internet at large/ any app that doesn’t work… the list is endless. I take it as a statement of how proud she is of me that she would still ask us first, even if we haven’t succeeded in fixing a single issue since the time the problem was an old cartridge in the printer some 5-6 years ago.

Or some stupid Facebook “””issue”””

@huquad@lemmy.ml
link
fedilink
English
17M

At least that’s an easy one, you just convince them to delete their account. \s

Treczoks
link
fedilink
97M

My answer: “I don’t play Windows”.

mox
link
fedilink
1837M

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.

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?

Elise
link
fedilink
77M

I once had this and ended up paying for the meeting room cuz he was broke.

What’s worse is them insisting that you build it in Rust and Mongodb only.

Lung
link
fedilink
737M

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

astrsk
link
fedilink
43
edit-2
7M

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.

Treczoks
link
fedilink
167M

One of the most common problems of government or other big organisation software is that they don’t scale, either “not well” or “not at all”.

Some guy hacks up a demo that looks nice and seems to do what customer wants, but then it turns out a) that it only allows for (number of open ports on one machine) users at the same time, and b) it only works if everything runs on one machine. Or worse, one core.

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

it never goes according to schedule eve if there is blueprint & wood

Building a house (or any construction project) is notoriously impossible to be on schedule and on budget too.

I have a hypothesis that a factor is that government needs to work for everyone.

A private company can be like “we only really support chrome”, but even people running ie6 at a tiny resolution need to renew their license.

Lith
link
fedilink
57M

I believe this is usually covered by the fact that you can do just about anything you need to do over mail. I once ran into a government site that only worked on Edge.

That you can mix and match bugfixes like lego blocks an hour before release.

Create a post

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 !webdev@programming.dev



  • 1 user online
  • 1 user / day
  • 1 user / week
  • 1 user / month
  • 1.11K users / 6 months
  • 1 subscriber
  • 1.21K Posts
  • 17.8K Comments
  • Modlog