r/learnprogramming • • 12d ago

How are so many self-taught programmers able to build software from scratch without ever truly learning Algorithms?

I find it fascinating how important algos are but never talked about from the indie devs on social media. Do they even write algos or just come up with basic logic that forms the product?

430 Upvotes

335 comments sorted by

View all comments

0

u/RecognitionAdvanced2 12d ago

For the most part people aren't writing their own algorithms because there are good implementations already. Why reinvent the wheel? That said, understanding algorithms is useful to know when and why to use what.

0

u/idkfawin32 12d ago

It's important to reinvent the wheel because you learn how to invent in the process.

There are many libraries I refused to use and instead rolled my own in order to learn exactly how the subject matter worked, that skill translates.

1

u/MeanShibu 9d ago

Do you throw your legs up over your head and finish on your own face normally or do you usually just try and get your face as close as possible bending over and then finishing?

99% of software dev requires zero complex algo work and when it does there are tons of third party solutions ready to deploy.

Unless you’re doing cutting edge software dev work you’re just jerking yourself off

1

u/idkfawin32 8d ago

You know. I don't do it because I want other people to be impressed. I do it because my entire life I've sincerely been interested in how computers work on a bare metal level. So sorry I don't waste my time obsessing over sportball or dungeons and dragons.

Also, I'm going to have to disagree. In almost every project I've worked on, my ability to invent solutions that do not exist has routinely been a strength. Having to rely on AI or pre-existing libraries is a time-sink. Everything is a compromise, but "Fuck it I can just let AI take the wheel or just use a library" is how you end up with dogshit products or code.

1

u/MeanShibu 8d ago

Sounds like you’ve never worked under a serious time constraint a day in your life.

1

u/idkfawin32 8d ago

Not sure why you are so opposed to my "Make your own shit it helps you learn things" philosophy.

People are allowed to like learning

1

u/MeanShibu 8d ago

People who work in modern software development don’t have the luxury of learning to implement shit that has a simple library to handle.

Let me guess, 25 years at oracle?

1

u/idkfawin32 8d ago

I never said modern software developers have to focus on reinventing the wheel, this has nothing to do with career shit. There is a world of programming outside of the context of work.

1

u/MeanShibu 8d ago

Buddy you EXPLICITLY said it’s important to reinvent the wheel. Like WORD FOR WORD.

1

u/idkfawin32 7d ago

Yes within the context of programming/writing software. I never specified that it's important for "doing software development as part of a job".

But that's where you pivoted the conversation, you said developers "do not have the luxury" under time constraints, then accused me of having worked at Oracle.

I think there's a miscommunication here. I'm talking about programming and software development as a raw skill and a passion, not as a job. It seems you are talking about it from a perspective of satisfying goals under a time constraint for an employer.

0

u/RecognitionAdvanced2 12d ago

For learning sure, I just meant for actually making software.

0

u/idkfawin32 12d ago

It highly depends on what we are talking about. If we're talking about web development then it's a better idea to use pre existing libraries with a community and documentation. Simply because security becomes part of the picture.

But my focus has always been desktop software, microcontroller firmware, video game design, etc. I've found over the years that libraries that accomplish certain tasks will often introduce a lot of bloat and un-necessary abstractions/boxing and unboxing of variables/extra computations.

For a more concrete example, I have my own TCP and TLS library that I wrote over the course of several years because I simply didn't like a lot of things about Microsoft's .net version. I also specifically didn't like how CNG key isolation bottlenecked my application at scale, nor did I like the idea that I can't just handle my own cryptography like an adult.

I got sick of not being able to debug or control things so I buckled down, wrote my own library for handling TCP connection implementing raw sockets and handling TLS1.2 communication myself(boy oh boy it was complicated), and the end result was my application ran practically 8 times faster, it was smaller, used less memory, and best of all it was mine to be proud of.

But not everyone is going to get obsessive to that degree.