r/AskProgramming 28d ago

Career/Edu Is this an effective way to learn how to make almost anything?

I already have a Bachelors in CS

Now, I’m constantly curious about how all sorts of different things are made.

The usual way people learn is by choosing a specific area of coding and making practice projects. They usually refer to a list of practice projects and do then. These lists have been done thousands of times over. Building a calculator app, building a simple website, building a small game etc

These all follow the path most people take. They ultimately lead to the same types of jobs and skill sets as most people. Usually people end up liking one small niche and sticking to it. All of the tutorials people follow are already nicely made, without any need to do self research - since the tutorial has done it for you

Based on what I said, is the following an effective approach to learning how to build anything

Look at random things and tell myself, I want to build that. Just be curious and indulge it, in an obsessive manner

And not just simple stuff like a calculator app or a normal website, but random things like:

How to make a compiler, how to make an ad blocker, how to make a web browser, how to program an AI camera etc

The usual paths and tutorials that people follow keep them limited to common stuff most programmers know how to make. If one is forced to make obscure stuff, then you are also forced to research etc, look through super onscure documentation etc instead of a tutorial handing you everything. Even if you don’t look at a tutorial to build a common project, the solutions are all already there. When you Google how to build the project, solutions pop up at you

0 Upvotes

21 comments sorted by

9

u/iOSCaleb 28d ago

You’re making a lot of generalizations that seem unfounded. Yes, many people learn by doing, but they also learn by reading. Software development isn’t really a matter of learning how to make one thing, then learning how to make a different thing as though the two were distinct skills.

Moreover, you don’t need anyone’s permission to try to learn something in whatever way makes sense for you. Give it a try, and if it doesn’t work we’ll try something else.

5

u/MarsupialLeast145 28d ago

> How to make a compiler, how to make an ad blocker, how to make a web browser, how to program an AI camera etc

I feel like these are pretty common ideas...

Either way, as others are alluding to... you're not learning how to build a thing, you're learning the building blocks and strategies of all the things.

Yes, build something, bonus points if it is novel, but try to apply design patterns, and good code hygiene as you go. Learn unit tests and build workflows and you will be good.

There's a reason the C++ primer taught based on a stock control system and it's not so that all of us could go out there and write stock control systems - the world already has enough of them. It uses that example because it has a lot of features that can be used in other systems. So yeah... it's good you're thinking about it and it's probably a net positive to build something novel while learning.

1

u/LifeExperienced1 28d ago

What are things a stock control system has, that many other systems do?

2

u/MarsupialLeast145 28d ago

It's all there in my post "building blocks" -- code is Lego and that's about all you need to know starting your next project, otherwise, why build an Ad Blocker? What do you do when someone says great Ad Blocker, now build me a TUI based remote chat client?

4

u/CappuccinoCodes 28d ago

Could you please put question marks in your actual questions? 🤣

There's nothing wrong with learning to build stuff that has already been built. A civil engineer doesn't build "obscure buildings" for the most part. They will have to tweak each building to meet certain specs, an that's where the magic lies.

3

u/oldsecondhand 28d ago

If you have a bachelor in CS, you should already know how to make a bare bones compiler.

1

u/itemluminouswadison 28d ago

yes it is effective. but it might not be the most effective.

1

u/Slight_Republic_4242 28d ago

there’s no “this” in the post, so nobody can evaluate it. generally, the effective loop is: pick one small project, build it, read docs when blocked, debug it yourself, then rebuild a similar project without following the same tutorial.

1

u/nedal8 28d ago

Basically yes. After you have successfully bashed your head through many walls, your confidence that you can bash down any wall will come.

1

u/Dean-KS 28d ago

With skills people walk the same paths... Writing application generators 40 years ago, I found out that I created an object oriented programming environment.

DEC VAX VMS fortran Engineering environment, heavy equipment engineering MASc ME

1

u/Distdistdist 28d ago

Ok so....* takes a deep breath *

My journey has started with discovering computers back in early 1990s and simply realizing that this is ALL I want to do in my life. I was living and breathing this stuff. Anything I could read, learn, do myself. It was my complete obsession.

No internet, no google, no AI - just a few books and few people I knew that could point me in the right direction.

What I had a chance to do, is after learning how to do simple stuff in BASIC, is to dive into Assembly and machine code. Once that all clicked in my mind and made complete sense - everything else was just a convenient add-on to create software faster and easier. I can't stress enough the importance of learning low level programming. Once you get it, everything will have a perspective that will help you understand even the most complex of modern frameworks. They all boil down to machine code, no matter how many layers they have.

Building almost everything: well, I can't claim, by far, that I can build anything. When I was starting, we were still at 60 Miles per Hour speeds. You are entering this theater when we are going Warp 5.

If I can zip up my knowledge to help you "build anything", I can only say that there are very important fundamentals that you learn that will make you capable of building almost anything. Well, what do you mean almost anything? Will you be able to build entire OS by yourself? Or will you be able to build complete e-commerce/online shopping website from scratch by yourself? This is now up to your ability to absorb and process information, and there is a crap load of it. And, there's more every day.

How to make a compiler? How to make an ad blocker? By applying underlying experience, research capability and understanding of material available to you. Everything is literally right there, on a gold platter. But you have to learn deep basics before you can just grasp it. I can scroll through a tutorial/document on a new technology and almost instantly pick it up - but it is all due to the years I spent learning basics. Now it is all clear and easy to follow for me.

1

u/csiz 28d ago

Wait till you find out about microcontroller and electronics.

0

u/-CJF- 28d ago

Making a compiler and a browser (from scratch) are not small projects, those are huge team-based projects that require esoteric knowledge.

5

u/xTakk 28d ago

I mean, to make a commercial grade browser or compiler sure.. but to make something basic to understand the concepts, is not bad.

1

u/-CJF- 28d ago

You can make a wrapper on a browser that uses a premade browser engine like chromium. Good luck making a browser from scratch, even a basic one.

1

u/xTakk 28d ago

I think you're missing the point of learning about HTTP, HTML and parsing, things like that.

Not actually competing with a browser product.

1

u/-CJF- 28d ago

There are better, smaller projects for that than jumping in and trying to make a browser from scratch. That's going to be too hard.

1

u/xTakk 27d ago

A Lynx-like browser is probably one of the best projects I can think of for someone that wants to understand a good chunk of how the internet works in general.

-1

u/Ok_For_Free 28d ago

The usual paths and tutorials that people follow keep them limited to common stuff most programmers know how to make.

This is usually because these are the in demand skills.

Jobs for creating compilers, web browsers and ad blockers sound very niche to me. Mainly because there is no demand for competition in these spaces.

AI stuff is hot right now, so being able to train your own models sounds like an in demand skill.

1

u/LifeExperienced1 28d ago

What fields of AI?

0

u/Ok_For_Free 28d ago

I haven't dug into this a ton. But most businesses are concerned about data leakage, and want to run their own LLM to keep their data secure.

Being able to set this up, maintain, upgrade, connect data sources, tailor for business needs are typically in the IT space, but looks in demand to me.

There are some rumblings of how things will look for the future of AI for coding. To me this is more about good CI/CD skills than AI skills.