What are some common misconceptions about programming that you'd like to debunk?

https://programming.dev/post/9634424

What are some common misconceptions about programming that you'd like to debunk? - programming.dev

That you can just go to a bootcamp, and be good at or naturally suited for it.

That you can go to college and get a degree, and be good at or naturally suited for it.

Eh, I’m naturally good at it. I got shoved into the programming UIL group in school with absolutely no background in programming and tied for 3rd place.

But, I really don’t enjoy doing it.

Why are you in programming related communities if you don’t enjoy it?

I browse by all

Plus, I have to do light coding for my job (script writing)

Exact same thing happened to me. Group project needed a programmer, I was a gamer with a nice computer so I volunteered. 15 years later and I’m a software engineer at a huge company.
Well that’s true for every field.
But programming is definitely more open to the idea of people just showing up and claiming to know stuff. You wouldn’t trust Steve to build a bridge just because he watched a bunch of engineering videos on YouTube.
That coding interviews are even by the tiniest measure good indicators of how capable a candidate is for a software engineering job.
Everyone can code.
Anyone can, but not everyone needs to
Not everyone should
And not everyone should.
I didn’t want to say that because it sounds mean, but yes, pretty much
Thar just because you solved a particular problem in 10min, all other problems are going to take 10min too.
Relevant XKCD: xkcd.com/1425
Tasks

xkcd
What’s funny about this comic now is the second one has become very attainable in the years since it was released. The concept still applies though. Some things are a lot harder than they seem on the surface.

Somebody spent the money on a research team and five years is why it is very attainable now.

Someone trying to write the code from scratch would still take a research team and years to replicate it from scratch.

And here I was thinking of xkcd.com/664/
Academia vs. Business

xkcd

That programming as a career means you’re going to spend writing nice, clean code 80% of the time.

It’s rather debugging code or tooling problems 50% of the time, talking to other people (whether necessary or not) about 35% of the time and the rest may be spent on actually spending time doing the thing you actually enjoy.

I may be exaggerating, but only a little.

I really don’t mind any of it though.
Different strokes for folks I guess 🤷‍♂️
In my experience, you’re rather inaggerating. I’m not even 10y into my career and if I get to actually code for 2h a day, that’s already a success. Most of my time nowadays is documentation, meetings, jira, research and calls with the clients.

I think it heavily depends on the size and (management) culture of your employer. My most recent gig had me sit in way too many meetings that were way too long (1hr daily anyone?), feeling with a lot of tooling issues and touching legacy code as little as possible while still adding new features to our main product on a daily basis. Obviously “we don’t need a clean solution. We’re going to replace that codebase anyways, next year™”.

The job before that had me actually code for about 80% of the time, but writing tests is annoying and showed you down and we don’t have time for that. Odd how there was always time for fixing the regressions later.

I think it’s also a question of how you position yourself. Without noticing it, I’ve developed a kind of “will to power” in the sense that I want to shape the product we’re working on. So instead of just sitting in my corner and working on ticket after ticket, I’m actively seeking conversations with stakeholders to find out, whether it even makes sense to implement it as described in the ticket, or propose new ideas, etc.

Also, my mother taught me (by virtue of being completely untechnical) how to explain complex problems and systems in a way that non-technical people understand. So if “a developer” was needed, management often enough volunteered me.

I could pull myself mostly out of this stuff, but I’d get even more frustrated not being able to at least try to make things a bit better. So I’m putting on the headset once more.

also microservices in my experience worsen this sort of bitrot where the amount of usual duplication it involves means that even if you manage not to have poorly documented spaghetti magic that gets updated once in an eon in one service or two it still might be elsewhere and this

  • discourages refactoring due to the duplication
  • harms consistency
  • encourages lousiness because your stuff might mostly work on a surface level with the rest of your system because you only expose APIs and don’t need to worry that much about how your methods will be called. Which might seem convenient to use and implement in an ideal scenario, but could easily become troublesome to debug if anything goes wrong.
  • It is fun
    Both of your comments hurt in that way only the truth is capable of hurting.
    i dodn’t want to flood the thread - there’s more where that came from
    That’s subjective. I find coding fun.
    “We’re going to clean up that code later.”
    If you’re lucky this statement is actually true 5% of the time.
    So roll a d20?
    Critical hit! It worked on the first try and you fixed some tech debt!
    Remove technical debt: Programming (Intelligence) or Programming (Wisdom), DC 15 to 20
    Programming != Computer Science. Programming is just a tool used in computer science. Computer Science is so much more and follows scientific theory and methodology.
    Computer programming is to computer science as telescope operation is to astronomy.

    A better analogy is writing vs writing.

    Do you know how to hold a pen and draw letters? You can write. Do you want to write a best selling novel? Yeah that’s a different skill.

    CS is also what most problems on leetcode and the like are about. Programming is just application of CS concepts, usually wrapped in several layers of abstraction, to domain specific problems. But I’ve never seen a job posting for a computer scientist specifically, yet we all know how it often looks like.
    That if you know how to code, you understand how computers work and understand really complicated math concepts.
    I don’t even remember my times tables anymore!
    I know my wife sets the table at 6 o’clock
    Oh, that’s easy: 0 1 0 0 0 1 0 1
    That’s the difference between a programmer and a computer scientist, but even I (a computer scientist) I’m not an expert in hardware, networking, or OS level operations because that’s not my daily focus.

    I compare my career to the medical field. Sure there are some crossovers but lots of specialties.

    Would you consult a dentist about your bowel movements?

    and what you just described is the difference between a computer scientist and a computer engineer!

    I call that the “nerd equivalency problem”. I think it’s the source of much (most? all?) of the problems with software that comes out of organizations that are not programming shops by nature.

    “We’re not moving fast enough (or, “I have this great idea!”), hire another nerd!”

    The problem also exists within individual programmers (“sure, I can do that UX/UI thingy, just let me finish building this ray-tracing thingy”), but that’s just an ordinary cognitive weakness that affects us all (thinking that being expert in one field makes one expert in all). It’s the job of proper leadership to resist that, not act as though it’s true.

    This one’s a hot take, but: That Python is easy.

    I’ve had to work with it in three projects in the past five years and I consider it one of the hardest programming languages, for anything but very short scripts.

    You don’t get proper compiler assistance, unless you have 100% test coverage. You don’t get a helpful text editor. You don’t usually get helpful type hints in libraries you use, so you have to genuinely just study the documentation and/or code. You get tons of quirky behavior in the stdlib, build tools, async stack, imports. You get breaking changes in minor versions of the language.

    I find writing code in Python extremely mentally taxing, because you just get so little assistance, that you have to think of everything yourself.

    Try the PyCharm IDE. It's really smart and helpful.

    I’m sorry, but PyCharm is precisely what we were using. I do consider it the best Python editor, but it’s several classes below IntelliJ for Java/Scala/Kotlin or even the extremely new RustRover for, well, Rust. And I’d say roughly at the level of KATE (a non-smart text editor) with just the rust-analyzer language server hooked up.

    It is extremely impressive what PyCharm manages to analyze in Python, but other languages offer similarly good tooling out of the box, or make such analysis much easier by having static types.

    I think Python is easy to learn but difficult to get past the basics. I’m also not convinced that getting past the basics is even worth it in three long run. I say this as a person who has used all Python at work for roughly 70 percent of the last 15 years. My current position is moving to Rust and my last 2 positions were moving to Go. Everybody was happier.
    Yeah, when I was at Google there was a big push among the SREs to switch from Python to Go.

    Dynamically typed languages all suffer that fate. There’s a reason Typescript literally has that feature in its name.

    What does help though is type hinting. You “just” have to enforce it and its fallout in your entire codebase.

    Yeah, we invested a lot of time into type hinting and checking, but mypy would never exit without warnings and errors, because many libraries we were using had no type hints.
    It was also just exhausting/cumbersome, having to write type hints everywhere, as there’s no type inference.

    But yeah, we always joked that someone should create TypeScript for Python – Typhon.

    Typhon - Wikipedia

    Part of the investment has to be only using libraries that have type hints.
    Agree, also just in general I find many things Python very odd and syntactically isolated to some extent. Constructors, lamba, dictionaries in particular are extremly whack.
    I don’t know if i qualify as a full programmer, I’m an actuarie but 90% of my work is in python, 5% SQL and 5% excel. I love python because is flexible as fuck, I can connect to the SQL server, send the queries to a pd.DataFrame, process the information, scrap some webpage for adicional information needed, and finally export to an excel file that the accounting team can use. I don’t write fully functional programs, but small specific scripts for different tasks. R is another popular programming language between actuaries and statisticians, but I haven’t find anything that R can do, that I can’t in python.
    Might just be my inexperience with the library, but every time I end up with a pandas dataframe, I spend the next 4 hours trying to figure out the right sequence of index statements and function calls to get the data in the order I want. It always ends up feeling like I’m doing something wrong, and the only way to really tell is to run the code as far as I can tell. I don’t use dataframes very often though, and I’m sure it gets easier with experience.

    My general dev experience is limited mostly to python but with pandas one thing you can do is set up a jupyter notebook so you can run just the parts you want until it’s working as expected, then you can move it over to your python script when you’re ready.

    But working with pandas does get easier with practice. If you’re wanting to dive in a bit more, the “getting started” page has a tutorials section which features a 10 minute high level overview, a cheatsheet, and link to some community tutorials.

    Getting started — pandas 2.2.0 documentation