I am self-taught since I was 9y. BASIC on C64 sister computer (plus4) then ASM (BASIC was sooo slow :), then C on Amiga and DOS, Stroustrup v1 C++, Eiffel, Erlang, Obj-C in NeXTSTEP, C#,JS,TS,Rust etc.. it is an awesome ride , so many projects :)
I once had a friend who constantly hopped between different programming languages, never really mastering any. He often shared grand plans about undertaking a major project, but within a week, he'd shift his focus to learning a new language. I pointed out to him that, despite the years that have passed, he hadn't really created anything substantial. I suggested that if he had dedicated himself to excelling in just one language, he would have made far more progress than he did learning the varied syntaxes of multiple languages.
Progress as you see it is overrated. I'm sure your friend learned a lot. Honestly when do you ever need to do everything start to finish? Most work is in filling out the gaps left by others and fixing bugs left by others :P
I did the opposite. I started with C, C++, then learned Python, did a whole bunch of Python while I was learning Rust, and now I use Python and Rust interchangeably depending on what I'm doing. Still, data structures and computer architecture are the absolute basis of knowledge when it comes to programming.
I’m at this exact point in my career. Glad to know I’m on the right path. I’ve learning C right now to learn more about pointers etc. I’m fine with switching to Rust to get the same result. Want to learn more about computer hardware as well
I'm now retired after 44 years of software development. I was lucky in that it was never a job for me, but a hobby that paid me a salary. I discovered your UA-cam channel on Rust/Slint and my inspiration gear kicked in again, so thank you! Your lesson here to self taught developers is a great one. Of course, even if we learned something in college to be able to get that job, this career is always self-taught, and I'm wagering it will be that way forever. The languages I have learned were made much easier because I learned much lower level languages first. Assembler taught me how Cobol worked, C taught me how VB worked, etc., etc. Another lesson I learned in college and found very valuable throughout my career is knowledge of the data you are processing. Poor data structure design will be reflected in your code, even if your code is pristine. For example, writing software to process an over-normalized database is a nightmare. Thank you again for the inspiration, I'm now a fan!
Your comment about understanding your data just clicked for me. I'm just starting to learn software development/engineering and I wrote a simple script which operated correctly but because the input data file was structured oddly it caused the output to act weird.
I'm self taught. I started with the big blue C Primer book. I was working nights so during the day when I couldn't sleep I worked my way through the exercises. I think that's the key, just do programming exercises in a low level language till you internalize how it all works.
As a Junior Dev with a CS degree, one thing I've begun to appreciate is tutorials. I think structured tutorials are actually pretty underrated. I spend a lot of my time reading documentation on the job and applying what I read but, ultimately, I learn things haphazardly in the process. Having someone start from square one and walk you through a framework, or what have you, is so valuable in being able to piece together a bunch of half digested ideas you might have gained from just reading the docs and doing trial and error in an IDE.
thank you Travis, this is really valuable. I've been debating weather or not to learn a lower level language and now I think its the only way to really grow as a self taught developer its going to be tough but I'm sure so worth it at the end.
i highly advocate going lower. i started my journey by coding in python and js, and after learning some java fundamentals (which helped me learn typescript/es6 classes), i feel life my base is so much stronger.
I agree, but I also suggest trying to go higher-level too. So many Java programmers would benefit from learning Scala, and same for C# devs learning F#. You end up bringing more concisely expressive approaches back with you to your primary languages
When getting lower than *c/c++* e.g choosing *assembly* you would understand *c* even better. When the compiler constructs the function for yourself you don't really understand what those "calling conventions" like "__stdcall" really mean.
I started with js on ie 8 i think, i never liked it to be honest, i then wanted todo game programming so i learned how to use im opengl. That i did in conjunction with learning C style C++ (handemade hero), i then moved for some months up several layers doung web development with back then raw javascript, then i wanted to see how other frameworks in that field are so looked into angular and preact/react and then i moved back to C++ developing a software for a ofen/heating circuit and now i moved one level deeper to develop systems with a custom RTOS fully in C, and even that wasn’t enough to statisfy my curiosity i learned app development for ios platforms on the side, and in the mid of this path when working with js i also learned Verilog to program Fpga‘s that was a lot of fun. My current goal is getting into PCB and hardware development on the side of my main job working on automotive rtos systems. Today’s code is still very much hmh style code and that is really nice to work with.
Thank you for affirming my thoughts. I recently graduated from a front-end BootCamp after getting into data analysis. What I realized is that I feel lost and stupid not knowing what's going on under the hood. Whenever I tell someone -- veteran or beginner -- that I want to learn a low-level language, they say that I don't, and that learning about data structures and algorithms is enough. While I plan to do that, I still can't be convinced that learning the basics from the ground up aren't essential, in every discipline, not just coding. After this video, I made up my mind to learn Rust instead of C++ or GoLang, for now. Not sure if I should learn Typescript first, though.
you should learn whatever gets you where you want to be in 1-5 years. And be comfortable with the level of abstraction that you enjoy the most. Engineers are writing code everyday knowing only just enough above and below their chosen level of abstraction. It depends on what you're satisfied with. You don't necessarily need to know how V8 works to shipping fully functioning web products, but you could learn C++ and read their source code. Wants, needs, and curiosity are better drivers than fear.
Im starting my programming journey with CS50 and raw C programming. Im on week 4. I feel like i couldn't imagine a language that abstracts away simple thinfs like strings and pointers. I cant wait to start messing with JS and python later in the class.
@TravisMedia hopefully! Im having some trouble deciding what direction i want to go after CS50. I really love game development. But web dev sounds way more viable and lucrative
@@shawn14isme i told myself that a few years ago and here i am... not learning web because i dont want to(i know basic html and css + js) and neither making my games in unity because i'm stucked in my desicion...
@@shawn14isme many programmers don't really know what to do with their knowledge. There's not much ideas to implement, even if you have the idea there could be no motivation to progress the project. Getting money is more motivating for people to continue programming, sometimes you can't rely on yourself for getting motivation.
In Java for an example, everything except primitives is a pointer. Which if you think about it is kinda stupid and unnecessary. It is nice to explicitly know if your type is passed by value or by reference (pointer). Abstracting this away makes things in some way simpler but in some ways also more complicated, because now in Java you can accidentally modify an object passed to a function without thinking. And this concept of passing by value vs by reference is obscured to new developers starting from java for an example. As far as memory management goes I feel like C++ RAII is also better than garbage collection. I feel like some language that allows the low level control, manual memory management and wide set of features of C++ but with a more modern build system, package manager and with reflection, maybe even extention functions, and something like Kotlins scope changing functions, and less verbose syntax would probably be my ideal.
Thank you so very much for the invaluable insights. Exactly what I needed to hear at the perfect time. I was thinking I should get myself familiar with the low level concepts. Started with a high level, abstract programming language and now I need to pick up C++ or Java to dive into lower level implementation details.
I’m just beginning my self taught journey and have been learning C as my first language to understand the fundamentals - this is the motivation I needed to continue doing what I’m doing!
I've been learning bits and pieces about comptuer sciecne concepts when I can for about ~7 years now, not that I'm a programmer, I just like to know how things work, it's just amazing how it shows you new ways of thinking and structure your thought process. now that I'm seriously considering software development as a carear, I'm just learning the details of how to apply those concepts to write code (and I'm only fluent in C, lol) I couldn't agree more.
00:00 🛠 Learning Rust introduces the concept of ownership, fundamental for memory management. 02:41 💡 Starting with abstracted languages like JavaScript or Python is common but may lead to knowledge gaps later. 04:18 📚 Supplement learning with computer science concepts like memory management and data structures. 05:27 🖥 Consider learning a lower-level language like C or Rust to understand deeper concepts and improve problem-solving skills. 06:34 📆 Plan for 2024 includes regular videos covering essential concepts for self-taught developers.
I heard someone say this at some point: Software engineers should understand at least two levels of abstraction above and below them. I keep repeating it because it is so true!
I‘d probably say go by what leads you down the tree. There are things that seem to be rock bottom but there are layers benefit just harder to break in. Like if you work already at instruction level (asm from whatever platform) the step beneath is hardware design while i would probably start with discrete logic and then move to software based hardware design fpga‘s.. I did the mistake of doing the opposite and that left me blank on the analog side.
Taught myself web dev and changed careers (JS/React), this year I'll be attempting to move into data analysis and focusing on Python. I'll also be picking up Rust, no rush, I'll be doing it slowly on the side just for fun to help expand my knowledge.
I had similar thoughts when I started learning programming. Surely it's not as easy as watching tutorials? If it was, devs won't be paid so much. So I felt I should challenge myself. After python I went to C#. I was a blast. I still use it today and it has made me learn a lot about concepts I won't have touched if i stayed with python only. Now when I write python, I even use type hints lol. I also got to know that there was ALOT i didn't know, there still is. But I'm glad, sort of. Thank you. I think going even lower with a language like rust will be helpful as well. I use C# more than python these days for backend stuff.
Thats awesome. I think we have a very similar story. I landed a job a few years ago at a C#/.NET shop. That was my first exposure to a "lower" language and it's one of my favorites to this day.
C# sharp is a high level language. Garbage collection is abstracted out. You rarely work with pointers unless you're working with unmanaged C++ code. I think I coded a bit mask a handful of times using C#. You have to go lower. Another thing is you need to learn math. All of these programming concepts are math. Functional programming is really functional math. Graph theory is used often when dealing with hierarchy's N levels deep.
@lee4547 It is, but it's much lower than where many self-taught devs start and stay at. A JavaScript developer will gain much insight by taking a short course and building a few things with C# ("a list and array isnt the same?")
I think with today's hardware you don't have to worry too much about the overhead of a generic list in C#. Why even use an array and deal with the resizing? You don't have that choice if you go with C. You need to learn how to resize dynamically, so the array is reusable after it's declared. Then they can learn how convenient a generic list is or even just a Generic in general for that matter and why a framework is necessary. I think understanding the math first and working your way up is probably the best way to learn IMO. It's not sexy but a formula is succulent and expresses clearly how it works. Code is verbose. You have great content btw! good job! @@TravisMedia
4:54 What you said is 100% right but unfortunately, I come from a tier 3 college (India) and I learned most of the stuff from UA-cam and the internet. I recently watched a Netflix show called The Playlist (a web series based on Spotify like how they tackle their problems and are well-established as a music streaming company) where the core dev modified the network protocol to make Spotify fast. After seeing this I have realized I know nothing, though we studied the OSI model at college I think learning things by doing is the most appropriate way, we don't find the time when we do a job but on weekends I do want to learn stuff, and scale up. Can you please provide me a road map to improve?
I started coing in Python, then I started using JavaScript more for my job. I'm a self-directed learner also. Thanks for this this video. Learning a lower level langauge like Rust makes sense and I have found myself dabbling in it the past few months. I plan on dedicating more time to it.
I am self thought and for the last year I have been working on a game engine + game in C++ and it is the best decision I have ever made in my programming journey. I have found practical applications for that stuff that interviewers like to ask that I considered unimportant before like time complexity and data structures. I have actually come to enjoy CS fundamentals now.
I am learning c# right and I have had a way more pleasant experience in learning and understanding stuff than when I started python during my college days
If you can learn C++ everything else in every other language makes a lot more sense. Writing asynchronous code in C++ means I have a deeper understanding of async/await in C# or JavaScript.
Precisely. I started and stuck with C++ and every other language was just a matter of syntax. I was able to pick up TypeScript, Rust, Python, and C# quite easily. It would have been the same with Java, if I had wanted to. Had I come from any other languages, I would have had a harder time, especially with Rust. Had I started with Rust, it would have been almost as complex as C++. But after you spend your fair amount struggling with C++😂, then you're good, bro. You can pick up everything else.
@@TheMrblaster2012 No! Keep learning, stay focused and stop finding ways to totaly destroy your progress (like jumping to new thing every week without learning anything). Its not so much important what the first language is AS it is important to make it from start to end.
Very valuable video. I am somewhere in place you described. I've already grasped some more low level concepts, playing with Golang, sometimes with algorithms and data structs (e.g. recently I had week with binary trees). It doesn't necessarily have direct impact on my frontend developer carrier. However, I think it has implicit impact, I have feeling like I grew as a developer, generally.
Very good advice, but it's still important to learn C and even some C++ IMO, but probably after Rust. Rust is not quite as low level as these two, so you'll learn some more about how computers work under the hood. You'll also learn WHY Rust is the way it is, and it's important here to learn Rust first because you'll translate good memory managements habits from Rust into good habits in C and C++. You'll also see how easy it is to mess up with C and even with C++ which will give you a better appreciation for Rust
Thank you this definitely helps, bc even though i see how javascript makes things work, and i see why people say it works, i wanted the why’s. Thanks looking forward for your videos.
Excellent video. The value of a Software Engineering degree is untangible My first language was Logo (the turtle) during the 80s. Then I continued with Basic, Turbo Pascal, then C and Borland C++.
Yes, to some degree understanding all the mechanics of what the computer is doing in memory management helps - but you don't need a CS degree to learn that. You can pick up any of these topics yourself. I did it by picking up the right books (well... we don't use books now - use websites and UA-cam).
They are great first languages. I, too, advocate for the possibility of python being a first language. But something like C/C++, even Pascal are gonna be one eventual (soon, near the beginning) necessity. And that's for no other reason than it exposes you to precisely those kinds of things as memory handling/management, semaphores, messages, interrupts, and a genuine manner by which to code your own data-structures such that you can see what is going on.
Excellent and relatable video. I had been mostly self-taught when I got my first real web dev job. After a couple of years I began learning Go. It made me a better dev in all the other languages I was using. I did end up getting a bachelor’s degree a few years later, but I really appreciate lower-level languages now… like you said, TS > JS. 😂
Hello friend, i noticed that your comment is pretty recent, so i’d like your perspective on my situation. I’m in HS right now and in 8 months i plan on going to a community college for a SWE degree. The course is 40 months and overall it costs of 40’000 pesos ( around 2000 dollars ). It’s very very cheap to get and i get 8 months cut off than the average 4 year course. Do you think it’s worth it? I know it’s not necessary to have a degree in my field but would the degree be a good rate of investment?
@fern-cx3bf In my humble opinion, if it does not put you into BIG debt, like it does in the US.. Yes. We have to keep in mind that "you don't need a degree to get a job anymore!🎉🕺🏼💃🏼" ..gets views.. Many companies, big and small, still prefer people who went through a structured university curriculum, learned CompSci basics AND(!) showed that they can learn and finish something! Don't take that fact too lightly! If you can afford it without going into detrimental debt, I would recommend to still get a degree in either Computer Science, or Software Engineering! It does much more for you than "..It doesn't hurt" Make friends(maybe rather learning-friends, nerdy-friends, "lets make some computer business-friends", than just the party-friends 😂), nurture those contacts(they might be very useful long-term friends and even maybe one day work somewhere and can recommend you for a job, if you are looking!) And.. try to really learn and use what you study in class, don't just panic- prepare for the exams 2 days before 😅 Try to do internships in what ever company in what ever at least somewhat IT/Programming related role, it will help you A TON later when applying for jobs! Thank me in 3 years and 4 months! 😊 (Yes, I wish I could tell younger Me some of those things... 😅)
I learned C, C++, and Assembly language in college, and fell in love with programming - No "web page" interactive widget feedback needed. I am so glad I did it that way. It's crazy to me how so many self-taught developers only know JavaScript or Python and have no idea how anything really works under the hood. And knowing other languages gives you an appreciation for why so many consider JS web development ecosystem a hot mess.
I’m self taught and can basically look at something and kinda dissect it down to its parts , then build off of it to learn. Yet, there’s concepts on the lower levels I bet would just allow me to see what I’m not seeing, or understand why things are the way they are.
my first programming language is Python, after learning this programming language, I just feel like I'm typing some english word, not programming. So I switch to C, and it like a new world, everything now have sense, I know the meaning of what am I doing, it's great experience. Even though everyone said that you don't need to learn much language, but I want to try other language some day.
I've been programming for 45 years. I've always been most interested in the nuts and bolts of these systems. For my first 20 years 90% of my programming was in assembler. So I came at this in the opposite direction that you did. I took computer science classes in college but anyone in this business should know that if you're in it for the long-haul you are always mostly self-taught. Almost everything I learned in a formal setting in college is now obsolete. I'm glad to see that you realize that understanding what goes on under the hood is very important. Btw, I hate Rust. I see no advantage to it. I predict it will quietly disappear.
@@johndoe-uo8nn I'll list a few. 1) Rust is almost unreadable. This is a problem especially today when most programmers seem to believe code documents itself. 2a) Hidden garbage collection in an embedded system is almost never needed and 2b) is not even appropriate for most limited resource machines. It's best to know exactly how much RAM is in use. This may not be as big a factor in a virtually unlimited resource machine, but I'd rather use Python there than Rust any day. 3) Rust is designed for idiot programmers who are prone to making amateurish mistakes. It's basically the nanny state in the computer language environment. 4) Rust tries to keep a good programmer from doing what he wants to do. He wastes time trying to work around that. Time is better spent elsewhere. 5) The way Rust allows (practically forces) you to use and reuse the same variable name is insane. It's easily abused. It adds to #1 above. (I'm not a fan of c++ polymorphism either.)
I’m only 42 years in programming now, and 100% agree about rust fading away to irrelevance. It’s all been tried before and failed miserably, for similar reasons. It will join a long list of “seemed like a great idea at the time” concepts that died out from an overdose of wishful thinking, whilst ignoring its obvious downsides. Good riddance
Interesting, I've self-taught Python the past few years and I haven't realized you allocated memory in lower languages still, I thought that was a thing of the past. Maybe it's time for me to finally pick up Rust
In Rust you don't have to manually allocate/deallocate memory, it has a unique approach that still will require you to get your hands dirty and know the concepts.
C is very fun to learn imo. I learnt it as a first language and it has served as a very good basis for learning other languages. It forces you to understand the way memory works, and how a program is really running under the hood. The issue with C is that memory leaks and bugs are very easy to write, because of the manual nature of C's memory management system. Looking forward to trying Rust!
C is better. (Imo, ofc) - Rust is a syntactic nightmare that can be avoided by following proper programming practices in C. The only thing Rust has that I wish C did is slightly better metaprogramming - but even so, it is worth not having it to not having to deal with Rust's attempt to make c++ style coding "safe"
It seems like a lot of people don’t think beyond std today so they write stuff that still uses arrays without length, pointers instead of slices and didn’t get that most people have a set of different life time memory allocators. I suggest taking a look at handmade hero it shows and teaches a lot of things.
I picked up 6502 Assembler at 12 years old (Commodore 64) and C at 18 years old (Amiga 500). If I hadn't done that then I wouldn't have built a career in IT. I look around me and I'm amazed at how most of my colleagues don't understand how computers work at a very basic level.
Fantastic video - looks like we took similar paths. it was exactly the heap/stack part in the rust book that inspired me to start my journey to fill the holes i always avoided :)
At uni I build my own language parser and compiler. That is where I learned so much. There is one downside though. As one kind of knows on an inimate level what goes on underneath makes very tempting to do optimizing where it doesn't make sense. The number of SO questions asking whether foreach() is faster than for() are a result of just this.
My first self taught language was C++ and that was accompanied with heaps and stacks. It was very frustrating Then I did a course in program design and algorithms (using Basic) Then Lingo Scripting for CD ROM Then Java JavaScript, HTML, CSS (When JavaScript was horrible) ActionScript 2 (when Flash finally became useful) ActionScript 3, asynchronous (Flex) JavaScript (When flash died) C# (Xamarin for hybrid mobile) Now I’m doing embedded Systems (IoT) …..understanding how computers actually functioned (stacks and heaps) and then algorithms and design forced me to become a better programmer Being self taught (and being abstract in my thinking) allowed me to get ahead of programmers with diplomas who had drilled into them what was ‘possible’ and what ‘wasn’t’
I am trying to be a self taught programmer, but I am failing. I have been trying to learn Java (at my friend's suggestion since Java is still pretty much used in IT) without any success. I was looking to get a job as a QA Engineer, so I thought I should step up my game. The main reason I keep failing over and over is because there are so many tutorials and videos on YT and everybody has a different style of explaining. Before you know it I am going down this infinite rabbit hole of youtube tutorials and learning platforms. At some poing I even dropped Java and started learning Python, because some tutorial told me that it's going to help me be a better QA Engineer one day... I've mastered neither of these two languages. After a year and a half I lost all motivation to learn anything at all.
I started as a hobby programmer with BASIC then C and then Assembly. Learning the lower level languages like Assembly can help you, but I would also recommend that you learn the basic data structures and algorithms. For example knowing about Binary Search Trees can help you understand why database indexes can be expensive (the trees need to be re-balanced for the inserts and updates and that can be costly).
To add to your point, it was only when I learnt about tcp/ip, the osi model, networking and HTTP more in depth that many javascript concepts clicked for me
No one ever talks about learning another low-level very fast language (as fast as C++): D. D (lang.) is super fast. But, not as fast as the forgotten language: Common Lisp. Common Lisp has been tested to be much faster than C++. As a matter of fact, Common Lisp has been tested to be the fastest language out of 88 tested languages for performance-1st place: Common Lisp; 2nd place: C++; and third place: D. Common Lisp can be used efficiently for AI development. And, Common Lisp is the only customizable language that I know of. But, it's never taught in schools. The same thing with D. D is more user-friendly, and quicker to learn than C++ and C. But I don't know why D is not replacing C++ in the large-scale software world. And D lang. is much faster than Rust, according to these benchmarks.
Benchmarks are misleading. It’s difficult to test what language performs better in every situation. A 2ms difference is not significant at all. Also Lisp is a functional language. In my view functional languages are fun to learn for a bit, but they can’t seriously replace C++. That’s a funny joke lol.
I am just starting out, my plan so far is to first take CS50P Python then CS50x. The idea of taking CS50x first seemed to much with it introducing multiple languages so i though learning python first would be an easier start. I think i was right. just learning python is plenty enough to start with. I look forward to your videos.
You have to know the base of CS to understand what's going on.... C ,C++ will make u so much better that u will start understanding more abstracted languages like python
One suggestion would be to make a roadmap style video covering the concepts that one should be aware of . Also I have a question , will learning Java help in covering the same concepts as C,C#,C++ or Rust ?
Probably C++ as an option if you want a lot more mixed bag that gives a lot in both directions. Getting into java would remove some steps to the eve higher level languages like JS. I dunno how useful it is downwards to be honest as there using not just objects as typical.
I found d this rief talk/discussion very informative... do you have e a bootcamp course Travis? I hope one day that this exists on your platform your content is always too the point and I appreciate your realistic incites and views as it keeps me grounded as as a self taught learner and enthusiast
Fantastic video Travis! The problem many self-taught devs face when we start learning what we don't know while not knowing what we don't know. It's a difficult paradox to trudge through, but going learning compsci fundamentals and going lower in abstraction layers will get us there.
Your videos are fantastic. You explain things very well. I've just become interested in development and I'm looking to go in the direction of Udemy courses. Your videos I believe will be helpful because they're preparing me for a journey that I have no idea about currently. The information you're providing is advising of how to go about it while ensuring that potential gaps are filled throughout the process which I think is soooo valuable. Thank You for taking the time to provide this info. Great quality as well.
Good content. I am a self-taught myself and noticed these holes long ago. Definitely recommend taking the time to learn the concepts. I would suggest you creating a curated list of must-read books for people in this situation. You have big reach with your followers, why not use that to create such a list for everyone? Videos are great, but books are the best to get deep in the concepts.
Sadly there are a lot of books out there that will teach stuff that is better to put in the trash bin. Especially a lot of graphics books leave a lot out to then let people create trash systems that are very bad designed.
Great content! How do you suggest going about filling the wholes with concepts? Videos or books? Also which concepts do you believe are the best to learn to improve one’s coding skills?
I learned C/C++, but C# and F# remains my favourite languages. They are very sophisticated and really introduced me to the world of coding. But I found a future in data science, and so I had to settle for the boring language we call Python
Hi Travis - I am 38yrs plus now & planning to switch career to IT. I checked your earlier video where you explained your life journey & it really inspiring & motivates me alot. I have 11 years on non IT job. But now decided to enter into IT field. I have been watching lots of similar content video. I don't know what to start and where to head to. I am thinking to learn python basics then do a course in data science & AI. Could you recommend me a roadmap please. Thanks in Advance! I am from India
I don't know if learning C first would have turned you away from programming. I learned FORTRAN first, then a multitude of assembler languages. I loved the low level stuff.
It’s amazing what is possible if you know memory layout and how instructions work and what a abi is. Recently found a amazing way todo better formating by implementing a va_arg with size instead of type.
The thing which you said in the video which is supplement with concepts this thing is being taught in Indian colleges where from we are 2nd year we are forced to learn Data Structures and Algorithm heavily
learning Rust to get a deeper understanding seems like good advice. only problem is that the Rust compiler is much more pedantic than C and C++, so next to learning about things like pointers, you would also have to learn other concepts at the same time like the borrow checker. it doesn't have to be a problem though, but it's something to consider. also, i don't agree calling languages "higher", for lacking static typing. this is usually a bad thing
They are considered highe in the level of how abstract they are. Using types and pointers makes it lower not in the sense of understanding but in the ability todo stuff.
@@platin2148 if you look at TypeScript or C#, then those have static type checking and lack pointers. but that doesn't mean that JavaScript is higher level, than those just because it lacks static type checking. static type checking is a separate issue
@@xybersurfer "A programming language is considered high-level if it is closer to a human language like English and low-level if it is closer to binary"
Newer developers need to know various data-structures and when/why to use them. I have seen many newer coders use a list/vector ect for everything when really the better thing would be to use a hasmap, or a b-tree. Even things like a linked list vs a queue vs a stack are really important to understand and the tradeoffs between them.
I like to take the knowledge gained from learning machine learning principles in python and then creating small applications in visual basic 6 to test my knowledge and to prove to myself that I truly know what I think I know. If that makes sense.
I started off self-taught then got an AS and BS. What I will say about college is that it forces you to learn boring things that you wouldn't otherwise and may be necessary (although they do it as slowly and expensively as possible). That's why I recommend self-paced schools like WGU, as it's the best of both worlds.
Funny enough I have similar story. Started with Python and I felt like monkey re-keying what i see on the screen. Couldn't get why I am doing it. After doing CS50 + computer science crash course (10 min videos on YT) it all clicked on fundamental level. And now I am tinkering with Rust just for fun.
I've started the self taught route and I'm doing CS50x and really taking the time to fully learn C programming, before moving on I am cross referencing and doing the free courses on Codeacademy for the topics CS50x is covering. My plan is to do that through and continue with CS50W and then CS50P. I plan on cross referencing the JS from CS50W with codeacademy/Udemy. Would this be a pretty good approach or should I take the time to learn C++ or C# maybe even RUST before JS?
Hey Travis, you helped me land my first job in tech with your advice "If it's not now then when... Be bold" I'm 33 years old and I'm doing good now after five years of struggle. Today I celebrate a month since I got in. From the bottom of my heart, thank you.
Hi Travis, what do you think about go lang? Even though it was not really a low level language since it was a garbage collected do you think it was worth to learn? I was really interested with it
Hey Travis, I am going through this exactly! I went from first learning SQL to Python to HTML and CSS. Then when I got to Java this week, nothing clicked! Especially Spring and Spring boot. I felt like before I was a sponge, being able to soak all of this knowledge and thought programming wasn't THAT hard but now since facing Java and it's frameworks, I now feel like a sponge with holes all over. Definitely demoralizing but at the same time, I have to remind myself that it's only been a week since learning Java and I need to slow down. I guess learning all of those markup languages and high level languages like Python in less than a month really made me think I can learn everything else the same way. A good reality check for sure!
Based on your learning track so far, these are low barrier-to-entry items but likely you've only skimmed the surface. Focusing on common concepts can help tie things together. Web frameworks tend to have similarities, it'll help lower the barrier for spring if you've spent time with flask or django. You're right about slowing down, or more-so slow down in order to speed up. You're probably trying to learn too much in parallel (syntax, logic, web framework concepts, spring-specific nuances, etc). If you're comfortable with Python, it may help to learn the concepts there first before going back to Java. By then your questions would be more like "how does springboot do XYZ? What does spring do better or worst than django/flask?".
I think it is different for different people. I tried C++ early on and didn't click, but JS did - now I don't really feel uncomfortable reading any programming language. I would have liked to learn C a bit earlier - there is a lot of FUD put out about C, but it is really a great language. I also find that some of the data structures etc are things you already will know intuitively after programming for awhile - for example Arrays in JS, despite being wrapped in a bunch of syntactic sugar, work much the same way as in C (you can even solve problems the same way as you do in C in JS )
You need real life experience with reference pointers and values in a large scale systems to understand from a practical perspective why it's important to know these things. Programming without a garbage collector is completely different then these high level languages that abstract everything out and lower the bar for entry level devs. I guess that's the point though.
THIS! Great and very important Video Travis! Well packed and hopefully not too scary but rather motivating to "go deeper" for the newbies of us, who start(ed) out with a loosely dynamically typed high level language! 🤘🏻🤘🏻💪🏻🤓
Is it still impactful if the abstracted language like python is used for data related work ? I mean data related work like wrangling, Etl, analytics typically does not go to low level memory tuning right…I could be wrong…just trying to understand…
Right. No problem here, continue with Python its a great language. But every now and then, learn some lower concepts or gradually take a lower level language course to get familiar with what's going on underneath. It's to supplement when those lower concepts surface and potentially leave you confused. TLDR: Its to make you more well-rounded, not really to point you away from where you are at now. Hope that helps. 🙂
@@TravisMedia thank you so much for your response. I totally agree with you. For example, in Spark where almost everything is abstracted, understanding lower level stuff would make for a reliable and optimised code...But the depth does look like the abyss rather than just a rabbit hole at least for me...but a goal we can strive for and worth the effort...
I do not understand UA-cam comments at all. Tried to give some advice for where to go to learn more and my comment is gone. There is a place that I think maybe caused a flag called teach yourself cs. It is something that will show you a lot of stuff for computer science after you get the job. And there is a algo course that has no expense on front end masters which will help get the first one.
I think YT flags it if there are links, etc. This comment made it through though. For anyone reading this go and google "teach yourself cs" to reference the resource that @connorskudlarek8598 mentioned here. Just checked it out and looks really helpful. Thanks for sharing it.
@@TravisMedia sounds good! For those interested, the resource is meant for people who already have experience and are looking to level up. Doesn't mean you can't look at it while still learning, but a lot of the benefit comes from already doing things and finding out the "why" and "how to do it better now."
I am a noob ,and It makes me feel stupid to keep failing at something basic like loops in python =*(. Imagine what is going to happened if I went to a low programming language!
I am self-taught since I was 9y. BASIC on C64 sister computer (plus4) then ASM (BASIC was sooo slow :), then C on Amiga and DOS, Stroustrup v1 C++, Eiffel, Erlang, Obj-C in NeXTSTEP, C#,JS,TS,Rust etc.. it is an awesome ride , so many projects :)
I'm self-taught as well. 15 years professionally now. No clue if I'm doing it right though, but I guess I am, clients are happy.
I once had a friend who constantly hopped between different programming languages, never really mastering any. He often shared grand plans about undertaking a major project, but within a week, he'd shift his focus to learning a new language. I pointed out to him that, despite the years that have passed, he hadn't really created anything substantial. I suggested that if he had dedicated himself to excelling in just one language, he would have made far more progress than he did learning the varied syntaxes of multiple languages.
Progress as you see it is overrated. I'm sure your friend learned a lot. Honestly when do you ever need to do everything start to finish? Most work is in filling out the gaps left by others and fixing bugs left by others :P
I did the opposite. I started with C, C++, then learned Python, did a whole bunch of Python while I was learning Rust, and now I use Python and Rust interchangeably depending on what I'm doing. Still, data structures and computer architecture are the absolute basis of knowledge when it comes to programming.
I’m at this exact point in my career. Glad to know I’m on the right path. I’ve learning C right now to learn more about pointers etc. I’m fine with switching to Rust to get the same result. Want to learn more about computer hardware as well
I'm now retired after 44 years of software development. I was lucky in that it was never a job for me, but a hobby that paid me a salary. I discovered your UA-cam channel on Rust/Slint and my inspiration gear kicked in again, so thank you! Your lesson here to self taught developers is a great one. Of course, even if we learned something in college to be able to get that job, this career is always self-taught, and I'm wagering it will be that way forever. The languages I have learned were made much easier because I learned much lower level languages first. Assembler taught me how Cobol worked, C taught me how VB worked, etc., etc. Another lesson I learned in college and found very valuable throughout my career is knowledge of the data you are processing. Poor data structure design will be reflected in your code, even if your code is pristine. For example, writing software to process an over-normalized database is a nightmare. Thank you again for the inspiration, I'm now a fan!
Thank YOU for sharing this!
Your comment about understanding your data just clicked for me. I'm just starting to learn software development/engineering and I wrote a simple script which operated correctly but because the input data file was structured oddly it caused the output to act weird.
I'm self taught. I started with the big blue C Primer book. I was working nights so during the day when I couldn't sleep I worked my way through the exercises. I think that's the key, just do programming exercises in a low level language till you internalize how it all works.
As a Junior Dev with a CS degree, one thing I've begun to appreciate is tutorials. I think structured tutorials are actually pretty underrated. I spend a lot of my time reading documentation on the job and applying what I read but, ultimately, I learn things haphazardly in the process. Having someone start from square one and walk you through a framework, or what have you, is so valuable in being able to piece together a bunch of half digested ideas you might have gained from just reading the docs and doing trial and error in an IDE.
thank you Travis, this is really valuable. I've been debating weather or not to learn a lower level language and now I think its the only way to really grow as a self taught developer its going to be tough but I'm sure so worth it at the end.
i highly advocate going lower. i started my journey by coding in python and js, and after learning some java fundamentals (which helped me learn typescript/es6 classes), i feel life my base is so much stronger.
I second this
I agree, but I also suggest trying to go higher-level too. So many Java programmers would benefit from learning Scala, and same for C# devs learning F#. You end up bringing more concisely expressive approaches back with you to your primary languages
When getting lower than *c/c++* e.g choosing *assembly* you would understand *c* even better. When the compiler constructs the function for yourself you don't really understand what those "calling conventions" like "__stdcall" really mean.
I started with js on ie 8 i think, i never liked it to be honest, i then wanted todo game programming so i learned how to use im opengl. That i did in conjunction with learning C style C++ (handemade hero), i then moved for some months up several layers doung web development with back then raw javascript, then i wanted to see how other frameworks in that field are so looked into angular and preact/react and then i moved back to C++ developing a software for a ofen/heating circuit and now i moved one level deeper to develop systems with a custom RTOS fully in C, and even that wasn’t enough to statisfy my curiosity i learned app development for ios platforms on the side, and in the mid of this path when working with js i also learned Verilog to program Fpga‘s that was a lot of fun. My current goal is getting into PCB and hardware development on the side of my main job working on automotive rtos systems.
Today’s code is still very much hmh style code and that is really nice to work with.
Learning how code looks and works on the processor level is really amazing today. Compiler Explorer is one the tools people should take a look at.
Thank you for affirming my thoughts. I recently graduated from a front-end BootCamp after getting into data analysis. What I realized is that I feel lost and stupid not knowing what's going on under the hood. Whenever I tell someone -- veteran or beginner -- that I want to learn a low-level language, they say that I don't, and that learning about data structures and algorithms is enough. While I plan to do that, I still can't be convinced that learning the basics from the ground up aren't essential, in every discipline, not just coding.
After this video, I made up my mind to learn Rust instead of C++ or GoLang, for now. Not sure if I should learn Typescript first, though.
you should learn whatever gets you where you want to be in 1-5 years. And be comfortable with the level of abstraction that you enjoy the most. Engineers are writing code everyday knowing only just enough above and below their chosen level of abstraction. It depends on what you're satisfied with. You don't necessarily need to know how V8 works to shipping fully functioning web products, but you could learn C++ and read their source code. Wants, needs, and curiosity are better drivers than fear.
Im starting my programming journey with CS50 and raw C programming. Im on week 4. I feel like i couldn't imagine a language that abstracts away simple thinfs like strings and pointers. I cant wait to start messing with JS and python later in the class.
I think you'll find the route you've chosen rewarding when you get to JS/Python.
@TravisMedia hopefully! Im having some trouble deciding what direction i want to go after CS50. I really love game development. But web dev sounds way more viable and lucrative
@@shawn14isme i told myself that a few years ago and here i am... not learning web because i dont want to(i know basic html and css + js) and neither making my games in unity because i'm stucked in my desicion...
@@shawn14isme many programmers don't really know what to do with their knowledge. There's not much ideas to implement, even if you have the idea there could be no motivation to progress the project. Getting money is more motivating for people to continue programming, sometimes you can't rely on yourself for getting motivation.
In Java for an example, everything except primitives is a pointer. Which if you think about it is kinda stupid and unnecessary. It is nice to explicitly know if your type is passed by value or by reference (pointer). Abstracting this away makes things in some way simpler but in some ways also more complicated, because now in Java you can accidentally modify an object passed to a function without thinking. And this concept of passing by value vs by reference is obscured to new developers starting from java for an example. As far as memory management goes I feel like C++ RAII is also better than garbage collection. I feel like some language that allows the low level control, manual memory management and wide set of features of C++ but with a more modern build system, package manager and with reflection, maybe even extention functions, and something like Kotlins scope changing functions, and less verbose syntax would probably be my ideal.
Thank you so very much for the invaluable insights. Exactly what I needed to hear at the perfect time. I was thinking I should get myself familiar with the low level concepts. Started with a high level, abstract programming language and now I need to pick up C++ or Java to dive into lower level implementation details.
I’m just beginning my self taught journey and have been learning C as my first language to understand the fundamentals - this is the motivation I needed to continue doing what I’m doing!
You can't go wrong with that...
I really enjoyed your DevOps content, It would be nice to see more concepts about operations / infrastructure ( cloud) and system administration.
Thank you for the suggestions. I'm planning more DevOps videos for 2024.
@@TravisMedia I'll be waiting for it! thanks
I've been learning bits and pieces about comptuer sciecne concepts when I can for about ~7 years now, not that I'm a programmer, I just like to know how things work, it's just amazing how it shows you new ways of thinking and structure your thought process. now that I'm seriously considering software development as a carear, I'm just learning the details of how to apply those concepts to write code (and I'm only fluent in C, lol)
I couldn't agree more.
00:00 🛠 Learning Rust introduces the concept of ownership, fundamental for memory management.
02:41 💡 Starting with abstracted languages like JavaScript or Python is common but may lead to knowledge gaps later.
04:18 📚 Supplement learning with computer science concepts like memory management and data structures.
05:27 🖥 Consider learning a lower-level language like C or Rust to understand deeper concepts and improve problem-solving skills.
06:34 📆 Plan for 2024 includes regular videos covering essential concepts for self-taught developers.
As a learner that started with cs50, I'm pretty proud of this. This makes me pretty easy to understand things.
How was cs50? Was it beneficial for you? Do you recommend it?
@@TravisMedia
Absolutely ☘☘
ua-cam.com/video/8mAITcNt710/v-deo.html
I heard someone say this at some point: Software engineers should understand at least two levels of abstraction above and below them.
I keep repeating it because it is so true!
I like it!
I‘d probably say go by what leads you down the tree. There are things that seem to be rock bottom but there are layers benefit just harder to break in. Like if you work already at instruction level (asm from whatever platform) the step beneath is hardware design while i would probably start with discrete logic and then move to software based hardware design fpga‘s..
I did the mistake of doing the opposite and that left me blank on the analog side.
Taught myself web dev and changed careers (JS/React), this year I'll be attempting to move into data analysis and focusing on Python. I'll also be picking up Rust, no rush, I'll be doing it slowly on the side just for fun to help expand my knowledge.
I had similar thoughts when I started learning programming. Surely it's not as easy as watching tutorials? If it was, devs won't be paid so much. So I felt I should challenge myself. After python I went to C#. I was a blast. I still use it today and it has made me learn a lot about concepts I won't have touched if i stayed with python only. Now when I write python, I even use type hints lol. I also got to know that there was ALOT i didn't know, there still is. But I'm glad, sort of. Thank you. I think going even lower with a language like rust will be helpful as well. I use C# more than python these days for backend stuff.
Thats awesome. I think we have a very similar story. I landed a job a few years ago at a C#/.NET shop. That was my first exposure to a "lower" language and it's one of my favorites to this day.
C# sharp is a high level language. Garbage collection is abstracted out. You rarely work with pointers unless you're working with unmanaged C++ code. I think I coded a bit mask a handful of times using C#. You have to go lower. Another thing is you need to learn math. All of these programming concepts are math. Functional programming is really functional math. Graph theory is used often when dealing with hierarchy's N levels deep.
@lee4547 It is, but it's much lower than where many self-taught devs start and stay at. A JavaScript developer will gain much insight by taking a short course and building a few things with C# ("a list and array isnt the same?")
I think with today's hardware you don't have to worry too much about the overhead of a generic list in C#. Why even use an array and deal with the resizing? You don't have that choice if you go with C. You need to learn how to resize dynamically, so the array is reusable after it's declared. Then they can learn how convenient a generic list is or even just a Generic in general for that matter and why a framework is necessary. I think understanding the math first and working your way up is probably the best way to learn IMO. It's not sexy but a formula is succulent and expresses clearly how it works. Code is verbose. You have great content btw! good job! @@TravisMedia
Thats good stuff. Love these convos that help people move forward!
4:54 What you said is 100% right but unfortunately, I come from a tier 3 college (India) and I learned most of the stuff from UA-cam and the internet. I recently watched a Netflix show called The Playlist (a web series based on Spotify like how they tackle their problems and are well-established as a music streaming company) where the core dev modified the network protocol to make Spotify fast. After seeing this I have realized I know nothing, though we studied the OSI model at college I think learning things by doing is the most appropriate way, we don't find the time when we do a job but on weekends I do want to learn stuff, and scale up. Can you please provide me a road map to improve?
I started coing in Python, then I started using JavaScript more for my job. I'm a self-directed learner also. Thanks for this this video. Learning a lower level langauge like Rust makes sense and I have found myself dabbling in it the past few months. I plan on dedicating more time to it.
I am self thought and for the last year I have been working on a game engine + game in C++ and it is the best decision I have ever made in my programming journey. I have found practical applications for that stuff that interviewers like to ask that I considered unimportant before like time complexity and data structures. I have actually come to enjoy CS fundamentals now.
I knew it when I was just 19 years old. But still I walked away from pointers towards Java. It the best language being platform independent.
I am learning c# right and I have had a way more pleasant experience in learning and understanding stuff than when I started python during my college days
If you can learn C++ everything else in every other language makes a lot more sense. Writing asynchronous code in C++ means I have a deeper understanding of async/await in C# or JavaScript.
Precisely. I started and stuck with C++ and every other language was just a matter of syntax. I was able to pick up TypeScript, Rust, Python, and C# quite easily. It would have been the same with Java, if I had wanted to.
Had I come from any other languages, I would have had a harder time, especially with Rust. Had I started with Rust, it would have been almost as complex as C++. But after you spend your fair amount struggling with C++😂, then you're good, bro. You can pick up everything else.
❤❤❤@@theintjengineer
I am learning javascript, should I switch then'
@@TheMrblaster2012 No! Keep learning, stay focused and stop finding ways to totaly destroy your progress (like jumping to new thing every week without learning anything). Its not so much important what the first language is AS it is important to make it from start to end.
@@jsonkody thanks I'll keep it in mind
Very valuable video. I am somewhere in place you described. I've already grasped some more low level concepts, playing with Golang, sometimes with algorithms and data structs (e.g. recently I had week with binary trees). It doesn't necessarily have direct impact on my frontend developer carrier. However, I think it has implicit impact, I have feeling like I grew as a developer, generally.
Very good advice, but it's still important to learn C and even some C++ IMO, but probably after Rust. Rust is not quite as low level as these two, so you'll learn some more about how computers work under the hood. You'll also learn WHY Rust is the way it is, and it's important here to learn Rust first because you'll translate good memory managements habits from Rust into good habits in C and C++. You'll also see how easy it is to mess up with C and even with C++ which will give you a better appreciation for Rust
Even C# developers must understand in depth the difference between the stack and the heap. Less so with JVM, but still important.
Thank you this definitely helps, bc even though i see how javascript makes things work, and i see why people say it works, i wanted the why’s. Thanks looking forward for your videos.
Excellent video.
The value of a Software Engineering degree is untangible
My first language was Logo (the turtle) during the 80s.
Then I continued with Basic, Turbo Pascal, then C and Borland C++.
Yes, to some degree understanding all the mechanics of what the computer is doing in memory management helps - but you don't need a CS degree to learn that. You can pick up any of these topics yourself. I did it by picking up the right books (well... we don't use books now - use websites and UA-cam).
Wow amazing video! This is a great video idea to release and super helpful for people too.
They are great first languages. I, too, advocate for the possibility of python being a first language.
But something like C/C++, even Pascal are gonna be one eventual (soon, near the beginning) necessity. And that's for no other reason than it exposes you to precisely those kinds of things as memory handling/management, semaphores, messages, interrupts, and a genuine manner by which to code your own data-structures such that you can see what is going on.
I think the first language should be something strongly typed to not get to frustrated if you can’t figure out why something gives you wrong answers.
Excellent and relatable video. I had been mostly self-taught when I got my first real web dev job. After a couple of years I began learning Go. It made me a better dev in all the other languages I was using. I did end up getting a bachelor’s degree a few years later, but I really appreciate lower-level languages now… like you said, TS > JS. 😂
Go is another good one!
Hello friend, i noticed that your comment is pretty recent, so i’d like your perspective on my situation. I’m in HS right now and in 8 months i plan on going to a community college for a SWE degree. The course is 40 months and overall it costs of 40’000 pesos ( around 2000 dollars ). It’s very very cheap to get and i get 8 months cut off than the average 4 year course. Do you think it’s worth it? I know it’s not necessary to have a degree in my field but would the degree be a good rate of investment?
@fern-cx3bf
In my humble opinion, if it does not put you into BIG debt, like it does in the US.. Yes.
We have to keep in mind that "you don't need a degree to get a job anymore!🎉🕺🏼💃🏼" ..gets views..
Many companies, big and small, still prefer people who went through a structured university curriculum, learned CompSci basics AND(!) showed that they can learn and finish something! Don't take that fact too lightly!
If you can afford it without going into detrimental debt, I would recommend to still get a degree in either Computer Science, or Software Engineering!
It does much more for you than "..It doesn't hurt"
Make friends(maybe rather learning-friends, nerdy-friends, "lets make some computer business-friends", than just the party-friends 😂), nurture those contacts(they might be very useful long-term friends and even maybe one day work somewhere and can recommend you for a job, if you are looking!)
And.. try to really learn and use what you study in class, don't just panic- prepare for the exams 2 days before 😅
Try to do internships in what ever company in what ever at least somewhat IT/Programming related role, it will help you A TON later when applying for jobs!
Thank me in 3 years and 4 months! 😊
(Yes, I wish I could tell younger Me some of those things... 😅)
@@fern-cx3bf.
I learned C, C++, and Assembly language in college, and fell in love with programming - No "web page" interactive widget feedback needed. I am so glad I did it that way. It's crazy to me how so many self-taught developers only know JavaScript or Python and have no idea how anything really works under the hood. And knowing other languages gives you an appreciation for why so many consider JS web development ecosystem a hot mess.
I’m self taught and can basically look at something and kinda dissect it down to its parts , then build off of it to learn. Yet, there’s concepts on the lower levels I bet would just allow me to see what I’m not seeing, or understand why things are the way they are.
my first programming language is Python, after learning this programming language, I just feel like I'm typing some english word, not programming. So I switch to C, and it like a new world, everything now have sense, I know the meaning of what am I doing, it's great experience. Even though everyone said that you don't need to learn much language, but I want to try other language some day.
10/10 content you really are helping on a massive scale thanks so much
I've been programming for 45 years. I've always been most interested in the nuts and bolts of these systems. For my first 20 years 90% of my programming was in assembler. So I came at this in the opposite direction that you did. I took computer science classes in college but anyone in this business should know that if you're in it for the long-haul you are always mostly self-taught. Almost everything I learned in a formal setting in college is now obsolete. I'm glad to see that you realize that understanding what goes on under the hood is very important. Btw, I hate Rust. I see no advantage to it. I predict it will quietly disappear.
I'm curious to know more? Please tell :)
That's what they said (quietly disappear)about js and php but they're still going strong
but Russinovich (sic!) says the opposite. what is your contrarguments?
@@johndoe-uo8nn I'll list a few. 1) Rust is almost unreadable. This is a problem especially today when most programmers seem to believe code documents itself. 2a) Hidden garbage collection in an embedded system is almost never needed and 2b) is not even appropriate for most limited resource machines. It's best to know exactly how much RAM is in use. This may not be as big a factor in a virtually unlimited resource machine, but I'd rather use Python there than Rust any day. 3) Rust is designed for idiot programmers who are prone to making amateurish mistakes. It's basically the nanny state in the computer language environment. 4) Rust tries to keep a good programmer from doing what he wants to do. He wastes time trying to work around that. Time is better spent elsewhere. 5) The way Rust allows (practically forces) you to use and reuse the same variable name is insane. It's easily abused. It adds to #1 above. (I'm not a fan of c++ polymorphism either.)
I’m only 42 years in programming now, and 100% agree about rust fading away to irrelevance.
It’s all been tried before and failed miserably, for similar reasons.
It will join a long list of “seemed like a great idea at the time” concepts that died out from an overdose of wishful thinking, whilst ignoring its obvious downsides.
Good riddance
Interesting, I've self-taught Python the past few years and I haven't realized you allocated memory in lower languages still, I thought that was a thing of the past. Maybe it's time for me to finally pick up Rust
In Rust you don't have to manually allocate/deallocate memory, it has a unique approach that still will require you to get your hands dirty and know the concepts.
@@TravisMedia Right poorly worded from me haha, exactly for those points I want to get into that. Thanks!
Probably better to get into C++ to really get the gist..
C is very fun to learn imo. I learnt it as a first language and it has served as a very good basis for learning other languages. It forces you to understand the way memory works, and how a program is really running under the hood.
The issue with C is that memory leaks and bugs are very easy to write, because of the manual nature of C's memory management system.
Looking forward to trying Rust!
C is better. (Imo, ofc) - Rust is a syntactic nightmare that can be avoided by following proper programming practices in C. The only thing Rust has that I wish C did is slightly better metaprogramming - but even so, it is worth not having it to not having to deal with Rust's attempt to make c++ style coding "safe"
It seems like a lot of people don’t think beyond std today so they write stuff that still uses arrays without length, pointers instead of slices and didn’t get that most people have a set of different life time memory allocators. I suggest taking a look at handmade hero it shows and teaches a lot of things.
I picked up 6502 Assembler at 12 years old (Commodore 64) and C at 18 years old (Amiga 500). If I hadn't done that then I wouldn't have built a career in IT. I look around me and I'm amazed at how most of my colleagues don't understand how computers work at a very basic level.
Fantastic video - looks like we took similar paths. it was exactly the heap/stack part in the rust book that inspired me to start my journey to fill the holes i always avoided :)
Interesting!
At uni I build my own language parser and compiler. That is where I learned so much. There is one downside though. As one kind of knows on an inimate level what goes on underneath makes very tempting to do optimizing where it doesn't make sense. The number of SO questions asking whether foreach() is faster than for() are a result of just this.
My first self taught language was C++ and that was accompanied with heaps and stacks. It was very frustrating
Then I did a course in program design and algorithms (using Basic)
Then Lingo Scripting for CD ROM
Then Java
JavaScript, HTML, CSS (When JavaScript was horrible)
ActionScript 2 (when Flash finally became useful)
ActionScript 3, asynchronous (Flex)
JavaScript (When flash died)
C# (Xamarin for hybrid mobile)
Now I’m doing embedded Systems (IoT)
…..understanding how computers actually functioned (stacks and heaps) and then algorithms and design forced me to become a better programmer
Being self taught (and being abstract in my thinking) allowed me to get ahead of programmers with diplomas who had drilled into them what was ‘possible’ and what ‘wasn’t’
I am trying to be a self taught programmer, but I am failing. I have been trying to learn Java (at my friend's suggestion since Java is still pretty much used in IT) without any success. I was looking to get a job as a QA Engineer, so I thought I should step up my game.
The main reason I keep failing over and over is because there are so many tutorials and videos on YT and everybody has a different style of explaining. Before you know it I am going down this infinite rabbit hole of youtube tutorials and learning platforms. At some poing I even dropped Java and started learning Python, because some tutorial told me that it's going to help me be a better QA Engineer one day... I've mastered neither of these two languages. After a year and a half I lost all motivation to learn anything at all.
This is what am currently doing.
Thanks for sharing ❤
I started as a hobby programmer with BASIC then C and then Assembly. Learning the lower level languages like Assembly can help you, but I would also recommend that you learn the basic data structures and algorithms. For example knowing about Binary Search Trees can help you understand why database indexes can be expensive (the trees need to be re-balanced for the inserts and updates and that can be costly).
To add to your point, it was only when I learnt about tcp/ip, the osi model, networking and HTTP more in depth that many javascript concepts clicked for me
💯
Waiting your concept videos!
Amazing video, looking forward to see your future concept videos
No one ever talks about learning another low-level very fast language (as fast as C++): D. D (lang.) is super fast. But, not as fast as the forgotten language: Common Lisp. Common Lisp has been tested to be much faster than C++. As a matter of fact, Common Lisp has been tested to be the fastest language out of 88 tested languages for performance-1st place: Common Lisp; 2nd place: C++; and third place: D. Common Lisp can be used efficiently for AI development. And, Common Lisp is the only customizable language that I know of. But, it's never taught in schools. The same thing with D. D is more user-friendly, and quicker to learn than C++ and C. But I don't know why D is not replacing C++ in the large-scale software world. And D lang. is much faster than Rust, according to these benchmarks.
Benchmarks are misleading. It’s difficult to test what language performs better in every situation. A 2ms difference is not significant at all.
Also Lisp is a functional language. In my view functional languages are fun to learn for a bit, but they can’t seriously replace C++. That’s a funny joke lol.
I am just starting out, my plan so far is to first take CS50P Python then CS50x. The idea of taking CS50x first seemed to much with it introducing multiple languages so i though learning python first would be an easier start. I think i was right. just learning python is plenty enough to start with. I look forward to your videos.
Sounds like a great plan.
A lot of people bad-talk University Computer Science education, but you learn things there that help you if you want to be more than a code monkey.
Thank you for this informative video ! I have to admit that I struggle with design patterns in general
I got a course off of udemy on data structures and I've been enjoying it. Not at all boring to me 🤓
You have to know the base of CS to understand what's going on.... C ,C++ will make u so much better that u will start understanding more abstracted languages like python
I am doomed then because I have been learning JS for a while so I'd have to switch to one those languages to get a better understanding of CS :c?
One suggestion would be to make a roadmap style video covering the concepts that one should be aware of . Also I have a question , will learning Java help in covering the same concepts as C,C#,C++ or Rust ?
Wish I could comment on Java but its a language I really have not used much. But it would be similar to C# and would be beneficial for sure.
It's object oriented language so it would cover same concepts, of course there could be differences.
Probably C++ as an option if you want a lot more mixed bag that gives a lot in both directions. Getting into java would remove some steps to the eve higher level languages like JS. I dunno how useful it is downwards to be honest as there using not just objects as typical.
I found d this rief talk/discussion very informative... do you have e a bootcamp course Travis? I hope one day that this exists on your platform your content is always too the point and I appreciate your realistic incites and views as it keeps me grounded as as a self taught learner and enthusiast
Fantastic video Travis!
The problem many self-taught devs face when we start learning what we don't know while not knowing what we don't know.
It's a difficult paradox to trudge through, but going learning compsci fundamentals and going lower in abstraction layers will get us there.
I think hackathons and tech meetups are great places to meet mentors or learn how the industries work
Thanks for the Tweet inspiration and talking point. Looking forward to the content you're current planning...
Amazing Travis. I'm self-taught...I like to learn from books and videos. But in the futureI intend to pursue a degree.
Your videos are fantastic. You explain things very well. I've just become interested in development and I'm looking to go in the direction of Udemy courses. Your videos I believe will be helpful because they're preparing me for a journey that I have no idea about currently. The information you're providing is advising of how to go about it while ensuring that potential gaps are filled throughout the process which I think is soooo valuable. Thank You for taking the time to provide this info. Great quality as well.
Good content. I am a self-taught myself and noticed these holes long ago. Definitely recommend taking the time to learn the concepts. I would suggest you creating a curated list of must-read books for people in this situation. You have big reach with your followers, why not use that to create such a list for everyone? Videos are great, but books are the best to get deep in the concepts.
I think that's a good idea.
that would be great actually
Sadly there are a lot of books out there that will teach stuff that is better to put in the trash bin. Especially a lot of graphics books leave a lot out to then let people create trash systems that are very bad designed.
Great content! How do you suggest going about filling the wholes with concepts? Videos or books? Also which concepts do you believe are the best to learn to improve one’s coding skills?
I learned C/C++, but C# and F# remains my favourite languages. They are very sophisticated and really introduced me to the world of coding.
But I found a future in data science, and so I had to settle for the boring language we call Python
This here is the holy grail... thank you for sharing.
Hi Travis - I am 38yrs plus now & planning to switch career to IT. I checked your earlier video where you explained your life journey & it really inspiring & motivates me alot. I have 11 years on non IT job. But now decided to enter into IT field. I have been watching lots of similar content video. I don't know what to start and where to head to. I am thinking to learn python basics then do a course in data science & AI. Could you recommend me a roadmap please. Thanks in Advance! I am from India
I don't know if learning C first would have turned you away from programming. I learned FORTRAN first, then a multitude of assembler languages. I loved the low level stuff.
It’s amazing what is possible if you know memory layout and how instructions work and what a abi is. Recently found a amazing way todo better formating by implementing a va_arg with size instead of type.
The thing which you said in the video which is supplement with concepts this thing is being taught in Indian colleges where from we are 2nd year we are forced to learn Data Structures and Algorithm heavily
learning Rust to get a deeper understanding seems like good advice. only problem is that the Rust compiler is much more pedantic than C and C++, so next to learning about things like pointers, you would also have to learn other concepts at the same time like the borrow checker. it doesn't have to be a problem though, but it's something to consider. also, i don't agree calling languages "higher", for lacking static typing. this is usually a bad thing
They are considered highe in the level of how abstract they are. Using types and pointers makes it lower not in the sense of understanding but in the ability todo stuff.
@@platin2148 if you look at TypeScript or C#, then those have static type checking and lack pointers. but that doesn't mean that JavaScript is higher level, than those just because it lacks static type checking. static type checking is a separate issue
@@xybersurfer "A programming language is considered high-level if it is closer to a human language like English and low-level if it is closer to binary"
@@platin2148 ok. but, what does that have to do with static type checking?
Yes, do videos on lower level stuff, really excited for that
Newer developers need to know various data-structures and when/why to use them. I have seen many newer coders use a list/vector ect for everything when really the better thing would be to use a hasmap, or a b-tree. Even things like a linked list vs a queue vs a stack are really important to understand and the tradeoffs between them.
Aren't queues and stacks implemented using linked lists?
I like to take the knowledge gained from learning machine learning principles in python and then creating small applications in visual basic 6 to test my knowledge and to prove to myself that I truly know what I think I know. If that makes sense.
Thanks for this amazing video. Where can we find these videos about concepts for self-thought developers?
I started off self-taught then got an AS and BS. What I will say about college is that it forces you to learn boring things that you wouldn't otherwise and may be necessary (although they do it as slowly and expensively as possible). That's why I recommend self-paced schools like WGU, as it's the best of both worlds.
WGU Baby!!!!!
That little blurb, right there, that got a 👍, thank you for being a creator!
I really appreciate this video. Thank you.
Funny enough I have similar story. Started with Python and I felt like monkey re-keying what i see on the screen. Couldn't get why I am doing it. After doing CS50 + computer science crash course (10 min videos on YT) it all clicked on fundamental level. And now I am tinkering with Rust just for fun.
I've started the self taught route and I'm doing CS50x and really taking the time to fully learn C programming, before moving on I am cross referencing and doing the free courses on Codeacademy for the topics CS50x is covering. My plan is to do that through and continue with CS50W and then CS50P. I plan on cross referencing the JS from CS50W with codeacademy/Udemy. Would this be a pretty good approach or should I take the time to learn C++ or C# maybe even RUST before JS?
Looking forward to the 2024 videos!
self taught, and I started in Z-80 assembly and C. I learned data structures and algorithms before I started. not all self taught start at high level.
C# seems to be a fantastic language!
it is bro
Its one of the very best. It's popular yet underrated.
Yeah lots of concepts to a kitchen sink level. Extremely abstract.
Hey Travis, you helped me land my first job in tech with your advice "If it's not now then when... Be bold" I'm 33 years old and I'm doing good now after five years of struggle. Today I celebrate a month since I got in. From the bottom of my heart, thank you.
That’s awesome, congrats!!
Good job🎉 I'm trying to learn by myself but it's hard as I have adhd , what language did you start first and how did you learn
Hi Travis, what do you think about go lang? Even though it was not really a low level language since it was a garbage collected do you think it was worth to learn? I was really interested with it
Hey Travis, I am going through this exactly! I went from first learning SQL to Python to HTML and CSS. Then when I got to Java this week, nothing clicked! Especially Spring and Spring boot. I felt like before I was a sponge, being able to soak all of this knowledge and thought programming wasn't THAT hard but now since facing Java and it's frameworks, I now feel like a sponge with holes all over. Definitely demoralizing but at the same time, I have to remind myself that it's only been a week since learning Java and I need to slow down. I guess learning all of those markup languages and high level languages like Python in less than a month really made me think I can learn everything else the same way. A good reality check for sure!
Based on your learning track so far, these are low barrier-to-entry items but likely you've only skimmed the surface. Focusing on common concepts can help tie things together. Web frameworks tend to have similarities, it'll help lower the barrier for spring if you've spent time with flask or django. You're right about slowing down, or more-so slow down in order to speed up. You're probably trying to learn too much in parallel (syntax, logic, web framework concepts, spring-specific nuances, etc). If you're comfortable with Python, it may help to learn the concepts there first before going back to Java. By then your questions would be more like "how does springboot do XYZ? What does spring do better or worst than django/flask?".
I think it is different for different people. I tried C++ early on and didn't click, but JS did - now I don't really feel uncomfortable reading any programming language. I would have liked to learn C a bit earlier - there is a lot of FUD put out about C, but it is really a great language. I also find that some of the data structures etc are things you already will know intuitively after programming for awhile - for example Arrays in JS, despite being wrapped in a bunch of syntactic sugar, work much the same way as in C (you can even solve problems the same way as you do in C in JS )
You need real life experience with reference pointers and values in a large scale systems to understand from a practical perspective why it's important to know these things. Programming without a garbage collector is completely different then these high level languages that abstract everything out and lower the bar for entry level devs. I guess that's the point though.
THIS! Great and very important Video Travis! Well packed and hopefully not too scary but rather motivating to "go deeper" for the newbies of us, who start(ed) out with a loosely dynamically typed high level language! 🤘🏻🤘🏻💪🏻🤓
For self taught I think cs50 is a must , because you learn C and how memory works!!
Yes! Just watching those lectures alone I think would be of benefit.
I started with JS and have just started learning Go. Does that fit would you’re talking about here? It uses structs and pointers etc
Hi, looking forward!
Is it still impactful if the abstracted language like python is used for data related work ? I mean data related work like wrangling, Etl, analytics typically does not go to low level memory tuning right…I could be wrong…just trying to understand…
Right. No problem here, continue with Python its a great language. But every now and then, learn some lower concepts or gradually take a lower level language course to get familiar with what's going on underneath. It's to supplement when those lower concepts surface and potentially leave you confused. TLDR: Its to make you more well-rounded, not really to point you away from where you are at now. Hope that helps. 🙂
@@TravisMedia thank you so much for your response. I totally agree with you. For example, in Spark where almost everything is abstracted, understanding lower level stuff would make for a reliable and optimised code...But the depth does look like the abyss rather than just a rabbit hole at least for me...but a goal we can strive for and worth the effort...
Self taught programmer since 2021, still continueing to grill on JS and react.. 😮. What long journey?
I do not understand UA-cam comments at all. Tried to give some advice for where to go to learn more and my comment is gone.
There is a place that I think maybe caused a flag called teach yourself cs. It is something that will show you a lot of stuff for computer science after you get the job. And there is a algo course that has no expense on front end masters which will help get the first one.
I think YT flags it if there are links, etc. This comment made it through though. For anyone reading this go and google "teach yourself cs" to reference the resource that @connorskudlarek8598 mentioned here. Just checked it out and looks really helpful. Thanks for sharing it.
@@TravisMedia sounds good!
For those interested, the resource is meant for people who already have experience and are looking to level up.
Doesn't mean you can't look at it while still learning, but a lot of the benefit comes from already doing things and finding out the "why" and "how to do it better now."
hey man this video earned you a new subscriber!
after self taught learning web dev (still a noob) im learning linux and using bash terminal as my primary driver now
Can you prepare and upload the content for must know networking for developers.
I am a noob ,and It makes me feel stupid to keep failing at something basic like loops in python =*(. Imagine what is going to happened if I went to a low programming language!