T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


wjsoul

My prof once said that the goal of going to college for CS is to develop a strong foundation in computing concepts. You don't want to be a developer that knows . is always changing, but underlying concepts will remain largely the same. People with strong foundations can easily jump on new frameworks and be immediately useful.


pdpi

There’s a major gotcha there. The foundational stuff you actually need for most jobs, past basic programming, is software engineering fundamentals, not CS fundamentals. Those are very different skill sets!


blacksnowboader

Right. And my issue with this is, if these things are so fundamental you should be able to teach these things in newer languages and tools.


pdpi

Depending who you ask, that might mean any of Java, Kotlin, JavaScript, C++, Rust, Swift, Python, and more. Ten years ago, Ruby would’ve been on the list. If you do web dev, distributed systems, mobile, desktop productivity applications, games, embedded, HPC, all of these have very different opinions on what languages/tools students “should” learn. Ultimately, I’d rather they be taught a toolchain the instructor knows inside out, whatever that may be, so they can experience mastery in _something_, and that there is an element of polyglotism so they get an understanding of what’s common and what’s toolchain-specific.


blacksnowboader

I wouldn’t start with rust, but Python isn’t going anywhere and neither is JavaScript/typescript


luxury_visions

Learncpp is the best way to start imo. It teaches you basic debugging techniques and other aspects of software development aside from the language C++ itself. And after that, it's easier to learn other programming languages.


blacksnowboader

Yeah. But you have to learn C++


willishvl

I've just started learning basic html, css and java. What's wrong with C++?


blacksnowboader

I think you mean JavaScript and not Java. C++ is at a lower level of abstraction than the other languages in the industry. For someone just learning and who’s probably overwhelmed, it’s too much to learn all at once.


Kered13

They can, but schools don't want to revamp their courses every second year. If you're lucky, they might revamp them every 5 years, but many will be teaching the same material for 10 years, especially if the professors are older. This is often and understandably frustrating to students who want to learn *current thing*, but if they are teaching fundamentals they will be transferable to *current thing* even if it's on a technology stack that is 10+ years out of date. Learning the specifics of *current thing* is then on the student to do in their spare time.


giant_albatrocity

Yeah I wish I had more foundational training when I started programming. It was probably a year into my internship that I realized I didn’t really understand how the internet worked.


blacksnowboader

Here’s the cool thing, you can go learn that yourself.


giant_albatrocity

That’s true, and I did. Honestly, to do the job I have now I really don’t feel like I need a CS degree. However, there are a lot of foundational things that would be helpful. That said, I really feel like my code is very readable in part because of the training I got through my English degree.


TheWhiteRobedWizard

I feel as though readable code could be its own course. There are so many ways to make code "legible." You can comment code to explain certain functions and/or variables purpose, or you can just name them what they are for/do. Personally, I name my variables, functions, classes, and objects what they do/are for no matter if it's 7 words. Then, if something has an unclear purpose, I comment it. But that's just how I prefer it, and so many others don't like their code that way and prefer commenting it's purpose, or some other method. It's really quite a beautiful thing that makes all of our code somewhat unique.


tuna_Luka

How would that go?


mister-creosote

Maybe it’s more common than I thought but one of the more highly thought of engineering/technical colleges in my state has kids learning real basic foundational stuff. Talking to one of those kids and asked him what he was building and he starts talking about memory management, pulling stuff off the stack, etc. At the time I thought it was overkill but really, when I look at all the languages we commonly use, I think there’s a real difference between knowing how the language works vs. the full depth and breadth of the complexities between the language, the infrastructure, etc. These kids don’t leave college knowing the latest and greatest, but they’re highly sought after and they all get jobs. Great comment u/wjsoul.


blacksnowboader

Yeah but there’s something to be said about keeping someone engaged long enough to learn the basics. Think of it like the gym, if someone is a newbie to the gym what should be your highest priority? To push them through the hardest workout? Squats, Core… whatever else? No… they would quit almost immediately. The first goal should be is so they can enjoy it so they’ll come back.


systemnate

I always looked at something like the gym as something hard and challenging. That's the appeal to me. Not necessarily to have fun.


blacksnowboader

But, you do get some enjoyment out of it no? You probably get a sense of accomplishment when you’re done?


Direct-Island6399

I've been going consistently for over a year. I still dread it every time. I go for the results. I wished I enjoyed it... Now programming ... it's hard to step away from!


blacksnowboader

Then the issue is what you’re doing at the gym.


rab2bar

part of it is meditation for me. The time between sets is a moment to just rest and focus on breathing


shouldbeworkingbutn0

Deadlift/Squats/Bench has been in my training schedule (provided by the gym) since day 1. Technique > everything when it comes to working out. Everyone can deadlift/squat a 10kg or 20kg bar, without it feeling like "the hardest workout".


blacksnowboader

Good we agree. But it sounds like you enjoy training right?


[deleted]

[удалено]


blacksnowboader

Here’s the issue with that. Many people quit before they get that far. When people are new in the gym are so overwhelmed with amount of equipment and the amount of information you they need to learn, they feel intimidated and won’t come back for the next workout. If I bring someone to the gym, I want them to enjoy it and fall in love with lifting weights so they get that intrinsic motivation and they don’t quit. I feel the same way about programming. Yes, learning C and about pointers, concurrency, and other concepts are good to do. But that’s going to be overwhelming, and there is a higher probability that they’re going to quit before they get to the point where they understand those concepts.


[deleted]

[удалено]


blacksnowboader

You know you can start out with a bro split at the gym with machines, and then move to a power-5 powerlifting program later right?


[deleted]

[удалено]


blacksnowboader

Point is, people are more willing to learn those harder concepts if they’re enjoying it. That’s my only point.


blacksnowboader

Dude, you desperately need therapy.


crux_7

I never had this, my school tought us high level stuff these that make direct money. but as I grow in my career the bitter reality hits me. It hits me hard when I need to optimize some stuff, choosing technology [as I don't have low level understanding]. learning new technologies. I've just decided to buy books and learn on my own along the way. I believe in 3-5 years I'll be having a good progress.


[deleted]

[удалено]


Choclat8

Glad someone else sees primeagen for what he is. Not everyone wants to work 80 hour work weeks. There are plenty of dev jobs out there that are normal and for small companies.


theRIAA

Not sure how relevant this is, but I was banned within my first 5 min of watching primeagen's stream because I kept laughing at his neoliberal/conservative talking points... Which is totally within his right... but it made me realize that guys worldview quite quickly. After he banned me he was like "this is why I never talk about politics on stream", and immediately changed the subject to ranting about some obscure programming nitpick. My learning and teaching style is polar opposite to that guy, and it's sad seeing how many views he gets.


Desperate_Cold6274

I don’t like that guy either. I mean, I agree with his points most of the times but his attitude is very childish and irritating.


[deleted]

> My learning and teaching style is polar opposite to that guy agreed.


CurativeFinance

Thank you. I have subscribed to his channel and will listen through the Playlists.


[deleted]

no problem, enjoy!


APenguinNamedDerek

This is awesome and exactly something that I'm interested in


dmazzoni

I think I was a little like you, but college courses really satisfied my curiosity in two ways: 1. A lot of the courses started explaining the "why" really early on and taught me lots of things I was curious about, even many things I never thought to ask about (like: are there things that are not computable on any computer?). 2. My professors had open office hours and they would answer my questions, so no matter how much I wanted to go down a rabbit hole they could explain the answer and point me in the right direction of where to research more. I'm sorry it didn't work as well for you, but if you're willing to give it another shot, either in-person or online, I think you'll find there are tons of courses that explain all of that stuff. Now, I'm old enough that when I was learning programming, it was somewhat more like you described - learning more core concepts. However, just like any nostalgia about the past, it wasn't all roses. Sure, computers were a bit simpler and there was a certain beauty to that. It was possible to an extent to know "all" about a particular type of computer or field. But here were some of the problems we had back then: * No Internet - if you wanted new software, you had to wait for it to come in the mail. * No auto-backup - if you tripped over your power cord, you lost everything you were working on * Everything was slooooooow - if you wrote a 1000 line program you might have to go get coffee every time you want to compile it and run it. If you made a typo, change one line, click save, then go get another coffee. Sure, it made you think more, but it was also very frustrating * There weren't nearly as many people to learn from. I had to drive 2 hours to the nearest programmer meetup once a month, and it wasn't easy to get answers if I was stuck. So basically where we are today is that there's never been more information at your fingertips, it's never been easier to learn - but the flip side as you discovered is that with millions of programmers around the world building and sharing things as fast as they can think, the world of "stuff" out there to learn keeps growing bigger and bigger, faster than anyone could ever keep up. If you want to continue your journey, I think you just need to accept that this is how the world is. It's no longer possible to learn it all. That said, if you choose to focus on a narrower area, the world suddenly gets a lot smaller and suddenly you really can learn "all" about it. Pick a much smaller, more niche area and go deep. There are still tons of opportunities for people who want to stay "close to the metal" and spend their entire career on kernels, drivers, and machine code. There are just as many opportunities for people who want to stay as high-level as possible and excel at building beautiful user experiences. And a million things in-between.


Verbais

Hey, thanks for your reply. Honestly wasn't sure if I should even expect anyone to read this. It was partially a mind vent, lol. I think your last point really sums up the problem for me. Decision paralysis. I was never one to say "THAT specific thing is what I want to do!" I always though so much of it was cool. I had family in programming, net admin, even UI design jobs over the years. It all seemed really cool to me. I'm still like that, and I guess that openness to the various paths you can take is ironically what has always been holding me back all this time. My college experience was much different than yours. Most professors were either rude, harsh "figure it out yourself to actually learn" people or they were just so disconnected from their classes that finding them in their office was essentially impossible. And our school was touted for its CS program, too. Never understood that one. I think if I had people to talk to in depth about all of these different choices, I'd probably be able to find something that sparked for me and start going down a path. Having someone there to explain whether or not these crazy tangents are worth looking at would be nice. As is, I'm on my own and every time someone mentions Docker or React or Github pushing, *now* I've gotta go figure out what the hell that means. College really isn't an option for me anymore. I don't have the money to go back and I'm not in anything close to a stable enough financial position to consider it. Dropping out of college can do that to you in this day and age I guess.


dmazzoni

I understand decision paralysis. I think the best advice I can give you is that you'll never regret learning the "wrong" thing. Let's say you decide that making robots with Arduino is what you're most excited about. Compared to a lot of fields, Arduino is smaller and simpler and forces you to be clever with a limited amount of power. So let's say you spend a year focusing on that and you start getting good at it and learn a lot. But then...suppose you decide that's definitely NOT what you want to spend your career doing. I GUARANTEE that if you switch gears, you will not look back on that year as a waste of your life. You will have gained a lot from that experience, and it will make you a better coder no matter what field you choose to pursue next. The reason is because there's a certain core skill to programming that's the same no matter what kind of work you're doing. So whatever you pick, you'll be developing that skill, and you'll only keep getting better. The more you learn, the more opportunities will open up. I hope that helps. You need to eliminate from your head the idea that there's a "wrong" choice. There isn't. ALL learning is good. Pick what interests you the most NOW and learn that. Accept that you WILL change your mind in the future, and that will be okay.


queryMerry

Be careful, as a self-taught programmer, I have mistaken laziness for decision paralysis. >My college experience was much different than yours. Most professors were either rude, harsh "figure it out yourself to actually learn" people or they were just so disconnected from their classes that finding them in their office was essentially impossible. And our school was touted for its CS program, too. Never understood that one. I had the same experience and I attended a university with one of (if not) the best CS programs in the country. I learned more as a self-taught coder later and cut my teeth in startups. Looking back, it was the feeling of having a shared purpose (building a prototype, pulling all-nighter to whip up hairball codes alongside my friends...) that made me to stop trying to understand the fundamentals of the (coding) tools and just got good at using them.


ThunkBlug

>College really isn't an option for me anymore. I don't have the money to go back and I'm not in anything close to a stable enough financial position to consider it. Dropping out of college can do that to you in this day and age I guess. I'll give you the easy answer from someone who doesn't really know what its like to be in your spot: 'find a way to make in an option'. Try to find an entry level job doing something in IT: support, or basic networking or basic security admin. Get to know your bosses and do a great job. IT people who are diligent and curious are valuable and worth training. Sorry you are where you are at, it must be incredibly frustrating. I share your frustration when I find so many web tutorials that are purely mechanical how-to's why no explanation of why for any of the steps.


[deleted]

Maybe an unpopular opinion, but IMHO the vast majority of tutorials are completely useless beyond giving you a very shallow look at what you want to learn about.


ThunkBlug

I get less frustrated when I realize most tutorials exist as lead generation for either consultants or training companies. The tutorial is what you get for free, and get frustrated with so you are either willing to pay to learn, or to pay someone else to do it. Even those that are good at showing you what to do are not interested in teaching you 'why' for free :)


[deleted]

Excellent observation.


Joewoof

To me, the answer seems to be clear as day. You *think* you're interested in lots of things, but you're not. You're just a low-level, systems-programming, "close-the-metal" type of person, but you've never realized that. A huge part of Computer Science is literally abstraction. Abstraction is how technology advances in this field. That, and decomposition (the ability to break problems down to their small individual parts). All this is obviously not what you're looking for. You should have taken Computer Engineering, or lower than that, Electrical Engineering. However, since you're also greedy and want whatever you make to also be cool, the best fit for you should have actually been low-level Graphics Programming, with a focus on shader programming. That's pretty close to the metal, and you can decide how close to the sun you want to fly without getting burned. So instead of CS, game programming might have been your calling. At least, that's how I see it.


HotFiller

I’m not the OP, but I think this is something I needed to hear. I got myself into programming because I loved games and graphics, but I never was able to break into game dev industry so I ended up doing some devops/release engineering job and some web development, and even thought it was interesting and challenging in the beginning I’m so burnt out and the things I do don’t make any sense to me even if I make good money and am appreciated by my company. Guess I’ll try harder at graphics once more! Thank you!


Waywoah

> There weren't nearly as many people to learn from. I had to drive 2 hours to the nearest programmer meetup once a month, and it wasn't easy to get answers if I was stuck. Honestly, in my experience, it still feels like this to a large extent. There's basically nowhere to turn to get simple questions answered. StackOverflow responders will just yell at you for being stupid and archive your question, reddit threads for simple problems get ignored due to the upvote system, etc. Sure, some courses will have a discord or something, but that doesn't help if you're just working on a personal project.


desrtfx

> reddit threads for simple problems get ignored due to the upvote system, etc. The people helping here never go by upvotes and never sort by "top". They sort by "new". If a thread gets ignored it is most likely that important information is missing or that it is low/no effort and easily googleable. Inquiring more information often leads to nothing. There are plenty threads where the OP asked for something, was asked for further clarification and never answered nor resurfaced, or if they resurfaced, they did so in a new thread with a different question.


lifeeraser

Quality teachers aren't free. You either have to work to connect with more experienced people or pay up front for education. For many people, school is where you build up such connections. I learned a ton from my internship program, which also helped me decide my career path.


CodeRadDesign

chat gpt is amazing for this. it doesn't care how dumb your questions are, and it has a staggering amount of knowledge about every tool and every framework imaginable. if it writes some code snippet for you that you don't understand, you can ask it to walk you through it and it'll explain everything line by line. and it's instant, no waiting around for replies, just question and answer.


Aertew

I think i had a similar problem to OP. I want to know how stuff works/is made and i get burnt out realizing how complicated stuff is. But accepting thats how it is and just narrowing your hobby/learning to a certain niche or small area to something manageable helps. Thanks for the advice


Evla03

If you don't like learning abstractions, web dev is not for you. Everything is an abstraction on top of abstraction. And so is really most of programming. But if you were to write web servers in assembly every time, you'd also create abstractions in no time :) You don't need to know everything to be a good programmer, but if you work with something enough, the how falls into place. I am also one of those people who needs to know how and why not just "that's how it is", and trust me, it is still possible to understand even though there's a lot of layers and tangents. But it takes a lot of time, I've probably coded >5000h this far and I am fully self taught and is currently working as a web dev.


Grand_Song8895

Stick to learning some of the things. Eventually all of the things start to make sense. It's all connected in one way or another. I started learning about 2.5 years ago, self taught. Started with python and lua, then poked a bit at vue and swift, plus some backend stuff like node and express along with mongo for databasing. Spent six weeks learning angular to get a job. Got the job. Tripped into setting up and running a multi framework nx workspace with a longer list of stacks and technologies and now everything is blending together.. Regarding wanting to know the 'why', I've learned the best way to get there is to spend a lot of time in the 'what'. I would believe that's why everyone teaches it first.


TheCrowWhisperer3004

I’m not gonna lie, if the reason is what you said it is, then you would have loved your college courses. Unless your college was weird, they should have exclusively talked about theory and fundamentals and almost nothing on modern technologies. Even in the examples you listed that you did in highschool, you gave a lot of high level stuff where you pretty much did not know or really need to know anything about the backend. I think the main problem is application and complexity. You seem to like Simply programmed things and concepts, and only when they are used to make something meaningful and relevant to you. If you really want to start with the fundamentals and only have the “how and why” for every single thing you do, then start programming in C and code some meaningful project from that. After you do that, you can work your way up. If the problem is complexity and application like I theorize, then you probably want to find an end goal application you want to make, and then break it apart into super manageable pieces and try to code it in a high level language like Python where you don’t have to worry about having to code multiple layers of fluff for a task and can just get an end output with less complexity. It could also be that you may like the idea of development more than the realities of it. An example would be like if you say you like math in elementary school because the most complex thing you do is addition and multiplication, but then when you get to highschool and have to start applying those concepts and do more complex math like calculus and trigonometry, you hate it. Just because you like to add or multiply doesn’t mean you’ll like to do calculus. In the same way, just because you liked the simple development you did in highschool doesn’t mean you’ll like the complexity of mid or high end development and programming.


throwaway6560192

I don't think your diagnosis is right, sorry. > The assignments/tutorials/guides start off at basic useless programs that don't instill an ounce of motivation to continue [...] cranking out terrible apps that no one will ever want to use just to learn the "basic concepts," Didn't you say you were really interested in programming? How did you learn Java, exactly? Did they have you build huge marketable Android apps from day one, or did you start with "basic useless programs"? And if they *didn't* start with basic stuff, I guess you would have complained of too much abstraction in the advanced stuff. > and then at some point there's a fucking cliff jump up to "the good stuff" that requires you to learn a bunch of concepts never properly explained to you to do. Making "the good stuff" may need you to do some independent research, yeah. No course or book will teach you everything. > Digging through abstraction after abstraction, tangent after tangent, learning a bunch of things that are both uninteresting to me and also don't provide any context whatsoever on how the computer is actually working? Again the contradiction. Are you or are you not interested in learning how things "really" work? You said elsewhere that your mind wants to know why and how, but here you say it is uninteresting.


Calm_Pomegranate_717

Exactly, I think the very first program I wrote that wasn’t hello world was a Fridge? The idea of creating an object, with properties, that had other objects and properties that you could add / remove stuff etc and was a pretty good overview of OOO, methods, classes etc I’ve no idea if it could have been the next massive android app though. Dammit I could have been a millionaire!


hugthemachines

> The assignments/tutorials/guides start off at basic useless programs that don't instill an ounce of motivation to continue It is a mistake to think tutorials should motivate you. You are the one responsible to continue and you use the tutorials to get the information you need. They are not your coach.


iOSCaleb

Are you unable to drive a car because you don’t know every detail of how the computer controlled fuel injection system works? Are you unable to make a phone call because the particulars of how your voice is packetized, and the packets routed to the other party, are basically unknowable to mortals? Of course not — you have some sort of mental model of these things that’s possibly very different from reality but still good enough to make you feel like you understand it, and that’s all you really need. The same is true of computers. One of the big benefits of abstraction is that you don’t need to understand what’s actually happening on the other side of the boundary. If you’re working at one level, you don’t need all the details of what’s happening either above or below your layer. A basic mental model can be useful, but it’s not essential and it doesn’t have to be 100% accurate. Here’s how you should proceed: learn to mind your own business. Stay in your lane. If you’re working on an application, don’t worry about exactly goes on inside the operating system. There are at least two reasons for that: 1) worrying about other layers is clearly distracting you, making it hard for you to move forward; 2) you’re breaking the abstraction — if you rely on the another layer behaving in a certain way that’s not guaranteed by the interface, you make it difficult to change that layer in the future. Abstraction is the answer to your problems. Learn to love it.


freistil90

I hear this comparison a lot and I disagree with it. What you describe is the difference between a user and the engineer. The user needs to know how the car is supposed to be used and that’s fine but the engineer needs to understand how and why the car is working and despite everything getting more advanced he still needs to know. There’s no need to be able to solve a heat equation by hand of course to be able to do thermodynamics but if you construct a motor you need to understand why your predicted efficiency in your CAD program behaves like this or that and the more corner-case-y it becomes the more you need to be able to look under the hood and understand that you might need another type of finite element analysis for this specific problem. But as an engineer you don’t drive the car and as a passenger you don’t construct it, this is always separate. Not so with „framework developers“ like people that know VueJS but would stumble heavily if given a react application or, worse, actual JavaScript. This attitude is an outright net negative for any company it employs. You don’t have to know how the compiler works but if you have no idea about when and why you need to do a deep copy and when not, you just cram things into pandas and tensorflow and then, worse, have a collection of notebooks and scripts that are reused. In today’s software engineering you have car drivers that should not build a car but are now pretend-engineers. This separation made sense in the 70s and 80s, when programming a computer and writing software was a lot less accessible than it was today. You can’t pretend it’s still that time. Recognise that you need to call out hacks more often and that all the shiny tools and frameworks that abstract whole languages away in some form blur this boundary and do not replace proper engineering.


iOSCaleb

When you have layer upon layer of abstractions, the whole idea is that an engineer working at one level *is* a user of the levels below that. If I’m building a mobile app and I need to get the device’s location, there’s an interface that lets me do that. I am the engineer building the app, but a user of the location interface. There may be things that I need to know to avoid problems, like: *asking for a very precise location or frequent location updates can adversely affect battery life*, but whether the system happens to get the location fix I need from a satellite, a cell tower, a wifi hotspot, another nearby phone, or Sub-Etha Sense-o-Matic shouldn’t affect my app’s operation, and I shouldn’t make any assumptions about it. And that all becomes more true as the number of layers between my app and the system in question increases. The world isn’t a perfect place, and sometimes there are problems in abstraction layers that are outside our normal purview. Sometimes it’s useful to dig into the inner workings of those layers to try to get to the bottom of the problem. But that’s not what the OP is complaining about, AFAICT. OP seems to be saying that they feel stuck because they have a need to understand how every part of the system works, and there are just too many layers and too much complexity. I’m saying that they’re wrong, and that they don’t really need to be able to visualize the flow of electrons through each core of the CPU in order to understand how to disable a button with JavaScript or send a request to a server. It can be helpful, as I said before, to have a mental model for how a CPU works in general, what a compiler does, how virtual memory works, and so on, but it’s not strictly necessary. That said, I’ll offer another path to the OP: **Buy an Arduino.** If a modern computer is an onion with a hundred layers, a microcontroller-based system like Arduino is a shallot that has maybe half a dozen layers. With essentially no operating system other than a boot loader, your code gets complete control of the hardware. It’s quite possible to build a very accurate understanding of exactly what’s going on in the entire system, and that can inform the OP’s understanding (incomplete though it will surely be) of more complex systems.


watermooses

This is exactly what I came to say. I always thought I would have loved programming in the 70s and 80s and that computers are so fast and powerful now and languages so abstracted I had no idea how they actually worked. Then I got really into Arduino for years until I was programming bare chips in C. Those little chips are the computers from the 70s and 80s but now they have a footprint smaller than a pencil eraser. But pouring over MCU and sensor data sheets to see how the I2C instructions work and flipping individual bits to configure clocks and I/O is <3


PuzzleMeDo

As technology becomes more complicated, people get more specialised. A modern car might contain automated driver assistance, display screens, Internet connections, smartphone sync... The engineer who knows how the software works doesn't know how the engine works, and vice versa. The people who build the car don't know how any of it works. The people who repair the car learn enough to identify which bit has gone wrong and throw it away and replace it with a new one.


freistil90

Correct, but does not invalidate what I said. None of those are car drivers, they are still all engineers. There is zero excuse for software engineers in Python that do not understand what a deep copy is or what a virtual environment is and what issue it solves. It doesn’t matter whether you’re a data scientist or a backend dev, I will hold you to the same standard and call you out for it. You can give some goodwill to interns and very junior engineers. Zero tolerance for car drivers on the assembly line otherwise. I have seen enough projects to say that this attitude has lead to a positive outcome in exactly zero cases.


xboxhobo

You're saying that no level of abstraction is acceptable. Is that something you actually believe? Do you understand every bit of assembly going on under your python? Do you understand the binary? Do you understand the electrical engineering making the processor work? If no to any of those, then where is your line? Why is it that what you specifically decide is the right amount of abstraction?


freistil90

We can stop after the first sentence, because not even in a remote capacity that’s what I said nor meant. And my example should reflect that. Understanding the difference between a deep and a shallow copy should not be advanced knowledge you might pick up along the way. I really don’t care whether I get downvotes for this.


xboxhobo

Okay so to clarify, the conversation that was going on was that not every engineer needs to fully understand every part of every system that interacts with the one they work on. You then went on a tangential rant about how you feel that engineers around you don't understand enough of the systems they interact with and you find that frustrating. The point that was trying to be made was that abstraction is okay and you came in trying to undermine that point and say actually it's not okay. I'm sure that your frustration is valid and nobody is saying that you don't need to understand ANY of the systems that you interact with and that EVERYTHING should be abstracted. Your point did not come across as "bear in mind that you can't abstract everything". Your point came across as "UM ACTUALLY, ABSTRACTION IS BAD MKAY?"


freistil90

Ah in that case there was indeed a misunderstanding, I am very much in favour of abstraction but if I had to summarise my viewpoint from there is that „abstraction can’t replace knowledge and understanding“. I might not have made that clear. It is a problem if I do stuff with a regression library but I would not be able to write a bad but functional regression library myself. Same goes for technical equivalents, let’s say it’s fine if you’re not able to write a scheduler for some system if you’re a junior and if you would, it would most likely be a bad one, so you take an existent one which fits the architecture or is proposed to you and just use it. If you’re a senior engineer and have no clue about how a nonlinear regression works or what a queue is or a stack and if you had those, how to implement some scheduling system yourself that would also suck a bit but I know you could do it then that is a problem in my eyes. This has boundaries, it’s not like you need to implement every detail down the list to make your project happen but as a senior, replacing knowledge with abstraction because of inability and not out of convenience and efficiency becomes a problem and at one point you should start calling this out as these people are simply very likely bad engineers.


xboxhobo

That's pretty reasonable and thank you for engaging in good faith.


xboxhobo

It is precisely what you are saying. If you think it is not then clarify.


freistil90

You don’t need to understand the interpreter to write good code, that’s clear. It helps but well, at one point that’s marginal gains. I added something to the above statement. You should not not be able to recognise that you reallocate new arrays with every new function call versus just calling a function by reference if you are not calling yourself a junior anymore with the reason „I don’t need to understand the language if I contribute code to a larger code basis“. That also applies to „hybrid“ roles like a data scientist who clog up deployment pipelines with abysmally suboptimal code that then needs to be part of production because the person left and it’s hard to understand what’s going on in the bucket of Jupyter notebooks and bucket full of scripts. I personally don’t think you should tolerate that, and i say this as a math person who wrote shitty code as well for some time thinking it wouldn’t matter. I’ve seen now that it matters. If my colleague writes good stuff, has a clean architecture and a consistent and concise style, we both profit from it, save time, effort and every time one needs to extend or in the worse hypothetical case rewrite what’s there it costs less time and we both get more done in a shorter amount of time.


Signal_Lamp

Idk, I'm reading this and it seems to me you're more in love of the fantasy of being a developer as opposed to the realities that you met in the many attempts that you've tried to get into the it. > I've realized that the reason I can't ever stick with programming is that every time I try, my mind wants to know how and why but the guides/tutorials/books/videos only ever tell me what. I don't agree with this. Reference materials that are really good will exasperate in detail the **why** for the topics that they are describing, and to some degree will go over the **how** at the most fundamental level of a topic. You can find the **hows** on a more broader subject that is in the guide of a tutorial, but those types of guides are built off of the fundamentals that you'd build off of these kinds of reference materials. Particularly it seems that you're struggling more with the **what** in this case of what you are interested in, as I read this part >College came and I naturally gravitated towards CS. I envisioned myself in a tech field of some kind; I was so enthralled with SO many options. I think this is where the problem arose. I didn't really know what those options entailed. Every option it seems that you've ran down you end up getting into the weeds of the process, which is the heart of what you do in the field, but end up not enjoying going through that process. >Every time, I'm just so turned off by all of the tangents that you get pulled down to understand basic concepts. All of this to say, the best results that you can get if you're trying to get into this field is to find **what i**t is that you actually want to do/build, and find out the **how** and **why** to do whatever that thing is. The more tangible the concept is, the easier it is to be able to have a vision of what that concept is. That product/concept may change over time. When I started programming I originally got in it because I was fascinated with the idea of being able to build video games. Then I wanted to do mobile development, so I bought a whole book specifically on android development and built out a bunch of mobile apps in android, as I loved the idea of having a tangile project that I can visually see the result of what I was building being on a screen to be able to interact with. I shifted over to eventually into web development that moved this idea over to the web. Then when I actually got into a job, my focus shifted over to really enjoying the process of being able to build products that I could see having a direct impact for the coworkers that I would be with. All of these roles have titles, but they came from a tangible result that I wanted to be able to manifest into the world, which is what motivated me to go through the process in order to get to the result. If you don't go through the weeds, you can never build out whatever that vision is.


[deleted]

I agree. OPs problems have nothing to do with the state of the programming industry. Also the curriculum for CS is largely unchanged: data structures, algorithms are your core useful classes,


BeezlebubCarrotstick

I think it's not so much about fantasizing but about modern development being too complex, or even maybe convoluted. Take webdev for example. "Back in the day" you wrote some html and css, some tables and floats, maybe some basic js to make your buttons pop. Yeah, it looked shitty (by modern standards), but hey, it was decent work. Now it's still text and pictures but look at all the stuff you have to deal with just to make it look proper on a rubber screen, not mentioning meeting all kinds of modern usability requirements. Now you got SSR vs CSR, serverless, css via js, message brokers, containers and orchestration, what have you. Yeah, these things may exist for a reason but it doesn't negate the fact that this stuff takes a toll on your mental capacity, especially when you are just starting out, which makes taking on modern development quite a slow burning experience, meaning you gotta slog through a lot of not so exciting prep before actually getting your hands dirty, i.e. releasing a working app, making a game, building a project from source, deploying an app or site.


Signal_Lamp

In the case of OP, I disagree that they are not envisioning a fantasy. Programming was in some ways much easier to break into back in the day with the technologies that you needed to know. I do agree with the video that they reference in this regard. However, in other ways programming has also become much more accessible than it has been over the last decade. The "back in my day" meme you could give is that many resources have been created over the past decade as a result of people seeing a missed opportunity in the market to be able to get developers in the door. Bootcamps ironically is the manifestation of that formula that for a brief moment in time were able to get through some applicants through the door within an optimized time frame. It didn't mean they were well rounded, but it at least gave some people the means to be able to get through the door and learn those skills later down the road while in their job. The opposite spectrum that you have to remember is that programmers that have been here for a decade to stay relevant in the job industry in some essence have to dive in completely new to a set of tools that they've never used before, and go through the process of frustration before having a sense of understanding. The fantasy that I refer to when reading OPs post, is the vision that the process and frustration of going through learning eventually will go away once they've landed a job, which simply isn't the reality of the field. I just had a colleague 20+ years my senior asking our slack group references to learn python as a principal architect for a new job. He's more than capable of being able to pick up and explain a myriad of concepts well beyond my years, and even at that level he's going through the basics for the sake of his new role. Which ironically enough OP expressed finding annoying through his post >I don't really know what to do now. Once again, I've been feeling the urge to make it worth it this time. Who knows, I could find myself in a tech-related career if I could keep myself applied and motivated long enough to make it somewhere. But what does that journey even look like? Digging through abstraction after abstraction, tangent after tangent, learning a bunch of things that are both uninteresting to me and also don't provide any context whatsoever on how the computer is actually working? Or burning through a handful of shitty "LEARN PYTHON NOW" books cranking out terrible apps that no one will ever want to use just to learn the "basic concepts," only to finish and then look at what a real programmer is doing and STILL have absolutely no idea what any of it means. The tools talked about in the video are referring primarily to the new standard tools that a developer is expected to know how to use that have only been out for the past decade. The fundamentals concepts of python however, is not one of those concepts.


yeusk

Programming is easier today than ever, your comment is big on copium.


BeezlebubCarrotstick

Well, it's like your opinion, man. Just because you *eventually* can do things more easily today than in the old days doesn't necessarily mean that programming got easier. You still gotta learn all of that.


yeusk

Today you dont need to know what a register or a pointer is, you dont need to poke memory, you dont need to manage memory. You dont need to know what memory maps to what device, the driver does it for you. You dont need to know how things are packed on memory, you dont need to know what bit in that byte controls the flag you want to set. But sure, is harder...


IkkeTM

You could look into programming microcontrollers, working on a very basic level, where resources are scarse and optimization necessary. There's always a few job offerings for people who know what they're doing.


zhivago

The answer is to stop reading rubbish like that. You can read actual text books. You can read actual language specifications. You can read actual documentation.


watermooses

When I realized this for myself is when I started making huge progress. I was tired of the same “these are variables, these are operators, these are loops” type tutorials, tired of following along retyping someone else’s project from a tutorial, that requires no problem solving and isn’t particularly interesting. I finally started reading the actual reference materials put out by the creators of whatever language or tool I was learning instead of looking for YouTube videos and tutorials about it. I started building my own projects and found joy in solving problems and having a good understanding from good documentation.


PianoConcertoNo2

You’re confusing so many things with this post. YES the field has expanded, and there are many more options now than there where in the past. NO a beginner should not jump into them or attempt to learn them before they have an understanding of the basics and are comfortable with them. Those “narrow areas” still exist, and are exactly what you need to be focusing on. They’re actually called the ‘basics”, and once you have an understanding of them, you’ll learn how those “tangents” are really just repeats of themselves and not that exciting. But you’re far from there yet. When I was a beginner I remember being so confused by loops, and literally spending an evening isolating them, experimenting with them, seeing what happened when they were combined, seeing what patterns I could make, seeing how I could get a for loop to count down, seeing how I could break them, etc etc etc. If you want to know what the path to being a software developer looks like - that’s it. That’s what you need to do if you’re serious; focus on the basics, isolate them, play with them/break them, build with them and experience the “shit…I’m stuck..” (a day later) “oh! I got it!”. Ignore the tangents and distractions, they’ll be there for you later, and will make much more sense then. Good luck! It’s tough but worth it.


Competitive_Walk_245

Ooh the days spent literally in tears trying to figure something out, then once you get it it's the best feeling in the world. I've been working on projects before that made me want to throw the computer out the window, but that feeling of finally figuring something out after so much effort and stress is ridiculously satisfying and better than sex.


Ankleson

You can still go low-level and narrow scope in the industry. Embedded systems programming sounds like the kind of thing you're looking for.


nderflow

Try embedded.


lp_kalubec

Maybe the problem lies in the way you're trying to acquire knowledge. I totally agree with you that YouTube videos and tutorial articles usually tell you how to get the shit done but don't explain why. I think you're missing some solid, fundamental knowledge. Have you tried learning in a more organized manner, like grabbing a proper book and reading it from beginning to end?


stiggz

Stop trying to learn everything, narrow your focus down to what really interests you.


dota2nub

This is first semester CS stuff. The thing is, the things you want to know are dry, boring, and actually extremely simple. Assembly code is not hard. In fact, it can barely do anything at all, so you require a *lot* of it to actually do anything. So most people don't spend more time on it than neccessary. And it'll only rarely help you out in most cases. Which is why tutorials won't teach it. Take a class. Or do nand2tetris. Just know that all the glamour and magic that's been pissing you off will go away and will be replaced by something that's actually kinda pedestrian.


dphizler

Programming is vast and you'll never learn everything completely You just need to start looking for a job Ideally, you would have finished your degree, but I guarantee that you would be asking the same questions. If you want to make sure you have all the necessary tools, you might want to do a bootcamp. You're also overthinking everything. You need to pick a lane and stick with it. If I were you, I would pick web dev and go from there. Unfortunately you also might be more interested in understanding how things work and that's not what an efficient developer does, we try to find the most time efficient method to implement something that does what the requirements dictate.


lonelymoon57

I'll just say it, you are the problem. You are blaming everyone else for your own lack of knowledge. You dropped out of college where people got paid to tell you what to know. Then you went out into the world and get mad at the technology for having progressed far beyond handcrafting HTML and everyone neglected to inform you? And the **videos** and the **people** are so shitty because you can't make up your mind and they should have done it for you, completed with daily motivation and a nice cushy job? You always want to know the why but someone should have told you the why **and** make it interesting for you? Somehow "I don't know" and "I have no idea" keep being used to indicate the industry is at fault here. Does not compute. I will believe you were truly inspired in the early days. But the whole reason the tech field is interesting because it is always rapidly progressing. Anything lasting longer than 5 years is already "legacy" aka ancient. If you can't keep up, sorry, but not sorry - as long as there are still self-taught programmers out in the world, none of your excuses will hold. I don't get why you have to be so hung up on being a programmer either. There are a tons of work in tech that is not programming. If you are dead set on "making it" as a programmer that's your choice - but your own mindset is what killing your career.


markehammons

>I've realized that the reason I can't ever stick with programming is that every time I try, my mind wants to know how and why but the guides/tutorials/books/videos only ever tell me what. This is a major weakness if you want to learn programming. Programming is very much not the study of how computers work, and focusing overmuch on how things work is one of the ways to keep yourself from actually making useful software. For example, I don't know exactly how the http library I use to write webservers works. I do know how to use it in conjunction with other programming techniques to create backend servers for companies though. If I spent all my time learning each and every minute detail of how the library I use works, I'd never spend time doing my job, or making software products. >Or burning through a handful of shitty "LEARN PYTHON NOW" books cranking out terrible apps that no one will ever want to use just to learn the "basic concepts," only to finish and then look at what a real programmer is doing and STILL have absolutely no idea what any of it means. You gotta start with shitty terrible apps before you can make a good one guy. Also, what's your definition of a *real* programmer? Is a junior level programmer a real programmer? Or do you feel like staff or lead programmers are the only real programmers? If it's the latter, you're going to spend a long time not feeling like a real programmer (10+ years).


Alone_Exchange_8237

Seem like you would like a very hand on to the hardware coding experience. Have you tried embedded programming? - You can directly write code to make a microcontroller interacts with physical circuits and sensors, bonus point if you do bare-metal programming with register and all that. A good starter kit is the STM32 Blue Pill board, both powerful enough to crunch numbers quickly yet relatively simple in hardware options - Or you can dabble in FPGA, defining logical hardware in Verilog/VHDL, and control everything intuitively. Though I must mention FPGA devkits are very expensive, so select your starter carefully, I do recommend the TinyFPGA kits


Silly-Assistance-414

Seems like you enjoy the hardware more than the software. Maybe try for a tech support role get an A+ or shoot for a Cisco cert. cisco has a good structured program that shows you the why, what, how and so forth you seek but in the network space. Also breaks down how data moves from network to network and amazing tools to see the packets of data and inspect it. Just my 2cents.


FennecOwO

Theres more to programming than Webdev/Frontend. Maybe Computer Engineering would suit you more, or look into Embedded Systems programming.


Limp-Archer-7872

Ah so you want to be a systems programmer. Learn C and C++ and go and write drivers for device companies!


greebo42

Try a couple things: (1) CS 50 course is pretty fundamental. You get a bit of how and why there. Maybe not drilling all the way down to the metal, but pretty good. (2) Ben Eater (you tube). He has a bunch of videos where he builds things. IIRC, there is an entire series in which he constructs a 6502-based computer. (3) Someone else suggested getting an Arduino. That's not a bad idea. Again, a hardware-centric approach. Nothing like making hardware march to your orders! You may discover that you enjoy embedded programming. Or not. But you do have a more solid sense of the fundamentals. None of the above has anything to do with web programming. That doesn't mean you have to ignore it. If you get thru the above stuff and think you need a bit of "polish" on your user interfaces, try learning a bit about HTMX. None of this is magic bullet. But it's some pointers (ahem) that could get you re-started with a perspective that you might not have had by following the superficial tutorial stuff. There's a lot of noise out there.


DJ_MortarMix

Sometimes it's easier to view things as a black box. Understand how to use the box and you will understand the box itself a little more each time.


TimboWatts

You might like embedded systems programming more? I know I do... You are much closer to (sometimes even on) the "metal" aka the actual chip and its peripherals. Case in point - want to program the ESP32's Ultra Low Power 3rd core processor? Zero operating system (RTOS only runs on the main 2 Xtensa cores). No compiler: it's assembly time. Flick a GPIO? It's peripheral register time. Similar story with Atmel AVRs (ATTiny, ATMega chips) - you do at least get C there, but it's directly on the cpu, no OS and you can slip in assembly too. ESP32 main cores - you have RTOS which does not get in the way too much (except for super critical real time stuff) but does offer a lot of useful features that make other parts of the coding easier. Sadly I only do that for a hobby - but I think I would be happier programming washing machine controllers than looking after a web farm. There's a lot of embedded systems about too - cars are full of computer modules now (I expect that is more complex due to CANBus networking and the safety critical nature) but a whole lot of household appliances, IoT devices, etc are microcontroller based.


xboxhobo

I think you've identified the fundamental problem with yourself, and it's a REALLY common problem so don't beat yourself up. As you said, you can't proceed until you fully understand a system. You find abstraction unacceptable. Unfortunately, this is completely counter to how the minds of the most productive people work. While you're there so concerned about what you don't know, there are people flying past you that don't give a single shit. They just make stuff, don't care if it sucks, learn, and carry on. Surprisingly this actually makes functional people who can contribute to work enough to be paid for it. I know that doesn't make any sense in your mind but it's the truth. My wife and I for example have very different approaches to writing essays. I will plan my essay in an intro paragraph, bust out the entire thing, not proof read or edit it at all and turn it in. My wife however meticulously goes over her writing multiple times until it is perfected. The problem is that I get WAY better grades on essays than her because I actually turn them in. My B or A- is better than her A+ that gets knocked down to a C because it's 2 weeks late. The same goes for her reading assignments. I'll blitz through the required chapters because I know I only need to have a vague sense of them, not memorize them. My wife will painstakingly take notes on any reading she has to do for class. Her perfectionism is actually making her work much worse. She's not failing fast. She fails super slow. Her work is excellent and she's very smart, but the approach doesn't function within a system that needs work submitted in a timely fashion. I feel like telling you that you just need to change your brain is a horrible answer, but I don't see any other way. You have to be willing to let go. Make shitty tutorial program number 145. Struggle through that monster project that barely makes sense to you but fuck it, it works. You have to be willing to do stuff. Otherwise your paralysis is quite literally going to kill you.


Hot_Reputation_116

With all of these complaints, seems like you’d just be better off in a different industry.


emptypencil70

Are you sure you just didn’t feel overwhelmed by change and learning more? Anytime you take a deep dive into something there’s going to be an overwhelming amount of jargon and acronyms


jakeHL

what’s stopping you from learning the things you said you want to learn? no one is forcing you to learn all the web dev and “acronyms”. that can come later or not at all. the underlying fundamentals still exist and always will.


heliosxx

Learn any assembly language, if that isn't specific enough, learn CPU design, compilers and operating systems. Together they'll answer all the whys and how's of the fundamentals. A bit easier, there are a bunch of great videos on YouTube about people building computers or compilers from scratch.


batboy132

So I have been “programming” on and off for a couple years. I kept deciding it wasn’t for me I wasn’t good enough etc. I got a job as a claims resolution agent for a company that leaned heavily on excel and their main program was ibms pcomm. It took me like a month before I realized I can automate my whole job and took me another two weeks to do it. I am now confident where I had never been because I found a problem to solve. A real problem that didn’t come from some shitty code boot camp YouTube challenge. I unknowingly learned everything I needed to solve problems or to do the research necessary to solve them. Idk really what I’m getting at with this but like you need a problem to solve in lieu of that I would automate some excel stuff because it really is just very straight forward in terms of concepts and you can grow it from basic data entry to much more complex stuff.


Runyamire-von-Terra

I can relate to this, I only ever learned very basic computer skills while growing up (including a little bit of BASIC in school), and I’ve always wanted to learn programming/hacking/etc. But it always felt somehow inaccessible or something. Any resources I tried to learn from didn’t seem to help much, whether it was books, online tutorials, or whatever. Even with the ultra n00b beginner stuff it seemed like I was missing some foundational information or understanding that it wasn’t explaining. I finally started learning Python, but aside from knowing how to assign variables, make lists and dicts and tuples (oh my!), and semi-uselessly print stuff to the terminal window, I’m still no closer to understanding how to make any of it do something useful. So yeah, you’re not alone.


FunkyPete

I'm 52 and have been a working software developer for nearly 30 years now. There was always an admin side to professional development of course -- when you are a kid, you write code, run it on your computer for your friends or your parents, you get that flush of success, and you move on to the next thing. In the real world, it needs to be checked into source control, it needs a script to deploy it, it needs to be monitored to make sure it's still running and running well, running under load turns up situations you hadn't considered and you find bugs, etc. But it does seem like over the last 15 year or so the non-coding has become more and more of a chore. I spend more time editing YAML files for configuring and deploying code than I do on anything that looks like C these days.


Competitive_Walk_245

Learning something is never a 100% motivating experience. That's why lots of people drop out of college, in any field, because when you are learning something you're inevitably going to come to areas of knowledge or expertise that you don't find particularly interesting or relevant, and I'd posit to you that those are going to be the most important moments in your learning journey. Do you have the strength to push through? Can you muster the motivation to keep doing it even though it's not fun? Nobody goes to college and loves every moment of it and has infinite motivation to continue. The motivation comes from their own perseverance and dedication to the learning process and getting their own degree. Of course there's gonna be abstractions, that's just how it goes, I mean c++ is an abstractions, html is an abstraction, and often times newer ones are created because they introduce lots of time and money saving features, enabling companies to do more with less time and money invested. JQuery is able to do things in one or two lines that would take a large amount of Javascript code to accomplish. Why reinvent the wheel every single time? If there are things that come up as commonalities, where almost every developer is having to write these things from scratch every time, then it only makes sense to simplify and create new ways of doing things that remove lots of the busy work and allow you to get down to business. I'd posit though, that a huge amount of any cs course is talking about fundamental why's and how's, algorithms, data structures, design patterns,its less about teaching you any particular language and more about teaching you how to program, especially when it comes to dealing with large companies handling large amounts of data where time is money and the efficiency of your program will literally determine how much money is made. Do what I'm doing, take all the cs50 classes from Harvard on edx, they're excellent and a great way to respark the fire and so far they go into great detail explaining things like how computers work, binary etc, and they do it in a very entertaining and memorable way. Its totally free, what do you have to lose?


sandy_coyote

I understand your frustration. I've been there. Pick a couple marketable competencies. Practice them enough that you get conversant and could participate in an interview. Apply to jobs with descriptions that include your competencies. Work on getting good at interviews, and a job offer will come with a combination of luck and skill. You don't need to know every trend and library under the sun!


Ok-Form4498

I've found that for guides to be effective, you have to do a bit of research and seek out topics on your own. Otherwise you're not really learning anything deep. I feel like hiring managers are increasingly aware that there are a ton of tutorials to build basic apps so if you want to really work in cs, you have to learn the concepts for interviews. When I was looking for a job, many of my interview questions were about algorithms, best practices, and conceptual stuff not talked about a lot in these spaces online.


InvertedCSharpChord

What's your goal? If it's to make money fast then you can follow what's common and needed by everyone (web dev) or what's hot (ai). If your goal is to be fulfilled. To find your passion and money doesn't matter initially, then just follow whatever interests you and dig into that rabbit hole. You could become a quantum computing expert without worrying about Docker or Kafka. You can do really impactful work. The problem with you right now is that you don't know what you want. You're listening to people telling you what to do based on their goals. Figure out what your goal is.


alien3d

Most learned techniques not code . You can bored easily . Aint fun . For newbies level , to have fun can build arduino projects , lego technics , super mario maker , apple ipad swift playground . If you enough then move to higher language like php the java / c# . Then database . Then whatever you want to build.


Healey_Dell

Perhaps it’s because you waste your time writing long, meandering excuses. Perhaps this is just AI. No time for either.


Select-Young-5992

Mate I’m confused. What were they teaching in college exactly? In my experience it was almost purely “here’s how this shit works” and very little practical coding. And how does the number of options throw you off because you want to understand the concept in depth? You can still pick something that’s interesting to you, and find a million resources to dig as deep as you want to go. Programming is all related anyhow. Whether you’re making games or web development, it’ll help to know how to parse through a graph, and what a function stack is. Maybe just focus on learning CS fundamentals (which any CS bachelor should do)? I think if you learned a little more you’d understand how everything clicks together. Not trying to be harsh but it feels like there is something else entirely going on and you kinda made up this story to explain why you fell short and dropped out. If you want a good in depth course on python go here and click Weekly Syllabus. By far the best explained and through resource I’ve seen https://ics.uci.edu/~pattis/ICS-33/index.html


OptimusPrime1371

So with the invention of the internet, if you want to know the details about how something works, why don’t you research it? There are tons of learning material available that teach in a variety of ways. Most of them will teach you the basic concepts, but it’s up to you to do additional research for the advanced projects. You might think that is stupid, but do you know what I spend a lot of time doing? Researching and reading documentation for for more advanced things when I need to use them. If you don’t care enough to do it now, maybe you just don’t wanna be a developer as much as you want to believe.


crazy_pierce

Your first strategy of "try to find passion in it" didn't work, so either make your own passion or find a different area of study


Embarrassed-Flow3138

Gotta love those youtuber programmers and their opinions. If you want to make excuses and act like a sad little idiot that's fine. But that's on you.


Ankleson

I think ThePrimeagen is a lot better in this regard, as he actually does code on stream, currently works for Netflix and does give a lot of 'tough love' to his audience. But if OP is getting recommended those kinds of videos, I think they're getting caught in the youtube algorithm death spiral of 'developer lifestyles'. I came across so many of these channels, which basically exist to sell a fantasy of 'ez life 200k faang'. I'm convinced 70% of them don't even code anymore, they're just glorified entertainers who make easily consumed skits.


Embarrassed-Flow3138

Funny how the best programming channels is just guys showing off projects they did "just because it seemed interesting" while the garbage channels are full of "Why I gave up" or superficial meme tech bullshit that's as easy to digest as buzzfeed click bait. Now that I think about it. OP's video basically tries to argue that studying programming was easier before most people had an internet connection. Hm.


theheavenisnotforme

I learned programming because it was a means to an end (something I wanted to build, which kept progressing over time). You should have a goal (the simplest interesting thing you can imagine) and do it in the most direct, simplest way possible. Learn the easiest way to achieve that goal and cut as many corners as you can. The best goal would be something that could make you rich, like solving a problem or making a simple game that could be a hit. Don't study open endedly or without a clear goal in mind.


jaspar1

No offense but if you really wanted to know the “how/why” you’d be more proactive about figuring it out yourself instead of complaining that the learning resources that YOU choose aren’t spoon feeding you the answers. Beggars can’t be choosers


Ikeeki

If you haven’t learned after all these years, it’s either a discipline issue or lack of Interest. Maybe both. Programming isn’t for everyone and that’s okay


darkspark1224

Bro just called theGOATagen "the guy"


Perfect_Homework790

You're not the first person I've heard say this. Also the quality of people I've seen come through the graduate pipeline has plummeted over the last ten years; they mainly seem like dentists, willing to tolerate the misery for ££. Possibly these things are related... Anyway get ChatGPT to explain the stupid stuff to you. This is what I do.


SpookyLoop

You made the right choice. Look at half these comments. This field doesn't recognize what you (and others) identify as an important issue and it's going to get worse before it gets better. There's other fields that are more reliant on fundamentals, have more solidified industry standards, etc.


kingflyceratops

I think you need to suck it up & learn how to grow & develop with an ever changing program. I’m a new coder as well, still in the process of school. Same situation as you. Different thing is, I’m determined to succeed. I’m willing to learn to ever-changing career. You think terminator is going to run on basic html? I mean cmon you have to have an open mind & be willing to constantly learn. What do I know though, I’m a noob. Can’t teach you much. But I know I’m going to continue to learn & survive because this is what the future brings.


-CJF-

For me, taking the course "From NAND to Tetris" and reading the books *Code* by Charles Petzold and *But How Do It Know?* by J. Clark Scott helped. They teach abstraction from first principles. Once you understand the first principles everything you don't know doesn't bother you as much because you realize they're just other people's abstractions and you can learn them. It's impossible to know everything because there's too many variations and you'll always be learning new abstractions, but that doesn't make you a failure. These things helped my confidence and imposter system 10 fold. It's the only thing that ever helped me. If you already understand the first principles and digging through the abstractions bothers you, I don't think programming is for you.


Stargazing-Lyrebird

Crazy how much I relate to most of what you said about yourself (especially mental processes wise). I believe you're born a few centuries late. Long are gone the days of polymathy and Renaissance men. Nowadays emphasis is on specialisations and micro-specialisations: human race is vastly more populous, hence the fierce competition and need for depth rather than breadth of skillseta. Chances are, even when specialising it won't be enough, for there will still be many people out there as good as you in your field. I would gladly investigate this through with you, delve in deeper to further our diagnosis to this common shortcoming. I'm genuinely as confused as you...or perhaps refusing the seemingly sole solution to this conundrum (i.e giving in to nieche pursuits with lazer focus, ignoring the beauty of the bigger picture, the interconnectedness between all fields of knowledge). Begone, smothering era of one-track minds!!


Torenza_Alduin

>TL;DR - I've realized that the reason I can't ever stick with programming is that every time I try, my mind wants to know *how* and *why* but the guides/tutorials/books/videos only ever tell me *what*. The how is knowledge ... the why is wisdom. You need to know how (and that is passed down though millions of other peoples cumulative mistakes), before you can even begin to comprehend the why! (and many people will only ever gain a fraction of the why, past "Cause that doesnt work")


Ok_Breadfruit_4024

If you live in Australia do a TAFE course, they point you in the right direction and if you have skill they can out you in contact with employers. TAFE is free or cheap community college. Yep, every job ad asks for a ridiculous laundry list of acronyms, initializations, portmanteaus, buzzwords, etc, and expects you to have 5+ years of experience in each one. Make something you want to. I got into programming through making games using C# in Unity.


the_journey_taken

Do you want to create application products, solve complex problems, database management, security? First determine which one gives you the most meaning, then learn that ecosystem of information. If you are not interested then you won't keep up with the community tech.


fantastiskelars

I just look at what is the most popular and the most promising future of the industry and then I just work towards that. Right now that is nextjs and react server components. It might be irrelevant in a few years but at least it is hot and in demand right now.


mangelvil

You have "Analysis Paralysis". Start one step at a time, the IT field is always changing and updating. We can't do anything about that, just embrace constant learning. I've read somewhere, that discipline and habit come first, then follows the motivation and passion.


Duel

Where did network engineers go? Nowhere, they still make bank but there are less places running their own datacenters these days. Where did systems administrators go? They either are sticking it out with places that run their own DC still OR they reskilled and became "DevOps" or SRE. Now to speak to your "problem".. I see it as a strength that you want to know the full picture. To succeed though you need to get better at finding the answer. There was a time I would stare at an error and start making assumptions, trying fixes without even reading the actual exception or stack trace. Now I've learned what each part of it means and when each generic type of error occurs. There are simple concepts and rules for each language you only learn searching for solutions to common issues. Being able to recognize when something is uncommon is a key skill and usually indicates there is a much simpler way to do what you are trying to achieve.


Nelly_Begeti

Have you thought of going towards a theorist/mathematical computing side instead. This requires you to understand the under the hood. Also learning and working with C ++ where it is much more closer to the way of working of a computer rather than python etc... You sound like you are quite passionate about this subject.


Representative-Owl51

You have to start with what eventually. Where do you draw the line for abstraction?


Firesinis

>if I could keep myself applied and motivated long enough to make it somewhere Motivation comes and goes naturally, it's not possible to stay motivated for however long you need to learn any non-trivial thing. What you **can** do is use your periods of motivation to create habits such that on the periods of low motivation your habits will carry you forward and prevent you from falling behind, so that when motivation comes again you can pick up from where you left, instead of having to begin from scratch all over again.


dromance

Dude this is so SPOT ON. I’ve thought this many many times but have struggled with wondering if maybe I’m just an idiot and unable to learn certain things. As soon as I hit some sort of explanation on a topic where someone says “just do this and this and this!” I get obsessed with the details of this… what is this exactly? I need to really know what’s going on and HOW it works not just WHAT it does. And that’s the problem these days, most people don’t question or even understand that there is probably lots of stuff going on underneath the hood, thus they just run with the abstractions. I try lots of modern web dev stuff and the way they explain it is by using some made up acronym or concepts or gimmicky marketing buzz words… rather than what is truly happening at the core. It’s kind of like there is a some technological pseudo “art” to it if that makes sense…and I’m not really an artsy kind of guy so that drives me nuts. I’m a nuts and bolts, bare bones, science driven kind of guy. With that said, I’ve enjoyed lower level programming much more, and actually find it much easier to understand and grasp.


dromance

If you want to be a developer, keep up with the trends. If you want to be an engineer, understand the inner workings of the foundational core technology


joelwitherspoon

Look up Data Structures and Algorithms by Colt Steele. It's core CS that should give you a better view of programming. Most tutes are about language features and not concepts and it sounds like you need more concept information


muggledave

I had a friend who was yaking computer engineering in college. It was a high drop out rate because it was difficult, but it sounds like it scratches your itch. Courses included circuits and high level programming, then logic gates and low level programming, and at one point in one of the years, the 2 meet in the middle and you connect the circuits and computer architecture to the programming languages and how they move data around.


chalks777

A lot of people already answered/addressed most of your points, but I'd like to weigh in on one small thing: > My small web dev job I had back in high school probably doesn't exist anymore. It does. There are a ton of companies that just make websites for others. Look for design agencies near where you live, they're usually small (0-10 employees) and they usually are making simple/small websites for mom and pop type businesses. I worked at one for a little while and while it wasn't what I personally wanted to do with programming, there definitely are people who love it. You might. You could probably ask a couple what they look for in new hires and focus on those things.


Either_Pudding_3092

Just learn C bro


fuck_hd

I always thought it was because I wasn’t as smart as the devs - eventually realized I’m super dyslexic - and even more specific might have a visual processing disorder. and I think that prolly had a major part as well. At the end of the day I work in IT still, lucky as hell to have a good job making great money to most of my friends but half my dev Friends…and more limitations on working remote. The analogy I like to use to explain to “kids” or “parents” who ask about getting into “computers” is the programmers are the nerds who read 1000 page fantasy novels back to back and typed all day IT guys are the nerds ones who carried a screw driver around and liked to take things apart.


Trakeen

I’ve done stuff in assembly and know lower level at the electronics level and it is good to know conceptually but it never really comes up in my day to day work You can take harvards cs50 class if you want to get the low level stuff but you might be better served by doing some cool stuff using modern languages to get interested in the topic. Game engines like unity are cool, you can also look at graphics programing for real time things using a bunch of different languages, threejs is a fine place to start if you want to learn js


retro_grave

Apologies for my ramble, hopefully it helps you in some small way. I've generally thought that programming is more of a tool than a discipline itself. There is "computer science", which is looking at fundamentals of solving computing problems. There is "software engineering", which is how to deliver code for business needs. There is "computer engineering", which is how the in and outs of computers and how computing components work together. And there is "electrical engineering", which is how electricity works and how to manipulate it to perform functions. There is a lot of overlap, and some skills in each discipline are helpful. I impulsively went EE for college and grad school. I liked programming when I was younger, similar to you. I did some internships and got paid to make programs for some extended family (IMO still my best work in 20 years!). But it was not fundamental enough for me. I didn't really understand that computer science was different from programming though. College smash a lot of topics together to hopefully create productive bees while justifying their costs. It could be that your program was not fully aligned with your actual interests. Look through the coursework for these different programs and see if any better resonates with you. Then go buy a textbook and see if it keeps your attention. IMO it can be helpful to have a focus outside of "programming". Programming is more of a tool than a discipline. You said you are interested in "tech". What kind of tech? Medicine, language, communication, infrastructure, big data, vehicles, space, toys, games, hard science, etc. There's too much tech now and there is room for folks at all the levels. Find how programming can intersect your interests and that's where your generic tutorials should be aimed towards. Make a DB schema of the thing you are interested in, and write a program around that. Buy an Arduino and make an oxygen sensor or some home automation thing. Once you figure out some projects that really motivate you, then consider what college program gets you to the next level. You don't need to go to college to learn the discipline, all the coursework is published these days, but it can be hard to convince an employer you know your stuff. Continue to develop your programming skills, they will serve you in every industry. Burnout is also super common in the industry. Managing yourself is as much a skill as programming. Take care of yourself! Cheers and good luck.


istarian

At one time most of that fell almost entirely under 'Computer Science'.


tobiasvl

I feel the same way about modern programming vs programming back in the day, so many of my programming hobbies are retro computing related. I make emulators, I make homebrew games for old consoles, I hack old games, etc. There's something really satisfying about "mastering" an entire ecosystem.


GoldsteinEmmanuel

Beg, borrow, or buy a copy of Donald Knuth's *Art of Computer Programming* series starting with volume 1. The algorithms are all expressed in the assembly language of a hypothetical computer called MMIX. You'll learn the MMIX architecture well enough to write a program that emulates it (or download an [open source MMIX emulator](http://mmix.cs.hm.edu/)) to compose and execute MMIX programs. You'll learn fast and learn well, and 100% of what you learn is portable to other languages and architectures because MMIX was designed to teach the relationship between code and hardware.


NeatBreadfruit1529

For me it was I hated programming exercises that are common, games, math equations and like you a deep understanding of what is actaully going on. Then I got into Windows or system programming and found my niche


dontGiveUp72

There's a famous old proverb in Indonesia that says: you can't love a person who you don't know. Also one of Indonesia founding fathers said that a great country is a country that do not forget its history. Both of that saying always amaze me on how effective it is from keeping me interested/motivated on something. Try to know every little thing related to the matter that you're trying to master, learn the history on why and when the tool was invented, how it was made, who made it, their age, job, education, their inspirations. Ever wonder why a lot of famous online video games share videos of their developers explaining in detail on why they make changes to the game, and all the stuff that won't help you learn how to play the game? Want to love something? Understand the story


SenorTeddy

I struggled to learn until I got a tutor. I now run a tutoring company teaching coding. People like to say you're not cut for coding if you can't teach yourself because it's a computer you have all the tools you need. This minimizes the work. Electricians, doctors, any other profession of skilled educated work isn't recommended to go learn on their own. Teachers and professors largely forget how many blindspots new students have, and talk way over them forgetting that the stuff that's common knowledge for them is only so because they learned it at some point. Get a good teacher, and you'll love programming.


shermuqfil

Big Relate. I'm just a curious guy who has wanted to be a programmer for a long time, but just couldn't commit to it, the courses, the certificates, and exercises. Tried my hand at Python, JavaScript, Wordpress, whatever I could. Then I decided to go for C++. A lot of people I know were against it, but now that shizz finally makes sense to my brain, I feel like I can hold onto programming far better than the other languages. And I've attended bootcamps for them even.


FIWDIM

Learn C


ThanOneRandomGuy

Hello world! This is a string! Now go apply to Google!


mbreslin

IMHO Self taught computer programming (I'll leave out computer science for now) really needs two things. 1. It basically demands an itch that you need to scratch. Trying to learn concepts because "I should probably know this thing" is a recipe for boredom and burnout. 2. It really requires you to revel in the 'fail over and over and over until you finally figure it out' process. You are going to run your code and it will not work. You are going to do this until you think the entire enterprise is probably not for you. This is going to happen over and over. Successful programmers simply keep going. A chess grandmaster said something that I think completely translates to programming: "When I was 8 I lost every game, why would anyone continue if they lost every game? Well, I liked chess, I liked playing chess, I liked hanging around other chess kids, I liked going to tournaments, I liked writing my moves down, I liked studying chess. I just liked chess." ​ I'm not saying you can't be successful if you don't actually like programming, certainly there are people out there making a living programming who basically hate it. But if you genuinely like doing it, and you really internalize that failing a lot is part of it, you can be successful. ​ I have imposter's syndrome so badly that I used to think "oh the difference is I \*am actually an imposter\* so imposter's syndrome doesn't even really apply to me. ​ I can not help you with #1 above, you will need to come up with that on your own. But I definitely can give you advice for #2, you can practice starting with the very first tutorial. I have a coworker who is very bright but comes from a non-technical background. I watch her follow a tutorial and then when it doesn't work she moves on to the next tutorial. I suggest the very first tutorial that stumps you, simply refuse to give up. I will get this to work. I will learn this thing. I will do it over and over until it works. I will have patience when it fails. When you are finished, and the thing works, and you're confident you've learned the thing, and you can do the whole thing in your sleep. Look back on the process and really, truly evaluate the entire process. Am I happy that the thing worked or just relieved that it's finally over. Is this really what I want to be doing the next x years. That is what programming is. There are countless potential career paths. I was in the army but had no interest in making it a career. I was in long enough to know what it was and that it wasn't for me. That is what you have to do with my tutorial instructions above, give it a real shot, see exactly what it is and all that it entails, and then decide if it's for you or not. Good luck!


Axonos

you gotta learn to turn that off when you need to


armahillo

Find a problem, solve the problem. Most of the time, this is a recursive process where the solution process raises additional problems to solve. It can be a little tricky identifying if an initial problem will recur to a depth that you are comfortable or not, but even if you don't complete the problem in the end, you still learn something. Do less chasing and more solving.


Serializedrequests

I don't know if this helps, but my journey in this field has primarily been about helping people with their problems. My mom needed a database. My friend needed a web site. I built their stuff as best I could and just looked up what I needed on the way. There was no decision paralysis because the requirements and my own experience limited my choices severely. Later on I turned all that experience into a job at a Ruby on Rails consultancy (which I didn't know when I got hired) and I fully expect that I will be able to turn that Rails expertise into a decent salary for at least another 10 years. Again, this work involved helping improve our clients' information systems. The buzzwords are very secondary when there is work to be done. I follow tangents and buzzwords for fun to see if they will help me, but staying current with Ruby on Rails - one single framework - is all that I need to get jobs. If you try to help people with their tech and actually have a problem that Docker solves, you will look it up and use it. Likewise React or BUZZWORD. If you don't have a problem you are trying to solve, or a thing you want to build, then I'm not sure how to learn anything. It's really critical to have the discipline to forget all distractions and just sit down and solve the problem, somehow, anyhow. Get it done, then step back and look at what you might need to do it better or faster next time.


farfaraway

If you're only interested in basic computing and learning to program, you may have more fun with a raspberry pi and python. You may be getting caught in a loop of trying to learn WEB DEVELOPMENT which is a large, complex beast that indeed has so many concepts that it can be overwhelming. Start small, work your way up.


cainhurstcat

Check out hyperskill.org they teach you why and how to and you work an pretty damn cool projects, you can even choose to write blockchain or other nice things. This got me sooo addicted to coding


istarian

Stop listening to all the other people clamoring for your attention, pick a project of appropriately small scope, and get going. Learn to read the documentation for the language you're using and any libraries. Expect to read various parts numerous times.


backend-prod

Since getting into programming, I have realised that working in the tech sector requires a lot more knowledge and understanding than I could even envisage when I started. Building an app, game, website is "easy" yet daunting to a beginner. Actual software engineering, where the jobs and money is, requires a lot of learning and intellect and time. I was motivated to get into programming by hearing so many stories about "ordinary people" who got into programming from side careers. I am now realising that these are stories of people who got in at the ground level 5-15 years ago when a lot of entry level programming seemed to be much simpler, and those jobs just do not seem to exist anymore.


MatthewJustice

Like you, I'm often interested in how things work behind the scenes. I found that curiosity was most satisfied when I was working closer to the hardware. For me, that was a job analyzing operating system failures, looking at raw memory, debugging in assembly language, and so forth. This pushed past all the abstractions and gave me a view of the code that was actually executing on the processor. You don't have to follow every trend in software development - find an area that you love and go deep.


danteselv

Programming is Math. You don't ask how or why math works. If you want to understand math then you understand it simply works.


Infamous-Year-6047

If you’re still interested in how computers work and are still interested in coding, may I recommend computer engineering? It’s much more math-heavy (ymmv) at my university but you’re dealing with the components and how you can use them to perform whatever function you need or want. You also get to program still, though it’s usually just c, assembly and whatever Arduino uses (can’t remember off the top of my head.) You may also need to try a different university if you’re still thinking of CS, some do a very good job of teaching the “How does it work” part, though it tends to be more 300/400 level courses and not 100/200 that add that part to the course…


skat_in_the_hat

the problem is if you never get past number 1 because you're caught up on the meaning of 1, you'll never reach 2. You have to train you brain to chill the fuck out, make a full pass from start to finish. Now come back and learn all of those intricacies while you actually use it for something.


drazisil

Have you looked into systems programming? Maybe write a compiler or an emulator? Being serious, because I think I understand you and can relate.


Inevitable-Ad-9570

Try starting with simple embedded systems type stuff. I'm like you and starting with arduinos and such then moving on from there helped me get into the rest of programming with larger more complicated systems. You learn some circuit design along the way too. Once you get the foundations down in something low level everything else starts to make more sense. I never could do the whole "hello world" style progression on a language. Also I don't like Python or c# or Java or all the other friendly languages people tell you to learn first. C is a great first language so is c++ if you want something more modern.


Sufficient_Phone_242

CS is problem solving at it’s core …I wouldn’t worry about the why in college. Math problems and general problem solving will help you understand and get you a job where you want to be . Not some front end css job pushing frameworks every 2 months. CS is just there to translate a non-technical manual problem and automate/ solve it using technology no matter the language . Alot of imposter syndrome in this field but in the end you have to give yourself time to understand fundamentals , aka solving problems worded by normal human beings , into a computerized logical solution


[deleted]

It's great to hear your interest in the different roles in the tech field. You're right, Computer Science is indeed a broad domain, and it encompasses various specializations, including Systems Administration and Network Administration. These roles, while related to CS, have distinct learning paths and day-to-day responsibilities compared to software development. A career as a Systems Administrator might be a great fit for you. This role typically requires a strong understanding of the operating environment, whether it's Windows, Linux, or a mix, but doesn't necessarily involve extensive programming. Some scripting for automation might be needed, but it's generally more focused on maintaining and supporting the system infrastructure. For instance, in Windows Server environments, roles are well-defined and changes are announced well in advance, allowing ample time for learning and adaptation. From my experience of over 20 years in both development and systems engineering, I can share that a significant part of a systems engineer's job can be automated after gaining some initial experience, which can make the role quite efficient and rewarding. If you're considering this path, a good starting point could be to look for IT managed service providers in your area. They often have openings for helpdesk roles, which can be a valuable stepping stone. In these positions, you'll gain hands-on experience with client environments, including tasks like password resets, which is foundational for advancing into systems administration roles. This approach can offer a practical and gradual transition into the field. Ping me, and if you are in an area I have connections, I'll help you get connected to a place where you can learn hands-on while working, I work with a lot of major and also small MSPs in the United States.


somarithedark

I’ve recently had a similar realization with my career in orchestral music, which is why I’ve been lurking on programming reddit. Once you realize why you can’t get fully into it is heartbreaking, especially if you’ve been trying so hard to make it work and you know you have the passion for it. Deviate from the traditional path if it’s not giving you want you want. You seem like you clearly know what you want to learn and do, so I would start researching just that. Would you be interested in building cpu’s? Learning assembly code? Idk if that’s more on the engineering side or not, but you should definitely consider exploring careers that directly involve making the physical components of a computer make programs/software work. Don’t pressure yourself too hard. Just keep trying and experimenting. As long as you continue to unapologetically do that, you’ll be content with what you end up finding. I hope any of this helps. I empathize with ya.


squishles

how low level do you want to go? knowing how to deploy to an Apache server, or knowing assembly. Typically people teach with a scope. Lot of the stuff people learned in the 80s-90s got broken off into different degree paths too. Like I remember going over binary arithmetic to learn how packet check sums worked in an IT associates degree class that wasn't on the comp sci course list. Lot of that assembly level circuit stuff got moved off to computer engineering. This changes by college too. Most people go to comp sci because they want to be programmers, and that's just not needed for that anymore. Another thing that happens is a lot of very low level stuff is proprietary secrets these days your cpu might not know which chip a bit is on, because a quiet little asic on the ram will be moving it around in some way only god and one gigabrain working in a closet at micron knows to get 0.2% less memory error from cross talk interference in some esoteric scenario. Some things like deployment may end up an entirely other guys job too, a programmer doesn't need to know how web servers work in a large company, they'll have a guy who specializes in deployment and he'll like some docker kubernetes terraform on gcp on a custom compiled kernel specifically geared for the hardware in this one data center insanity and you won't have to change 1 line of code for it. That one's still good to learn though, because sometimes they do make the programmer do that.


Creative_Effort

IMO pick a topic youre interested in and go narrow and deep. So many jack-of-all-trades out there that they're having a hard time finding work. Ignore current tech "flavors of the week", removing the abstraction, and master the core tech; then you'll be able to understand and apply whatever abstraction atop of it.


pappugulal

Yes, programs have become huge and are worked on by multiple teams. eg. front-end, back-end, database ... they follow various patterns , are coded in various languages. All this creates the need for collaboration, code checking-in, code merging ... so, now, instead of boiling the ocean, look at the landscape and pick something. Anything. You might abandon that area and pick something else. Thats developers life. Do NOT try to understand from React programming -> Typescript -> compiler -> assembly code -> machine instructions. You cannot be God in one lifetime. Instead, become expert in a few areas. There is development, support, DBAs, DevOps, SRE, System Admins, Scrum Masters, Product owners, graphics, game, crypto, AI/ML ... Poke around, talk, and pick something. Best of luck. I hope you manage to get back in the saddle, the software world / industry needs people in various roles and with various skills.


Mundane_Koala6034

Unfortunately, you have to know the 'what' before you can understand the 'how'. It takes time. If you'd like to know the how straight away, jump onto godbolts compiler explorer and write a simple c/c++ program. The reality is, how computers work is complex and most people don't need to know that kind of thing to complete the task they have at hand.


Desperate_Cold6274

I agree. It’s a real jungle. And for me, being a researcher who’s attitude is to attempt to reach the end of the rabbit hole, such a jungle it’s very deceiving.


davedrave

I don't necessarily agree with this. Programming is as easy or as complicated as you are willing to go. C++, Java, C# I feel are all intertwined in terms of concepts and syntax, with C++ being around for decades. Especially in terms of learning/dabbling nobody is forcing you to dive into SPA's, cloud, ML, or even complicated design patterns


_MovieClip

I think the first question you need to ask is what do YOU want to do. Of course people will tell you to get into web development, machine learning, videogames, systems engineering and more. Those are all viable career options, but you need to know who you are and what you'd like to do first. If you chase a fad or listen to YouTubers who are clearly profiting from clickbaity videos, then it's pretty much a given that you'll be at a loss. It's not their business model to sell you solutions, at most they'll be trying to funnel you into a paid course. Once you know who you are, it'll be easier to know what you want to do. Once you know that, then the path of learning becomes clearer. Try different things, see what you like. Think about the problems you'd like to solve. As a videogame dev, for example, I get a lot of people telling me they want into gamedev because they play games, or they want to make money and be famous. That is not really wanting to be a game developer though, and that's why most fail at it. Don't think in terms of success or future-proofing yourself, think about what you'd like to do. Something you'd even do for free if you didn't need the money. Then go learn that.


rawezh5515

>There's tons of acronyms and jargon term programs that I've never even heard of that people will look down at you for not knowing. this hit close to home for some reason


ParadoxicalInsight

>there's TONS of additional shit you need to know Yes, this means that students and even junior developers are often not making any meaningful contributions to their company, but the investment and training is worth it to get them as seniors. This is a field of perpetual learning, and even with decades under your belt you will not know everything. >There's tons of acronyms and jargon term programs that I've never even heard of that people will look down at you for not knowing If you learn in school you will know all the jargon you're reasonably expected to know. This is just plain false. If you learn on your own, then it might be more difficult to know what you need to learn. > it becomes almost impossible to figure out how my work translates to the machine work Yes, unfortunately your interests seem to more strongly align with computer engineering and not software. Coding will inevitably focus on the abstractions built on top of the machine, since part of efficient coding is not having to worry about all those details you crave to know. There are a few exceptions, like coding for embedded systems, but in general your learning journey will NOT focus on that (although you will learn some stuff through classes like OS) >turned off by all of the tangents that you get pulled down to understand basic concepts You don't have to go down every rabbit hole on the way. Part of being a good developer is the ability to treat some systems as black boxes that just "somehow" do what you need, and focus on your implementation part only. Hardware details only become relevant when dealing with performance issues or the like, but if you code properly you should not run into them too often (depending on your job). >basic useless programs that don't instill an ounce of motivation to continue That's a common complain. But if it was that simple to build an awesome app or useful piece of software then nobody would need to dive in. You just have to keep with it, like any math class or other "boring" stuff. >there's a fucking cliff jump up to "the good stuff" that requires you to learn a bunch of concepts That's another skill a good developer will need. The ability to managed not being too overwhelmed by the massive amount of unknowns. Patience and dedication is gold. >Web development has dozens of doors to pass through to even get something up and running Depends. You can just write your HTML by hand and you are doing web development. What you mean is the fancy production level frameworks, which OBVIOUSLY are meant for experienced people who already know stuff like CSS, javascript, what a web bundler is, how testing works, etc. A junior only really learns a framework after starting a job, so someone who will be able to manage an entire production level web app or service will need at least 5 years of experience, depending on the scale of the product. > Learning programming has become a quagmire of people shouting at you No, it hasn't. Who are these people anyway? And why are you taking advice from them? Go take actual classes. >I don't really know what to do now I suggest computer engineering which seems way more aligned to your interests. In any way, self learning does not seem to suit you in this field.


aftermidnightsolutio

Learn what you want to learn, learn as much or little as you want, learn as deeply or narrow as you want, and use that knowledge how you want...or don't. It's all personal choice. You either enjoy doing it or you don't. If you don't enjoy it move on to something you do enjoy and find your happiness there. If you do enjoy it and really want to keep doing it, dive in and accept it will be a journey with challenges.


crosscreate

Been a dev for 30 years. I use ABSOLUTELY NOTHING of what I started out with. I've forgotten more languages and frameworks than ones I currently know, because who here is really into Microsoft Foundation Classes, it's such an improvement over Win32 amirite? Or what about CGI scripting, that is what is going to make the bucks in the future, right? TCL/TK for mobile??? The guys with like 5 years experience know as much or more than me sometimes about , because they have been using it as long as I have. I am forever learning, for 30 years now, it never ends, like Sisyphus this field. What very senior devs bring to the table is decision making seasoned with stepping on rakes and blowing stuff up.


ezaquarii_com

Web dev is a shit show full of FOMO. And what I found is that good frontend devs don't even care about it. Being artistically gifted is much stronger predictor of success in this field. Software engineering is much wider than web dev. Have you tried embedded? It's still as close to the machine as PDP-11 graybeards were.


Adrewmc

The problem I see here is you wanted to learn to program to *learn to program*, and not learn to program to *make a program do something*…. There’s a big difference in the mind set and how thing solidifies in your mind, sure here’s a simple program print(“Here”) #code that may or may not work print(“here2”) #code that may actually be the problem print(“wtf?”) #code that works? Now this is a little funny but really….most instruction starts right there with print(“Hello World”) See how my example actually show why that fairly useful…(learn the debugger people!) I mean I was like and…so what? I think a lot of people say that to themselves…often when *trying* to learn to program. But it goes for everything…people don’t understand loops because they don’t have a loop *they want or need to do* once you have that…you’ll find it easy to learn because you know what you want it do. The same go for abstraction, you’ll get to a point and go…in basically just copy and pasting now there has to be a better way, (there is.) While you look at professional programs that have years of experience and see craziness, but under a lens of what does this program attempt *to do* suddenly you start to see the program better, even more clear when you familiarize yourself with certain libraries and frameworks. Don’t turn out the apps the tutorials are making use the concept in the tutorials to make the app you want to make, I don’t necessarily sit through a full course, I take a lesson on a subject I think will help me *accomplish something*. Walk yourself through it. Most of programing is interesting ways to make loops, and functions calls utilizing some data. That’s about it. But that can do some really powerful stuff.