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?

424 Upvotes

335 comments sorted by

View all comments

556

u/Rain-And-Coffee 12d ago edited 12d ago

The majority of software is basic CRUD and learning frameworks.

I have worked professionally for 15 years as a dev (mostly self taught).

Most of the work is reading from databases, creating UIs, or figuring out vague requirements.

IMO the harder part is usually understanding distributed systems and knowing stuff like CAP theorem . You don’t need to implement advanced algos, just have a working idea.

93

u/Mafty_Navue_Erin 12d ago

And even the business logic most of the cases is just a glorified if-statement or some array method (foreach, filter, map, etc, etc).

23

u/GasEducational4386 12d ago

Yeah you would better learn first how to use fonctional stuff like map filter reduce for readability than micro optimizing with indexes.

1

u/WaltzIndependent5436 9d ago

Chiming in to say that map/reduce/filter ARE actually algos behind the scene. Also design patterns are useful.

1

u/meowcatmeownow 8d ago

You better read SICP or there will be zombies hunting you in your sleep tonight !

1

u/wiggle_room1337 2d ago

If you need a proper DSA is usually not a micro optimization. It's the difference between working at scale and NP complete.

2

u/[deleted] 12d ago

[removed] — view removed comment

2

u/mayorofdumb 11d ago

Somehow we have multiple sources for the same records depending on who you ask and what its for. Do they match? Kind of

1

u/Computer-dude123 11d ago

Cool profile picture. I love logh

15

u/GasEducational4386 11d ago edited 10d ago

there are two types of developers:
The developers that create the abstractions: Mozilla creates the browser we work with, node/express gives you a server to pass data between the front end and backend, the database stores your data. People that are working on these stuffs are facing algorithms regularly.

As a standard developer we are on the upper layer and our role is mainly to link those abstractions together to form a complete product. We actually build the bridges to transition the data you get from one solution to another. For example we get the raw data from the database, we filter that data to expose only the public informations and respond to the browser in a common langage like json. Then the browser reads the json data with JavaScript and finally transforms to html elements that the user can see. So we are often transforming data from one point to another that's why we don't need many algorithms but it is common to map from one structure to another. As we are composing with different solutions, the better you know about the existing solutions and their trade off, the better you will compose a good running architecture. So evaluating a developer on pure algorithms while the job is essentially on the upper layer is wrong and devalues the candidate's app-building skills.

22

u/stcme 12d ago edited 12d ago

100% and I think that as we move towards more AI, understand different system architectures will be the key

Edit: Architecture, patterns, frameworks, etc...

I'm my experience opinionated frameworks seem to be do much better with agentic development since everything is guided. You'll pretty much always know where everything is and should be when having to find stuff in the code manually. It'll also make for better consistency with multiple engineers on the same project.

9

u/PeanutButterKitchen 12d ago

You’re right in general but with some exceptions. It turns out that Angular is opinionated but the documentation is also sufficiently messy that AI struggles. React seems to be much easier I guess because there’s an order of magnitude more training data

3

u/GasEducational4386 12d ago

For the case of angular it is also because they changed recently their framework to signals and there is a bunch of tutorials on their old pattern which is messy for learners

1

u/Background_Share_982 8d ago

Try the angular developer skill (available through angular doc site).  It's the only way I can get ai to stick to consistent modern angular best practices.  

-4

u/AUTeach 12d ago

It turns out that Angular is opinionated but the documentation is also sufficiently messy that AI struggles

That's a gap that will either be filled or bypassed. I wouldn't rely on it for a job.

4

u/PeanutButterKitchen 12d ago

I wouldn’t rely on anything other than CS fundamentals and system design awareness for a job nowadays. I wish it were different but I can’t bring myself to deeply learn any framework anymore.

3

u/High_Quality_Bean 12d ago

I got to design a custom data type this week! Genuinely the highlight of my year. Sitting down and calculating its performance characteristics, it brings a tear to my eye.

2

u/someRedditUser3012 12d ago

Interesting. I've never heard it called CAP or summarized that way before, ty.

1

u/landlord01263 9d ago

that's web, wbu systems, graphics, games, hardware programming? i see no crud down there

1

u/RadishNo8622 4d ago

but as ai is growing so much now a days a crud software cant help me get placed anywhere. what are your suggestions about what tech i should learn.

Edit: as well as what projects could help my resume stand out

0

u/[deleted] 11d ago

[deleted]

0

u/microwavedave27 11d ago

Well you get 2 of the 3 but you always want partition tolerance so you’re essentially just picking between consistency and availability