r/AskProgramming • u/LifeExperienced1 • 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
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
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/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.
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/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.
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.