@@vitalyl1327 in 20 years I have seen no correlation between educated and (experienced) self taught developers and their abilities. An education is a good place to start and will help point you in the right direction, but self taught developers often have a passion that has led them to become developers.
Yeah, I take issue with him calling CS majors "traditional programmers". Actual traditional programmers read through the manuals and learned to code that way. There were no Computer Science degrees back then. Every contributor to the field back then had degrees in engineering or mathematics. No one was holding your hand to teach you anything.
there is lots of bad colleges, most likely you picked one. Smart college is a huge advantage, but the smart colleges are also picky on choosing students. Like attracts like, sorry
@@WojciechowskaAnna Couldn't be any more wrong, all colleges are a massive scam to give you student loan debt. I went to a good reviewed university and most of the professors were terrible and only focused on giving a rubric to follow, never really taught anything. Most professors don't really care about teaching the material they just want a paycheck at the end of the day. Rarely you'll get professors that actually care but its very random. However "smart colleges" do not exist even people graduate from said "smart colleges" aren't even knowledgeable to begin with its all about just paying more and being scammed into thinking if I graduate here I'll have a better chance at landing a job which degrees are meaningless.
most likely you work with easy business software, without going through architecture design, database design, any threading thuncionality or actual math. Good universities and CS prepare students for that. Most business development is however very easy text processing without any requirement for correctness or preformance. For this kid of job - very little education is required. It similar to being an engineer and getting hired for a simple construction work - where no phycis model derivation is ever required, just hammer and dirller skills.
I have a CS degree and manage an engineering team at a top tech firm. Anyone who thinks that non-traditional developers are somehow lesser or "need to be purged" is naive (to be overly generous) and more likely just arrogant to the point of being a detriment to their team. Having people with diverse backgrounds (e.g. chemical engineering, geology, finance, etc.) adds perspectives to technical problem solving that results in better overall solutions.
@@willneve That's my case, and tbh I haven't really had a problem with it yet. There are companies that will only hire people with a degree, but considering that it's fairly widely recognized that universities unfortunately don't do a tremendously good job of preparing software developers I figure more fool them.
@@willneveMy typical role is Chief Architect at organizations that build sophisticated Service-Oriented Architectures in FinTech, banking, payments, fraud detection, ML, etc. My specialty is in 0-1 projects, and un-f@#$%ing technical debt, monoliths, and spaghetti code, using world-class code generation and automation techniques. Among many roles I’ve had, a previous role was the Software Architect overseeing both the Commerce and Payments platforms at Sony PlayStation, processing billions of dollars a year. My current company builds software ventures. So not just one start-up, which is hard enough, but multiple start-up as a commodity. The gentleman above is right: it’s not what you were spoon fed in college… it’s the knowledge and discipline you learn on the job. You’ve either got it, or you don’t. I have no degree at all.
Very refreshing to read all these comments. I am 87 and started coding/learning computing in the 50’s using machine code, assembler, pseudo code, cobol. What I am learning here is that the greater mass of interested and active people in the coding business are following a strong discipline. It was the Wild West in my day and a wonder anything functioned properly at all. Congrats from me to all readers here. Keep learning. Do it as simply as possible. Remember some poor guys and gals have to fix your work some day. Have great and interesting careers. Well done getting this far. Keep going and enjoy. BTW when I first visited the Central library in Scotland for a book about computing they had nothing. NOTHING.
I agree! I see a lot of people (myself included) way overcomplicate things for no good reason. It's always really inspiring for me to read about the beginnings of computers... there was some ingenious stuff (like the old fully electromechanical TTYs), but a lot of those early innovations were just regular people coming up with clever workarounds.
@@torf1746 "like the old fully electromechanical TTYs" I was a mechanic (?) on the IBM 407 Accounting Machine. Fully electromechanical; it was a BEAST. IBM called such person's "CE" (Customer Engineer) but being in the Navy I wasn't titled CE. But that's what I was doing. Training? OJT: On the Job training combined with excellent documentation and proper tools.
My mentor at my first job after completing my BS in CS was a self taught developer who dropped out of high school and was 21 years old lol self taught devs are some of the smartest people out there.
A VERY ancient senior developer here, so ancient that there was almost no formal education like the modern CS courses available when I started, except for in some obscure mathematics departments! Having interviewed, hired, fired and mentored many graduate & non-grad developers in different settings, I can confirm that all your points are important. But also several personal qualities are beneficial if you want to both become an effective software engineer and enjoy the journey. These have little to do with coding or even design techniques and a lot to do with being prepared to cultivate skills like careful listening, humility, patience and persistence. Not to mention the ability to tolerate being in a state of confusion for way longer than is comfortable - sometimes that’s the only way to reach a state of clarity.
lol, yeah, when all that COBOL stuff still running the world was made CS degrees didn't even exist. i always cringe when I have to IT archeology COBOL stuff and reengineer it. that's systems doing their job for 7ß+ years in super stable high performance environs. Like flight booking, money transfers or container management of ships. Stuff that moves crazy amounts of trillions of USD.
What you describe are signs of INEXPERIENCED developers. Period! I’ve seen CS grads do all five of them, and then some! As a computer scientist, turned developer, I’ve taught students at the university but also on the job as a dev. Most go on to become good experienced developers, while some never do, degree or no degree.
I agree, with one caveat, specifically on point #3 - a good degree will usually select languages not just to teach the language, but also to reenforce concepts for example a functional language may be taught to improve comfort with recursion and immutability. There is nothing stopping a self-taught engineer from building their own learning path to cover the same ground, but a CS grad (on a well balanced degree) is forced to cover this ground.
Yeah I'd personally say 1 and 3 make sense because school is supposed to teach you concepts regardless of language and engineering focused schools will introduce you to the idea of requirements and thinking about design before starting. For that reason I'd say 1 is the big one (although in large classes with mediocre teachers it often does just turn into get something to work.. But a proper software eng. class should at least get you thinking about planning it out first though and expose you to industry tools or concepts to do so) But 2, 4, and 5 are just misc skills that schools won't teach. If you get a good professor you will get critiques (instead of just checking that it works) but never has a professor told me my commit was too big (if they even care if you use VC in the first place) and no one in an acedemic setting gonna tell you you're working on too much at once lol. Maybe you'll get exposed to this in group projects or senior design but it's doubtful it'd be an important part of any curriculum.
same, often. In every place I've worked. Frankly I find the self-taught variety are more willing (and able) to learn and have a better perspective than the walking textbook types. The textbook types have some very clever knowledge, but don't know when to use it. They also tend to impose things that make project development pace grind down. I tend to like people who can make systems, but then actually use them / make tools. You figure out the pain points of certain methodology very quickly.
Graduates pretty much can't be trusted, but IT graduates are probably the worst of the bunch. Either way, people thinking they're engineers when they really aren't is a problem, as is dismissing the importance of and difficulty in achieving high quality in software systems.
@@absent72 I agree, and as for the term "traditional developer", well, when I started, almost all developers where self taught to some degree and even today I would say that a developer that spends time learning on their own (preferably on top of an education) is usually a better developer than one that only comes with school knowledge. Most schools still teach a sort of optimistic coding that might work for a green field project or for small projects, but once it grows you need to be able to go of the path and account for reality ;)
Why people hate non college grads, is because they paid ~200k for a degree and you make pretty much the same as them. It is partially Envy, and jealousy I think.
Also the fact they need to be forced by their debt to learn something when self taught people either are extremely passionate about their field or have extreme discipline to make themselves learn something new and hard, which makes them overall better workers, because when you are self taught, the learning part never really ends
Self/taught devs have a demonstrated track record of teaching themselves and (often) working with others to get a better understanding of those concepts. A college grad has demonstrated personal management under a timeline, but has been fed everything in an organized way. There are pros and cons to both, but I usually see self-taught engineers rocket to success early on and continue learning more complex concepts as they need them. Many times, I’ve seen college grads basically freeze when given tasks they don’t already understand all the concepts for, since they’re typically less familiar with how to research things on their own and communicate with others to learn concepts in an unstructured way. College grads do, however, have the right initial exposure to supportive concepts like Computational Complexity… but I also usually find that just informing a self-taught dev of this concept results in a complete understanding within a few weeks of side-research. In the end, neither approach is wrong. A college grad with the right attitude and focus on growth does very well and a self-taught dev with the right curiosity and drive does well also. [edit: a typo and some grammar]
Sunk cost fallacy as well. Subconsciously they feel as though all that money would be wasted if they didn't have to do it that way. So naturally, they feel that everyone must do it that way too, or they made the wrong choice.
Well, this kind of people will never work in, say, finance, so they have no chance of getting their minds violated irreversibly by the certain APL descendants that are so popular im algo-trading.
Yeah, paradigms can be different and using a language effectively isn't a matter of syntax. Doing things in Java then copying over that code to rust can make the rust code suck, but redo it in the rust way and it'll work well. I guess basic syntax can for sure be understood, but the way you use a language definitely differs
Matlab: you like ()'s? Lets use them for arrays and functions. I'm sure nothing can go wrong. SAS: You want a loop, you are going to have to pay for it.
01:25 🤔 Inexperienced developers often focus solely on making code work, neglecting essential pre-coding observations and considerations for maintainability and scalability. 02:29 🔄 Large, unorganized code changes in pull requests can lead to confusion and difficulty in diagnosing problems. Commit often, test each commit, and keep pull requests focused on cohesive features. 04:35 📚 Constantly learning new languages or frameworks may hinder true understanding of programming concepts. Focus on mastering core concepts rather than accumulating superficial knowledge. 06:10 🚥 Working on too many tasks simultaneously can compromise efficiency and depth of understanding. Prioritize tasks, complete them one at a time, and avoid overcommitting. 07:17 🙈 Reluctance to share code for critique indicates a fear of criticism. Embrace feedback, especially during code reviews, to learn and grow as a developer.
College educated with 2 degrees here (CS and Business Admin) and feeely admit having worked with many self-taught developers I admire and myself learn from!
Having a computer science degree and being a developer are not the same. Coding is a tool in computer science coursework to apply computer science concepts.
@@jonaswatson533 Have worked in development now for over 11 years. Point remains. Use all your tools wisely, regardless of background, and be willing to learn from others. ☺️
I've been a dev for over 20 years, and have got a Bachelor of Computer Science degree. Back then, sure, it made sense. But now, I would recommend kids save their money and learn online instead of going to uni. Uni is a waste of time and money. But it was good fun back when I went.
I've been a C/C++ developer for more than 20 years. I believe that's both good advice and common sense. I would add: "be persistent". Being a good developer involve way more than just writing code that work as expected. Being simply "ok" takes years, truly mastering takes decades.
As a developer with + 30 years experience in multiple languages across many industries, I think it is very important to learn the basics of computer science. Concepts like memory management, algorithms, data structures, security, networking, etc. These concepts are language agnostic, but are very important to becoming a well rounded developer.
Hardware is to software as physics is to engineering. I wish I had realized the cost of abstracting away everything into black boxes much sooner in my career.
Becoming a well rounded developer is something to strive for, but the most important thing is to function in the role you have. Knowing what is going on under the hood is good, but often it's not relevant and on occasion it can send you the wrong way. There are many environments like databases or CMS systems that are so encapsulated that reasoning with basic concept on how thing should be done or estimation performance is nearly impossible. In such cases you just have to read the documentation, consult with the community and test things out. I think in general the higher the level of the software you are building on the more that this is the case, but opinions may differ.
@@dancingdoormanable A basic understanding of B-Trees and how modern relational databases store tables and their indices as such is kind of indispensable for tuning performance of non-trivial queries. Just an example of how something one would learn in a college level file processing class is applicable to professional work.
@@markteague8889Wow man, I definitely couldn't learn about those things in any other way. Surely having my hand held for a few tens of thousands of dollars will make me a super smart fellow!
Most of the people don't realize that the end of a degree is the start of a new Learning experience In which, most of the time but not always, you're alone and are self taught
@@juanitoMint I never went in to getting a degree thinking id gain knowledge from it. Matter of fact, I knew that I would be learning outdated information and technologies through the lenses of the academic field. Not the practical and useful side. I got it to check a box. Since I got my degree at the end of 2022, I have been just learning whatever interests me.
@johndanson4427 well, hold on now. If my 14+ years of service in the military taught me anything its that sometimes you need to let the rookie host something and take the lead. It allows them to break through nerves, gain confidence, and experience. Even if afterwards, you walk out and say "well that was a waste of time for us".
Hi everyone, Personally I am an engineer in biology, I hold a master of science in biotechnology and I am currently almost finished with my PhD in marine biology, and I am now trying learn how to code and be a self taught software engineer, and i have to say coding is far more difficult than anything I went through obtaining that "Engineer" or "Dr" status, so self taught deserves respect, It was diffuclt yet they did it ! Much love to the community!
The author is not meaning "self-taught to PhD", he is talking about "self-taught to writing some sloppy apps". Suppose a guy pretending to be a proper biologist after dissecting a few frogs at home and learning a few random fragmented statements from a biology book. That's what majoiry of self-taught programmers are.
@user-dz5pt3yr9z I get what you're saying, It does require practice, but we should not neglect that not every self taught is bad at it, and that we should not let a minority ruin the image of the majority, the majority of self taught developers are working very hard to improve their situation and making a scary leap into something that is very difficult to master and they end up working through it ! That said, it should also not deminish the effort that people who went through a college education to obtain their positions or knowledge.
@@salimbendag6274 Talents can exist. People could learn math. People could develop math knowledge independently of the mainstream; that's what we are taught to do at universities - all that complicated stuff can be derived from the basic principles. Only we have to live in a certain real environment where most IT newcomers are there for quickmoney and not because they are interested in the scientific part of it.
That's because you didn't study computer science as an undergrad. Regardless of the difficulty of coding in a particular language, there are many adjacent concepts that you learn in a university. Such as computer architecture, computer networks, operating systems, compilers, parallel programming, database management systems, computational complexity, linear algebra, numerical analysis, etc. All these may or may not matter depending on what you're doing. If you're just coding the front end of a website for example all these probably have very little importance. But if you are coding the back end for example, or developing a standalone software suite then all these may come into play depending on what you're doing. Just like in biology, if you're studying e.g. immunology there are many background concepts that you should know, such as chemistry, biochemistry, microbiology, etc. This is why people say that if you've only studied one thing, eg Python programming, then you're not a software engineer. You are a programmer sure, but a software engineer (should) have much more generic knowledge.
As someone who switched out of Biochem to Chem E and finds bio very intimidating I find coding to be one if the easiest things ever. Every bio-related class I have taken has, at one time or another, resulted in pretty severe panic attacks due to the sheer amount of information I needed to know.
I've seen similar comments but I just wanted to be another affirming voice. I have a CS degree but most of my knowledge is self-taught. I'm sorry that my fellow CS grads are trying to gatekeep. They are probably a little bitter about all their college debt.
"gatekeep" yeah right, I'd say is annoying to see "engineers" made through months long bootcamp and seeing colored-hair ballet girls take jobs over "another man", yeah, let's punish the man who made his mind up early and as you said probably got family into debt and work his ass off for a decade just so a disney-style company dismiss him over a DEI thought-provoking fresh ideas new perspectives wokeployee, gimme a f break
I'm studying Python in working towards a career change. This was great advice. It's terrifying, being MUCH older than most, to switch careers. But, I love learning, and this will not be easy, and it may be naive to try and get into tech in my mid-50's. But, I'm stubborn, and no's just make me try harder. I'll take coming across this video as a sign, and I look forward to more advice. Thanks!
You can learn at any age. But keep in mind it takes time and you might be too old to enjoy the fruits of your labour. In addition to python, I suggest you learn Bash to orchestrate your python scripts when your projects get larger
You can do it! When times get tough, remember ... 1. You're not alone. My husband is 51 and studying Python too. People change careers in their 50s all the time, and tech isn't just for the kids. 2. People don't retire from this gig until they're in their 70s, so that's a 20-year career if you start now. 3. Resumés don't require years anymore, and most interviews are conducted by video, so it's much harder for them to discriminate against you. 4. Don't let these ageists get you down. They're talking like you're a foot in the grave when you might outlive them by a score.
If you truly love learning, then you’re already ahead of half the developers I’ve encountered. I’ve worked with some devs who are younger than me (I’m in my 50’s) and they haven’t read a single book or article in years. Never stop learning… you can totally do this!
Good video! I'm a mostly self-taught developer for last 25 years. Currently, a mid to senior dev on a team of mostly senior developers. I'm more of an App repair guy than anything. My company is large and has had several reorgs and mergers over the last 20 years. I deal with a lot of legacy apps that came in from mergers where nobody knows anything about the application and get a mix of everything from Classic ASP & PHP to .NET & Angular and we're now trying to move to more modern React apps. I try to not be pigeon holed as a .NET or Java developer. I'm just a problem solver no matter the stack. I've fallen into an interest niche that is not for everyone. I never know what kind of App I'll get but the expectation is that I always figure them out. 🙂
It's funny how everyone sticks to one specific language (usually the only one they know) these days. In 1990s it was like: "We have got a bunch of code to migrate from platform A to platform B and from language X to language Y. You don't know the language X? Well, the project is 7 months long, which is more than enough time to learn it and migrate those 500'000 lines of code". I've been quite fluent in 3 programming languages even before applying for a trainee position at my first job, and that was sort of normal. Now indeed everyone is pigeonholed with a language sticker on them. It's like a Babel language confusion. Had to create 2 CVs differing only in the language name in the title, otherwise recruitment simply can't match them to a position.
@@InconspicuousChap Currently on the job hunt with roughly two and a half years professional experience (I was a hobbiest doing mostly C# for years before), It's remarkable how many companies specifically ask about your experience with a language or framework. Great at C# but they're hiring for a Java role? 0 years of experience as far as the first few interviews go. I'm not sure I've come across a single role that requested a certain level of experience in computer programming in general. I wonder if it's a reflection of more dug-in frameworks, though I'm not really sure how it was back then. Or maybe it's due to companies industrializing the recruiting process to the point where it takes a while before you get in touch with someone who knows that C and C# are in fact different.
@a225 - I guess I'm in my dream job actually. At first I thought, gee this is a bad situation but over time and with each new success, I really built my confidence and began to see that long term, this was to my benefit when I eventually make the jump to Cybersecurity at some point. It really takes a lot of guess out of what is happening inside all the the black boxes. 🙂
This is one of the most interesting jobs I have ever seen, I would love to try this out. If there is any way I can experience this job, please let me know.
That was the most insane comment I’ve seen in a while. As a CS grad myself, that is such an absurd mindset. 95% of us devs are building websites, not saving lives. This video was some good advice for how to approach our work.
Ever heard of Horizon / Post Office scandal? This is what happens when bad developers are unchecked and unregulated. Also, your users suffer every day, faced by bugs and glitches of your otherwise probably benign "websites". This should not be dismissed either. High time software development is regulated. And I'm not even a CS graduate, I'm an engineer (as in, a proper, regulated mecatronics engineer).
@@vitalyl1327 ha. Yeah, bad software can hurt people. 95% won’t. I’d love to hear, in detail, how you can regulate software. And where. We already have regulations on our financial systems, defense systems, strong requirements on medical systems. What are we missing in regulation? Your concerns are real, for sure. But taking aiming at “self taught” engineers is objectively a dumb angle to take
@@cody_codes_youtube self-taughts are just the demographic slice where the problem is the most pronounced. Being a self-taught is not necessarily a root of the problem, it just tends to correlate with a lack of rigour that is otherwise present in those who had a more structured education. Regulations work pretty well in medical and engineering domains, and I cannot see how the same framework cannot be applied to the software development. Personal responsibility, to start with. Centralised certifications that should be required in any sensitive development (aerospace, automotive, financial, civil service related, personal data handling, etc.). Responsibility of the certifying bodies for the failures of the certified. I.e., all the same as we have in the engineering.
@@vitalyl1327 respectfully, if you haven’t been building software, or have experience building software in the industry for more than 2 years, you wouldn’t realize how much of an ask that is. We have formal structured education with information systems, we have an incredible amount of certifications in every framework and software discipline, yet saying most problems come from that slice of demographics is ridiculous. I’ve worked with 100s of engineers throughout my freelancing career and in my experience the level of due diligence and safe programming has not been correlated to how they started and is directly informed by their professional working career
@@cody_codes_youtube LOl those "engineers" are so haughty, I thought there were like this only in France but it looks like they are assholes all around the world 😂 They are so insecure and starving for validation after years to learn something you can learn by yourself that they have to tell everybody in the world "i am an engineer " 😂 for real the worst people on earth in the professional world
University does not teach theory. It teaches foundational truths in CS and CE. Unless you have taken a degree's syllabi and learned every single topic taught in a degree program, you do not have the foundational knowledge.
5:12 objection, your honor. A good new language is not merely a new syntax. I use C++ (fast, powerful, relatively crossplatform, a little convoluted, but able to handle large projects) for different tasks than I do python (fast prototyping, good science libs), matlab (simulations, proof of concept), R (statistics), Javascript (browser guis) or even perl (yeah, I am a boomer. Regexps, scripting for tasks around the OS). A wiser guy than I once said: "If a language won't change the way you think about a problem, it is not worth learning it." True. But does not mean we should do everything using the same single tool. Greetings, an experienced autodidact.
As a self taught dev with a couple years in paid dev work, but quite a few function focused PR's (accepted) to major Radio Frequency FOSS projects I absolutely agree with the sentiment. Python I use for most things not dependent on speed C/C++ I tend to use for speed dependent projects and microcontrollers (what is with the trend to use python on microcontrollers???). Almost all my RF stuff is C/C++ when microseconds matter. VBA I have used extensively on systems where external code can take years to be approved to run on the network. Its terrible, but it gets the jobs done
commit as often as you want. it's like a quicksave. if you're not done with a specific unit of work yet, commit anyway. when you're done, you amend the commit and proceed with the next unit of work.
@@streetcoder76 I agree - I usually make my own branch and commit and push whenever I'm finished for the day - just in case my computer explodes overnight, my work is saved to the cloud
@@streetcoder76Even if it's pushed you can make it not exist. Just rewrite the commit history. It is mostly useful when you've accidentally added sensitive data though.
This is not about self-taught per se, it’s the difference between a “hacker”/“coder”and a “software engineer”. The discipline of applying scientific methods and engineering principles to the work. Schools attempt to train people how to approach problem solving methodically, and 18-22 is not the age to learn that for everyone. Someone made the comment about humility, and I agree 100%. Openness to criticism and a learn-it-all mentality rather than a vain/ego-driven “I made it work” know-it-all mentality is the biggest differentiator I see in my day job. Learn-it-alls will always pick up on the engineering principles inevitably because they will see the value of not repeating mistakes. Know-it-alls are rarely capable of evolving past the hacker stage even if they can pick up technologies/skills easily.
I'm not sure what school you went to, but as a computer engineer, I studied and worked along-side many computer science majors who were still struggling with the concept of loops and conditional statements. As far as discipline goes, none of the classes ever got this far. Professors didn't think that things like code repositories, clean code, or even server-side database connectivity were important topics. Not when most students were still struggling with the basics.
Effective code can be created in many different ways. As long as it works, is supportable, and fits in with the general scheme, I see terminology like the above as a weak attempt at gatekeeping.
This is 100 percent the case. I see the same thing in both people who have the degree and people who don't. I'm almost certain anyone who disagrees with how you put that is suffering from the Dunning-Kruger effect.
"I'm an engineer, not a coder!" says the gatekeeper with a big ego who thinks he is better than others that can not only do what he does, but possibly do it even better.
I think everyone are self-taught - it's impossible to have someone else learn for you :) Just one thing I reacted to was your discussion about PRs and branches - this can be influenced heavily by the project/team/company so may not always be a reflection of the developer. But great video!
You absolutely hit the truth of it. University gives you access to materials, resources, and typically helps with a plan of how to tackle learning them, but the actual learning is always a self-taught matter in the end. People can pass courses without a full grasp of a subject simply by plugging and chugging on some topics. Ultimately understanding a subject requires a person commit to teaching themselves what the material means and how to use it. That has no relation to learning from university or from other resources outside of a formal school. No one can learn it for you, as you said.
I've got 1 year left of my cs degree and almost everything I know is from outside learning. A dedicated self taught programmer will be 10 times better than a lazy college graduate that just barely passed.
I'm a Self-Taught dev (pretty new) and the whole reason I decided to teach myself is because I hate getting taught by other people and the people who hate self-taught devs just need to learn that almost every self-taught dev has a good reason to be self-taught in the first place.
Fantastic video, as usual! It's always fun seeing those kind of comments from CS grads. Another thing I would add is inexperienced devs dont understand the problem they're trying to solve, or have ambiguous defintions, and thus try to do too much at once. One thing I constantly remind myself is to take the smallest piece, and make it smaller. Some old proverb put it best: "The mountain is moved pebble by pebble".
I've heard that proverb worded differently by my old Algebra II teacher in the form of a question and answer: "How do you eat an elephant? One bite at a time."
@@AndreiGeorgescu-j9pthey know enough computer science to do the job. The rare self taught dev are the ones who are able learn cs and implement it in their work using direct learning.
Not nearly as fun as it is when I interview "self-taught devs" and they can't; down to a person provide me with a concise definition of OOP and or polymorphism, and why either should be used. But remember everybody.....Self-Taught-Devs aren't the deluded, generally unqualified, ignorami who thinks reading Medium Posts and copy/paste from Stack Overflow is the equivalency of grinding for 4 years in an accredited program instructed by actual Computer Scientists.
I dropped out of University for personal reasons, however INN.Uni the Lecturers themselves said "We cannot 'spoon feed' You!", so WE HAD TO LEARN for OURSELVES!! Those who excelled were those who worked together in groups and solved their problems together, whilst the "soloists" caved in week-by-week. By Year 2, the Class was less than half what started in in Year 1 😰. Since Uni, I've taken extra Courses and when in one Course, all the Tutors and Students predicted the guy with 20+ years of Pro experience to pass the exams first.... I DID!! 😂😂SOOO....since then, it has been self-driven push!! Self-Determination and focus.
I genuinely appreciate this perspective. I am brand new to coding in general as I have only just started trying to make games and I have no experience yet. The biggest thing that has catapulted my learning experience is that I have spent a few years now figuring out what I wanted to make when I started and also having people around to discuss ways of doing things with. Having the opportunity to discuss purpose and relevance of the application of code for a task really helps make the process future-proof.
I think you misunderstood the comment at 0:23. The commenter literally talks about the "engineer" as a degree. For example in my country, when you graduate with a diploma in an engineering degree you can put "engineer" before your name (similar to a title). So this comment is most definitely about the overuse of "engineer", often by people who technically aren't. It doesn't mean that a non-engineers can be less of a specialists or worse programmers, it's all about the proper use of the words. I'm also on the same opinion that you can't present yourself as an engineer if you don't have a diploma in some engineering degree.
What if you do engineering professionally with years of experience? Then you're still not an engineer but some 20-year-old fresh out of college is? Seems like a weird standard. Engineer *isn't* a title the same way 'doctor' is, and it seems to work just fine this way. This just feels like gatekeeping from people who feel threatened.
@@sherrickthuesmunn657 Engineer is a title in Europe, with legal responsabilities if something on the project goes wrong. "Doctor" (Ph.D.) is a title of academic research if succeeded after 4 years on a specific knowledge branch. Teachers at university must be 'doctors' in most of the cases. I think you were trying to refer to 'medical doctor', a title that grants permission to work in a hospital doing surgery and license for adquire drugs. To be a judge, or architect, you must have a degree in your possession, too. Experience doing the job are bonus points out of mandatory academic requirements. Sorry for my english.
Another "qualified" person here who absolutely does not judge the self taught! Plenty of great colleagues I've had over the years have come to this point through different paths, not all university. I've trained plenty of graduates who come with their own problems. Besides all of this, we are ALL self taught in huge areas of our knowledge because tech changes so much, and no university education is a perfect fit for any job. We all need to self develop, increasingly as your career goes long
As a CS grad myself, i actually find myself admiring the resolve of self taught devs. Software Engineering is a demanding field, and people who are self taught who manage to break into the competitive job market deserve the utmost respect.
Far too often those people who broke in are breaking things and wrecking havoc. There is a lot of wrong people in this industry, who should have stayed far away.
@@AndreiGeorgescu-j9p I think it's youtube itself, its auto-moderation is absolutely unhinged. My comments get deleted randomly. Often it's simply because of a stray dot in between words instead of a whitespace (thanks to the mobile phone keyboards), it's interpreted as URLs and punished. Sometimes it's for some keywords - a lot of my comments here disappeared that mentioned the abbreviation for atomicity, consistency, isolation and durability.
@@vitalyl1327 Not exactlly.... the ones wrecking stuff are the "tech lead" with 9 years of experience who on multiple occassions tell me a snippet of code works when it doesn't and he sounds like he hasn't touched the language and framework he's supposed to be leading the team in for at least 5 of those 9 years, and isn't familiar enough with the language, getting shocked by its unique features, AND also costing the company extra thousands for months by provisioning more expensive cloud resources for no good reason and then going on vacation. This same guy asks me to write high latency code for no good reason other than it looks clean. Clean code will kill a web server, thanks to him the microservice I wrote is basically useless because it does multiple queries for one request other than the one query I wanted to do for that request and has about hundreds more lines of code. Readability and maintainablity is down the drain and I now hate working with that code. He also told me exceptions throwing exceptions don't cause latency issues. LMAO. Latency basically shot up by 4x when I added more exceptions. I had to tell him it doesn't work (because each exception has to collect the stack trace) but of course he's the tech lead he doesn't believe me, the intern, because I'm not the tech lead. Or the other senior devs with 9 years of experience who come in to "help" and leave at least 3 bugs behind for me to fix. Their unit tests were useless at catching their bugs. I have less than 1 YOE and mainly self taught, and the newcomer "senior dev" with also 10 years of experience come running to me to ask how to do this and that. These people have MASTERS DEGREES. Look, good sirs, with all due respect I'm sure there's good software engineers with Masters, but someone with a Bacherlor's or Master's degree isn't necessarily good, especially if they've been out of school for a LONG while. I'm bloody tired of them and would rather work with a self taught dev with integrity and common sense.
@@vitalyl1327why because they read the same books and did the same projects at home while you paid thousands for some dude to say "hey do the project on page 58 by tomorrow"? 😂 collge is a joke for 98% of professions. Everyone teaches themselves. Some do it cheap and some do it expensive. Who's smarter? Does it matter when you're dead? Your boss will have a new ass in your seat before it's cold and who knows maybe they are "self-taught" doing a better job than you were 🤷🏼♂️. There's always someone smarter, faster, bigger.
@@mrfixitm3345 you so very obviously have glaring gaps in your fundamental knowledge. And the funniest part here is that you will never be able to detect them yourself. Again, people without higher education have no ability for systematic learning, they do not learn bottom-up, they are unable to form comprehensive systems of the knowledge they acquire. You're an obvious and hilarious case in point here. You have no faintest idea of what education is. I am so glad I will never have to work with someone as low as you are.
CS grad here. We don't all hate self-taught devs. Some CSs have an inferiority complex because you're better than them without having to spend the time and money on the education portion, and others pissed that they don't think you're up to the expected level regarding knowledge, programming capability, etc. The former are just morons and the latter just screams of a disconnect of where they were when they started their careers because we all sucked at the job at first, too. The degree isn't a guarantee that we'll be good devs, it's a guarantee that we have a certain set of qualifications as outlined by an academic institution. We all learn most of our skills on the job and are, by extension, all self-taught devs. Much respect to all the software engineers out there who had the gumption to learn everything on their own.
I am a recent grad with a bachelor’s and masters in computer science. College doesn’t even scratch the surface of what is required as a SWE1 at most companies unless you are one of the lucky ones who got into a company as an intern to permanent position. Learning a computer language is just a small fraction of the job. Concepts like the use of Apis, use of interfaces, dependency injection, git, sql injection attacks, etc etc are not even taught. The things you mentioned are spot on. Constantly build projects in one framework, in one language and become very proficient first before moving on to something else. It’s essential to build projects regardless if you are currently employed or looking for employment. It’s this experience that determines how well you will exceed into an intermediate or senior developer role.
Engineer who graduated in CS: We have to cleanse the society of impostors! Me, a tourism graduate, watching people who didn't study tourism getting jobs in travel agencies and hospitality industry.
3:50 How is this not the norm? I thought everyone works like this. 1. Create, groom, schedule and assign an issue in JIRA. 2. Create a 'feature' branch from master/develop. 3. Breakdown issue into smaller tasks. 4. Code, test, commit for single task (ideally) or multiple related tasks. 5. Push remote branch. 6. Raise a PR to merge 'feature' branch into master/develop. 7. Implement review comments, test, commit, get approvals. 8. Merge
When I worked on a small team of three we did single branch development where we all worked off the development branch. This was possible because we were such a small team, but also our code base was only worked on by the three of us with some people from other teams committing from time to time. I loved it. It forced small non-breaking commits. As for Jira, today's Jira culture at companies is a cargo-cult. I'll never forget the time I had a single character commit that took two days to get into a simple staging environment because of all the "ceremony" and red tape it needed to go through. Absolutely insane.
@@MrC0MPUT3Ri am currently working in a team of three and I am pushing my fellow engineers to use jira and github and code reviews as much as possible, because every time they merge directly to dev I have to solve some nasty conflicts or the code quality just isnt 100 there. I never understood why people cant allocate 70% of the time to coding and 30% to planning/refinement/etc. Its a simple step that from my experience makes working async on big project much more enjoyable
I feel like self taught devs get lumped into an unfortunate bucket with accelerated bootcamp devs and the like. Obviously this is a terrible over generalization, but the perception of these folks essentially thinking they're on an "easy" get-rich-quick path is a real thing. I've seen this idea perpetuated by plenty of folks, but I've also seen absolutely kick ass engineers with those backgrounds. At the end of the day it really boils down to passion and skills. If your only motivation is to be well paid with as little effort as possible, it will show. The fact that people like this exist doesnt give the rest of us a right to discount every other person with a similar origin story
Started programming at 10 years old in BBC Basic, as an adult spent 10 years in the industry before deciding to go to uni to help further my career. My experience tells me that you learn more, and better in your first 6 months on the job under a good development team than you will doing 4 years of university. I wouldn't have hired 90% of the class I graduated with. University has an almost negligible value in the programming industry other than getting hired. In my humble opinion.
Should have attended the University I attended. The Dean of Computer Science was hell bent on structure, core understanding and algorithms. This was a while ago, if anyone in CS took the business coding Cobol class, they were dismissed from the CS program. Hard core. First class out of the gate was Mainframe Assembler. Started with 60 in two classes. Ended freshman year with 15 in one class.
4:17 I (mostly self-taught) do that stuff like this: I branch of develop (that is my main working-branch), then I start to work on the feature. I commit and push everything up as every step is done, so I created my user-model, then I create the form, then I create the login-check. Every time I test, commit and push. When the feature is done, I create a pull-request, but to be honest since I am the only one working on that project I merge it without reading it again. Code _in my branch_ can possibly be broken when I try to use it. Code _in develop_ should never ever be broken. The main-branch is by the way my release branch. So when the release comes up, I branch v1.0rc (in example) off of develop, get it into a state where I am sure it will work on the server, then merge that first into main and tag it as v1.0 and second I merge it back into develop of course. On the server I pull it again from the tag and create a docker-container, first to make another test, then to really send it to production. Of course "production" is a little webservice with one user: me.
I’d disagree with the learning languages. If you learn the idiomatic way each language works, it can give you great insights into what you’re already doing. Take Ruby -> Kotlin as a good example… it’s super familiar and I find it easy to work in. Meanwhile, my colleagues who came from an extensive Java background keep trying to write Kotlin as though they were in Java, and constantly complain the language being more difficult. It’s ultimately a skill issue, and there’s nothing better than broad experience in many different languages and ways of working to solve a skill issue.
If I saw a developer with say a two-year diploma and a year's work experience, yet have C++, C#, Python, JavaScript, React, Angular, etc. I'm going to have to ask WTF they've actually been doing and whether they actually worked in any to actually get proficient. If you are 50 and know everything from assembler, Pascal, C, JavaScript, SQL, VBA, Python, etc., etc. that's a different story. You could have been in five different positions for 5+ years each. However, even in those cases, you should probably either skip them from your resume or just focus on the ones key to this job.
@@kabiskac I've interviewed and hired lots of developers. Like most, we look at three main things -- education, work experience, and job specific skills. None of these show up well prior to around 18 on most resumes. When an employer asks for X, they typically want to see that you've used in a professional setting -- if not paid work, at least a school project, etc. Most development isn't just coding, it's working with others, needs, testing, versioning principles, documentation, testing, etc. Those rarely come from self-taught experience. That said, it may help you get through a technical interview, you can certainly say "X years of experience" even if some of that happened before school, and maybe it you can use it to provide examples or "projects" to discuss -- if you made a web site, you could include a link to it. If you are self-taught, only a diploma, and/or not much work experience, just realize what (and why) employers want proof of experience using these in team/semi-professional environment and try your best to highly any experience you have.
@@andydelle4509Clearly that statement isn't true since I know assembler and C and I do use Python. I agree that Python is the new entry level general purpose language, but that doesn't mean because you know something else, you shouldn't use it. My choice of which language to use comes down at a lot of decisions -- time, ability to deploy them, policies, ability to share it, etc. Sometimes you just need something quick and dirt and that often happens to be Python. I've had to write small utilities, analysis, document sorters, etc. in Python since others dev don't have C (or Delphi compliers) or is it necessary. Then again, I've had to rewrite some of their Python programs in VBA (inside Excel) so non-programmers (who can't install Python) can run them locally. Finally, I've had a few 'quick and dirty' apps which were so painful to run in Python or VBA, I gave up and fired up MS SQL and Delphi. And once, I had to rewrite one of their Python utilities in JavaScript so that everyone in the organization could access and run it.
I have always thought I was a weaker developer because as a junior dev I haven't learned more languages and frameworks outside of JavaScript and React, but I figured I wanted to get really good with programming concepts, techniques, patterns and architecture and I can then apply those to other languages later. Thanks for helping me feel better about not being a massive polyglot yet.
Don't take my word for it, but I think that's dangerous given JavaScript and React is your chosen specialties. React is a very replaceable framework and JavaScript is a hard language to learn fundamentals in. Don't feel bad about it, but just know that it will benefit you greatly to get comfortable doing something timeless, like writing in C and/or building something from scratch with minimal dependencies.
@@Muskar2 It's probably more dangerous for the reasoning that browsers are tightly coupled to JavaScript and vice versa. So much so, coupled to browsers where the GUI is untestable and not standardized. If anything, JavaScript has valuable lessons in navigating/avoiding this tight coupling with the complex configuration system it has via various json configuration files. From a perspective of creating patterns of programs, I would say it's all mostly still there but maybe only less accessible due to all previously mentioned overhead.
C is great but I think maybe too low level for a front end dev to get as much use out of … I would look at Java or C# if you want to learn OO. Another good language which I have come to really like is Python you can write things in a more efficient readable way and you still have OO concepts as well as the ability to write a quick script.
I am a self taught developer myself. In my country you cannot use the title engineer, without having a degree in some kind of an engineering field. So I consider myself a software developer, not a software engineer, and that's ok for me.
I'm a chemical engineer doing software development and i dont mind being called software devloper since i didnt study CS. I agree with your country though, the title engineer is used very loosely nowadays. Example some countries will call a millwright an engineer or the aircon technician engineer. It is a very hard course to do at university just to be so diluted and used by everyone. It should only be reserved for people who actually studied to be one
People in the US don't mistake a software engineer for someone that can do the traditional kind of engineering. If you heard a mechanic market themselves as "Truck Doctor" you wouldn't be confused and think they were a real doctor would you?
Though I'm studying at prestigious university in my country, I'm still taking online Bootcamp on my spare time. Modern education makes living, but Self education makes a fortune.
Only caveat I would make is that these are mistakes that those that are not self taught also make (maybe even more so). But the points are still valid. Good video.
There are plenty of qualified engineers that write absolutely crap code. Some of the best and the worst developers I have worked with have been self taught. Far too many devs over engineer everything into a mess of complexity. No 1: Very good. Completely agree. Probably the most important mindset to have. Readability and maintainability above all. A lot of places don't need to scale too much. No 2: Whatever. No 1 is way more important. A lot of working environments are way to chaotic for stuff like that. No 3: Again agreed. Mastering things is more important than chasing fads and trends. Constantly learning means you will never be mastering stuff and constantly pushing out code in languages / frameworks where you aren't an expert. No 4: Again, great of you have a working environment that you can do that in. A lot of places have to many firefighting issues to be able to focus on only one thing. No 5: Experienced devs can be just as bad for this.
And this is exactly why robust regulations are so important. With a personal responsibility, with severe consequences for screwing up, bad engineers will be weeded out.
I am in a university. And all my knowledge is self taught, one of few things i got from University are Soft Skills and Degree. My entire development and AI knowledge is self-taught.
Like others said, almost all of this list is about experience programming in a large team environment rather than anything to do with formal training. As an example of the difference, academics can sometimes write some of the most impenetrable and confusing code out there. Zero comments, no version control, minimal packaging, idiosyncratic coding style, NIH syndrome, but it did something interesting and novel 5 years ago, which is also the last time anyone could get it to compile before that person graduated and dropped off the face of the Earth.
I see what you did there at 06:26 ! I just finished reading that book. Can't thank you enough for the recommendation 🙏🏼. I'm happy to see it echo and build upon something that I've always believed in: that wonders and breakthroughs will always come about when somebody finds their specialty and pour their heart into it, no matter how small or niche that specialty may be.
@@e.m.r1124 It's a productivity & self-help book titled The ONE Thing (240 pages). Travis talks about it in his video: THE Book That Changed My Life As A Developer.
Funny thing about people who say the industry needs "to be sanitized" is they are going to Universities to learn from lectures who are joining bootcamps to also learn from non-university graduates. Everyone who thinks they deserve better treatment coz they spent a couple of years writing assignments needs to heal.
It does not matter how and where did you learn. What matters is who will be *responsible* when your code goes south. This is the difference between the wild west software development and properly regulated fields such as civil engineering and medicine.
@@gppsoftware I agreed with your point, meaning I would still agree with a billion other people who share your view. However I have worked as a programmer for 5+ years now, I have a college degree but has nothing to do with Programming. During my years as a programmer I have come across a lot of graduates with CS degrees but cannot code beyond the old none usable projects that they did in college, and now as I speak, I know of several recruiters who prefer someone who knows hands on programming than just a certificate holder.
Great points. I am not an official developer, just someone who fools around with VBA at the office. But I've noticed my tendency to do several of the things you mention: specifically, (1) working on too many different things at once rather than finishing one thing and delivering it, (2) choosing a high-level language to preemptively study (justifying it as "practical") rather than focusing effort on the low-level work that can serve as a foundation for whatever may be asked for in the future, and (3) "making it work" at the expense of future maintenance (though I've been trying to rein this one in lately). Thank you for the harsh dose of reality! It hurts, but in a good way.
Full ACK to all points. Those are definitely signs of unexperienced developers, whether self-educated or with a degree. I have a masters degree and it really helps understanding the basic concepts: data structures, efficiency, programming paradigms (object oriented, imperative, functional), etc. What I did not learn at the university are the "engineering" skills, basically everything you described in your video. In my career I met two outstanding mentors, both without any degree but excellent architects and explainers.
I rarely comment, let alone like a video, but wow, these tips are great. I, for one, have a big problem with adding huge changes to the codebase at once and never thought about doing it step by step, as you mentioned. I also really think the notebook advice is awesome. Thank you for sharing your wisdom; I will be sure to take advantage of my newfound knowledge! Great video!
Self-taught SDET here (I primarily use C++/Python in my job). I'm truly fortunate that my coworkers see my different education as a value-add rather than a detriment. I started as a QA Tester in Software Dev and moved over to SDET after 12 years of being a Tester, then Analyst, then QA Engineer. They seem to think my ability to think like another QA role while being able to code has allowed me to create better automation, better tooling, and better tests because I understand the needs of QA and can see potential breakages needing coverage. Great video!
I have seen both good and bad in self taught programmers. The main difference I see between the good and bad is the humility. I think it’s easier to fall prey to the Dunning-Krueger effect as a self taught person because you aren’t exposed to as wide a range of knowledge. Granted, CS grads and self-taught folks are just as likely to lack humility and fail to learn new things when it matters.
As a completely self-taught programmer of nearly 40 years, I have to vehemently disagree with the supposition that self-taught programmers are not exposed to as wide a range of knowledge as formally educated programmers. The greatest hindrances I ever experienced while learning my craft were while in a classroom earning my degree. I had been programming for about eight years before I stepped foot into a University, and exposed myself to many different programming concepts and techniques that my University classes didn't even mention in passing. In my experience, formal training is a choke collar.
@@anthonyobryan3485 +100. I learned how to code first and then studied web development at a local college. With regards to the exposure to knowledge, as I see it, the vast majority of it is gained as experience during one's career, so regardless of whether you're self taught or college / university educated, it's what you do after you learn those basics that determines your exposure to knowledge and experiences. As far as college curriculum was concerned, it was relatively general at the beginning and there was a lot of material being taught that was fairly dated. Don't get me wrong though, glad I learned it all because it was all super interesting nonetheless! I was very fortunate that all the teachers and the IT department head were very open minded and willing to accept input from students for some parts of the curriculum - for example, I found out they were planning to teach ASP classic, this is about 20 years ago, but it was already losing relevancy. Myself and another student wrote a proposal for switching the language to PHP. While PHP surely isn't "the best", it's a great language to learn in terms of web development, given it's wide availability and large community.
We are social creatures and almost everything we do has a goal to increase our social status. Being an "engineer", for a lot of people is a status symbol. Just like being a doctor or lawyer. So, I don't really feel bad when I hear that I am not really an engineer. Because what I am really hearing is "for me, being an important person is very, very important"
That is just not true. It's the mindset of a slave. "look at me, I have climbed higher than you" for people who are really free, they don't give shit about titles. That means they don't care about the title people have. They care about who they are.
@@vitalyl1327Indeed, that's why I unit test the crap out of my services, unlike some people with degrees. I've seen some of the laziest shit coming from both self taught and degree holders.
This part here (0:20) is a masterclass on how to take feedback that is meant to be offensive and inflammatory, dissect it to see if there might be anything useful there, using that part to improve and disregarding the rest of it. Excellent video.
No one's been able to really give me a sense of what a "unit of work" is before your video, or how they fit into commits and PRs. It's been helpful for a person that learned to code by fixing rather than building a bunch of theoretical projects that began and ended cleanly
@holdenmarkymark33 Mostly, it's seething about how CS people suck at math (and everything except CS stuff, really) yet get paid more on the top end. There is also a lot of resentment that the term "engineering" is used when it doesn't touch on common engineering staples common to the traditional engineering degrees.
@@professorquarter hahaha, you must have met some of the "senior" software engineers I work with. I'm no genius or math whiz, but some of these front-end cats are embarrassing XD
@@holdenmarkymark33 Yeah, they must be especially non-mathy. I think the math stereotype has to do with a lot of CS degrees only requiring up to Calc I or II, which are actual high school subjects whereas ABET engineering degrees all require multivariate calculus, differential equations, and linear algebra as well at a minimum (most often more than that. I was required to take a basic stochastics class at a minimum as well as what amounted to applied diffeq + LA twice, not to mention the actual content). In fairness, I have met a lot of math undergrad -> MSCS people working in logistics, financial, etc. software and the like.
@@professorquarter honestly, it's an extremely rare case where I have to apply any mathematical concepts beyond discrete math. I have done zero calculus for work, but then again I work on commerce systems, nothing cool like rocket ships (yet). Mostly basic arithmetic.
These are all very valid and useful tips. I have made some of those mistakes myself. I think it will take time for me to rid of those problems, but hopefully, knowing them will make me become more aware and fix it before becoming a problem.
Yes, however having a high GPA and receiving the respective piece of paper proves you have an excellent understanding of the foundations of the respective program (CS or CE).
Dev with 15 years of experience. Came in very skeptical, as I always am with such topics, but this video is spot on with every point. This is all good advice for new self-taught developers and really for all developers in general.
Excellent video! I've got 25 years as a professional dev/lead/architect/manager/director. I've been coding since I was 7(poorly) because my dad bought a computer instead of a NES. I've got an undergrad in Chemistry, an MBA, and a PhD in AI (from 2001 when AI as we know it today didn't exist.) I've made every single one of these "mistakes". I've learned from it. Maybe it's rose-colored glasses, but if youtube had existed in 2002, and if I watched your video, I might have been CTO by now.
As a senior dev I normally enforce that people have tests to cover all of their code before I will process their merge back into the development branch. I also look at their code for maintainability and to make sure it solves the actual problem. I have found that most of the self-taught programmers just want to throw something up and move on and while it is fast for them in that moment it is too slow for the projects. My experience is that the time spent debugging later completely swamps the time it would take them to do a better job. I actively work to train the people I work with to be better programmers with feedback and pair programming sessions. However, some people actually seem hostile to learning and this creates a lot of problems. Their code quality is bad, it does not get better, and it creates maintenance problems.
I know what you mean by hostile. I get defensive when my world is threatened, but I let it all come in and marinate, and I'll come around or form a stronger debate basis. A lot of people can't or won't do that. IMO it is a clear red flag and that dev needs to get replaced soon as it is viable if they are consistently cagey. Titanic waiting to happen, hiding a burned hull... A junior can still teach a senior on occasion and its part of what makes the mentoring process so beneficial. The moment where a dev thinks there is nothing else to learn, its time to go flip burgers. Another way to put it, someone who wants to be a developer who won't develop themselves can't be a true developer.
There's 2 different mindsets needed during the PR process: 1. While creating a PR the coder should have a lot of pride and ownership to produce the best code they can 2. While the PR is being reviewed the coder should take their ego out of it and instead consider that the code belongs to the team, wishing for the reviewers to surface as many issues and good suggestions to improve the code as possible In this way each PR has the best opportunity to be of the highest quality and the coders skills will grow at the same time This is something that every successful (team oriented) developer learns early on in their journey
@@retagainez We normally aim for branches to live for about 2-4 days. The work is all scientific work and mostly involves a lot of math. The way the code is structured conflicts are pretty rare. A person working on chemical reaction equations won't conflict with someone working on mass transport because those will be in separate areas.
@@Immudzen Ah. In that case, a lack of merge conflicts wouldn't really detract from using branches. I am more curious about the problem domain you guys write code for and it makes me sad and confused to hear about the hostile pairing sessions. I would do ANYTHING to work in a company with pairing, but I highly expect I won't be exposed to that for possibly up to an entire decade or so.
Im lucky to have a software engineer as my mentor and all these tips are the same advice he gives me, im starting out with learning C# right now…I picked the self taught route because college is expensive, and it takes time away from my responsibilities as I have a mother who I help out financially do to her health problems. Its pretty sad that theres people hating on the subject of self taught developers…sorry but not everyone has the opportunity to go a get a degree, I have found something I want to do as a career and im doing my best with what I have.
1. The opposite side of this is premature optimization. Yes, you should take some time to draft how your code should work and orgabize things in a way that makes sense, but you also need to get to implementing, or all that planning is worth nothing. Plus, stuff comes up, plans need to be changed. So it's important to find a balance between not looking ahead and looking ahead so much that you get nothing done.
This is definitely something I struggle with even in traditional storytelling and writing. There’s a fine balance and some it helps to have a generalized section like a template and fill in the relevant sections. It makes it easier to commit out sections that don’t work or still need some more lines to work. It sounds odd but it sometimes helps to write the beginning and end and meet in the middle
Sign 4 - "Working on too many things at once. Stop volunteering for everything." Soooooooooooooooo hard to learn this. I do this so often. This video is really helpful, thank you for posting it.
Self taught for almost 20 years, I see just as many "traditionally educated" devs make the same mistakes. It doesn't matter how you learn it, if you are truly passionate about coding.
People that complain about non-uni coders are the ones mad that they paid for something they didn't need to pay for and probably know far less about it than the one passionate enough, and disciplined enough, to teach him/herself.
it's so funny because I am a (mostly, not entirely) self-taught chef and used to hear this a lot about people in the culinary industry. i'm now less than a year into learning how to code and it seems there's always people who just want to be negative nellies and who maybe feel intimated by people who take a non-traditional route to something? great video, have subscribed!
I catch myself doing things like this a lot. This just helped me come to the realization that taking things slowly can help me get farther in huge ways. Very helpful video
I 50s in and as self thought developer it escapes me how engineer lead could not comprehend client side caching. Good self thought devs have a proven track of will to learn and study new things on there own, school grads have a track record of passing exams.
Respectfully, if I may offer some feedback, the “how” you say things are just as important (maybe even more so) than the “what” you’re saying. You may not mean for any negative or unhelpful tone to come across but, for example, your message sounds like you may have a chip on your shoulder about CS grads. I’m not saying you actually do but the tone of what you say can communicate that even if it’s unintentional. The soft skills of dealing positively with people, teamwork, communication, etc are equally as important as the hard/technical skills. Just my 2 cents, sir! 😊
@@paxsevenfour I do agree with what you say, my storie is that I trusted people too much and it shows more then I'd like. I don't have anything against the students, it not there fault that none really cares about making anything of quality. I worked for under a lead engineer who complained about response size and could not comprehend that client side caching exists and you are not limited to 5mb on a browser. Lets just say I have a hard time trusting people these days. It's not even that they don't know, they don't want to know. Or don't want to look stupid.
@@fulconandroadcone9488 Students don't learn the "trade" side of writing code. In my University I had ONE course that maybe mentioned any semblance of code quality as a brief aside in a lecture. That was my software engineering course where we developed a project for stakeholders for an entire semester. One lecture mentioned agile, another unit testing, one talked about assertions, design patterns, and some about Git practices. And even that was in passing and not really remarked upon past that.
Given the large number of programming languages that are basically shades of C, it can seem like it's all just syntax. From time to time you'll come across the work of someone who thinks "it's just syntax" and writes C code in Python, it's a good exercise in controlling your murderous urges.
That first comment is literally, "I don't think people who are good enough to self-teach themselves skills should be allowed to work in the industry". Actually the most insane positive I've heard on education regulation in my life.
Here, 24 years experience self taught software development enthusiasts & professionals, programming languages are not just syntax, these are also mindsets, many of these comes along with philosophies different ways to look at problem solving, nice video thanks.
5:17 "A language that does not affect the way you think about programming is not worth learning." -- Alan Perlis. Not all languages are just new syntax ... Some will teach you new concepts. Often, new concepts arise as patterns in existing languages, and later, someone invents a new language that is built around the concept. Many years ago, in a program written in C, I saw structs with function pointers ... basically, Povray Raytracer had object-oriented programming in C (not plus plus). Creating a language that is built around the concept enabled the concept of visibility!
I think it's pretty funny that somebody with a CS degree would call out self-taught developers for not being "real engineers", call himself specifically a "software engineer," and conveniently forget that computer science is a different discipline from a software engineering degree.
None of these things are something an experienced programmer does, either self taught or traditionally educated. This is a sign of an inexperienced dev.
I don't know where these college grad kids hangout these days, discord or maybe still on stack overflow, but in my day we were on IRC asking questions and getting advice or saving work to floppies and sharing through sneakernet... Some things never change, there is always a group of people that try to shame or gate keep to protect their ego, than actually putting positivity into the world. I get it, you can't mentor everyone and you sure can't do other people's job, but it takes two seconds to provide a reference link to related material instead of complaining why they suck at programming. We all started somewhere, even those super cool ego driven ones, but every single developer, programmer or engineer is on their own path and we all have different levels and areas of subject matter expertise. Just like making incremental changes to code, this is a career or hobby where you are constantly learning or improving on some aspect. Don't forget to give back through mentorship or coaching, it can be just as fulfilling as coding itself.
Travis, dead on for many of the points you made. IWOMM - my fav from a very junior programmer when trying to tell him his code didn't work when deployed - "but, but, but - It works on my machine".
I chuckled at your thumbnail of the obvious code smells and what I would do differently but then thought of how it might have looked to me before I understood code and became quite anxious. Thanks for the humble reminder!!
Two guys who basicaly invented personal computers were self-educated, while people in IBM were "proper engineers". So, yeah, I hope they are enjoying their degree, because I certainly enjoy my job as developer. No degree needed.
My weekly programming/tech newsletter is now live. Go and subscribe - geni.us/WfAml
You must clean the your tea cup before you drink it.
As a dev for over 20 years, the majority of my knowledge is self taught, and that's after studying at University.
Knowledge is transient and unimportant. The real reason for the difference between the educated and uneducated ones is in structure and rigour.
@@vitalyl1327 in 20 years I have seen no correlation between educated and (experienced) self taught developers and their abilities.
An education is a good place to start and will help point you in the right direction, but self taught developers often have a passion that has led them to become developers.
@@vitalyl1327 nah
Yeah, I take issue with him calling CS majors "traditional programmers". Actual traditional programmers read through the manuals and learned to code that way. There were no Computer Science degrees back then. Every contributor to the field back then had degrees in engineering or mathematics. No one was holding your hand to teach you anything.
@@Rexvideowow key word here is *engineers*.
Graduated from college, and they didn't teach much, pretty much all of my knowledge is self-taught
there is lots of bad colleges, most likely you picked one. Smart college is a huge advantage, but the smart colleges are also picky on choosing students. Like attracts like, sorry
@@WojciechowskaAnna Couldn't be any more wrong, all colleges are a massive scam to give you student loan debt. I went to a good reviewed university and most of the professors were terrible and only focused on giving a rubric to follow, never really taught anything. Most professors don't really care about teaching the material they just want a paycheck at the end of the day. Rarely you'll get professors that actually care but its very random. However "smart colleges" do not exist even people graduate from said "smart colleges" aren't even knowledgeable to begin with its all about just paying more and being scammed into thinking if I graduate here I'll have a better chance at landing a job which degrees are meaningless.
I was taught pascal in 1 year, vb in 2 year, 3 yesr php... this was around 2012, I still hate php today.
@@Xiquinhodasilva99 yea php is ugly
most likely you work with easy business software, without going through architecture design, database design, any threading thuncionality or actual math. Good universities and CS prepare students for that. Most business development is however very easy text processing without any requirement for correctness or preformance. For this kid of job - very little education is required. It similar to being an engineer and getting hired for a simple construction work - where no phycis model derivation is ever required, just hammer and dirller skills.
I have a CS degree and manage an engineering team at a top tech firm. Anyone who thinks that non-traditional developers are somehow lesser or "need to be purged" is naive (to be overly generous) and more likely just arrogant to the point of being a detriment to their team. Having people with diverse backgrounds (e.g. chemical engineering, geology, finance, etc.) adds perspectives to technical problem solving that results in better overall solutions.
What about no degree at all :( ?
@@willneve That's my case, and tbh I haven't really had a problem with it yet. There are companies that will only hire people with a degree, but considering that it's fairly widely recognized that universities unfortunately don't do a tremendously good job of preparing software developers I figure more fool them.
@@willnevesome of the richest people in the world were dropouts. College is a business.
People with degrees are not "self-taught". They were taught how to learn. It is people without any education who are the root of all problems.
@@willneveMy typical role is Chief Architect at organizations that build sophisticated Service-Oriented Architectures in FinTech, banking, payments, fraud detection, ML, etc. My specialty is in 0-1 projects, and un-f@#$%ing technical debt, monoliths, and spaghetti code, using world-class code generation and automation techniques. Among many roles I’ve had, a previous role was the Software Architect overseeing both the Commerce and Payments platforms at Sony PlayStation, processing billions of dollars a year. My current company builds software ventures. So not just one start-up, which is hard enough, but multiple start-up as a commodity. The gentleman above is right: it’s not what you were spoon fed in college… it’s the knowledge and discipline you learn on the job. You’ve either got it, or you don’t. I have no degree at all.
Very refreshing to read all these comments. I am 87 and started coding/learning computing in the 50’s using machine code, assembler, pseudo code, cobol. What I am learning here is that the greater mass of interested and active people in the coding business are following a strong discipline. It was the Wild West in my day and a wonder anything functioned properly at all. Congrats from me to all readers here. Keep learning. Do it as simply as possible. Remember some poor guys and gals have to fix your work some day. Have great and interesting careers. Well done getting this far. Keep going and enjoy. BTW when I first visited the Central library in Scotland for a book about computing they had nothing. NOTHING.
with the advent of AI and our processing power getting so much more powerful, its a new gold rush.
I agree! I see a lot of people (myself included) way overcomplicate things for no good reason. It's always really inspiring for me to read about the beginnings of computers... there was some ingenious stuff (like the old fully electromechanical TTYs), but a lot of those early innovations were just regular people coming up with clever workarounds.
Wtf based boomer detected?
Doubtless you remember the arrival of "Structured Coding" -- wow, what a concept! Have some structure! Avoid "goto". Beware global variables.
@@torf1746 "like the old fully electromechanical TTYs"
I was a mechanic (?) on the IBM 407 Accounting Machine. Fully electromechanical; it was a BEAST. IBM called such person's "CE" (Customer Engineer) but being in the Navy I wasn't titled CE. But that's what I was doing. Training? OJT: On the Job training combined with excellent documentation and proper tools.
My mentor at my first job after completing my BS in CS was a self taught developer who dropped out of high school and was 21 years old lol self taught devs are some of the smartest people out there.
A VERY ancient senior developer here, so ancient that there was almost no formal education like the modern CS courses available when I started, except for in some obscure mathematics departments!
Having interviewed, hired, fired and mentored many graduate & non-grad developers in different settings, I can confirm that all your points are important. But also several personal qualities are beneficial if you want to both become an effective software engineer and enjoy the journey. These have little to do with coding or even design techniques and a lot to do with being prepared to cultivate skills like careful listening, humility, patience and persistence. Not to mention the ability to tolerate being in a state of confusion for way longer than is comfortable - sometimes that’s the only way to reach a state of clarity.
Great Addition! Often those "soft" skills are the most important ones, unfortunetely hard to measure and therefore often neglected.
state of confusion is permanent 🙃
Such a great point about staying in that place of uncertainty.
I want to frame this comment
lol, yeah, when all that COBOL stuff still running the world was made CS degrees didn't even exist. i always cringe when I have to IT archeology COBOL stuff and reengineer it. that's systems doing their job for 7ß+ years in super stable high performance environs. Like flight booking, money transfers or container management of ships. Stuff that moves crazy amounts of trillions of USD.
What you describe are signs of INEXPERIENCED developers. Period! I’ve seen CS grads do all five of them, and then some! As a computer scientist, turned developer, I’ve taught students at the university but also on the job as a dev. Most go on to become good experienced developers, while some never do, degree or no degree.
No you haven't.
I agree, with one caveat, specifically on point #3 - a good degree will usually select languages not just to teach the language, but also to reenforce concepts for example a functional language may be taught to improve comfort with recursion and immutability. There is nothing stopping a self-taught engineer from building their own learning path to cover the same ground, but a CS grad (on a well balanced degree) is forced to cover this ground.
Yeah I'd personally say 1 and 3 make sense because school is supposed to teach you concepts regardless of language and engineering focused schools will introduce you to the idea of requirements and thinking about design before starting. For that reason I'd say 1 is the big one (although in large classes with mediocre teachers it often does just turn into get something to work.. But a proper software eng. class should at least get you thinking about planning it out first though and expose you to industry tools or concepts to do so)
But 2, 4, and 5 are just misc skills that schools won't teach. If you get a good professor you will get critiques (instead of just checking that it works) but never has a professor told me my commit was too big (if they even care if you use VC in the first place) and no one in an acedemic setting gonna tell you you're working on too much at once lol. Maybe you'll get exposed to this in group projects or senior design but it's doubtful it'd be an important part of any curriculum.
nu uh@@thecollector6746
@thecollector6746 maybe critical thinking isn't for you
I have seen all of these offences committed by people with degrees, for the record. Great list by the way.
Yea I was gonna say, this is just devs without work experience period really
All people with degrees start off as unexperienced programmers.
same, often. In every place I've worked. Frankly I find the self-taught variety are more willing (and able) to learn and have a better perspective than the walking textbook types. The textbook types have some very clever knowledge, but don't know when to use it. They also tend to impose things that make project development pace grind down. I tend to like people who can make systems, but then actually use them / make tools. You figure out the pain points of certain methodology very quickly.
Graduates pretty much can't be trusted, but IT graduates are probably the worst of the bunch. Either way, people thinking they're engineers when they really aren't is a problem, as is dismissing the importance of and difficulty in achieving high quality in software systems.
@@absent72 I agree, and as for the term "traditional developer", well, when I started, almost all developers where self taught to some degree and even today I would say that a developer that spends time learning on their own (preferably on top of an education) is usually a better developer than one that only comes with school knowledge.
Most schools still teach a sort of optimistic coding that might work for a green field project or for small projects, but once it grows you need to be able to go of the path and account for reality ;)
Why people hate non college grads, is because they paid ~200k for a degree and you make pretty much the same as them. It is partially Envy, and jealousy I think.
Also the fact they need to be forced by their debt to learn something when self taught people either are extremely passionate about their field or have extreme discipline to make themselves learn something new and hard, which makes them overall better workers, because when you are self taught, the learning part never really ends
Self/taught devs have a demonstrated track record of teaching themselves and (often) working with others to get a better understanding of those concepts.
A college grad has demonstrated personal management under a timeline, but has been fed everything in an organized way.
There are pros and cons to both, but I usually see self-taught engineers rocket to success early on and continue learning more complex concepts as they need them.
Many times, I’ve seen college grads basically freeze when given tasks they don’t already understand all the concepts for, since they’re typically less familiar with how to research things on their own and communicate with others to learn concepts in an unstructured way.
College grads do, however, have the right initial exposure to supportive concepts like Computational Complexity… but I also usually find that just informing a self-taught dev of this concept results in a complete understanding within a few weeks of side-research.
In the end, neither approach is wrong. A college grad with the right attitude and focus on growth does very well and a self-taught dev with the right curiosity and drive does well also.
[edit: a typo and some grammar]
Sunk cost fallacy as well. Subconsciously they feel as though all that money would be wasted if they didn't have to do it that way. So naturally, they feel that everyone must do it that way too, or they made the wrong choice.
Yeah i notice a lot of coders are pretty petty and always give the most misleading info, probably due to gatekeeping
@@GMOTP5738 coder community is the most toxic community after Dota players
I'm an Experienced self-taught developer currently working on 3 huge PRs...thanks for the pull up 😊
Him: Only the syntax is different
C++: huh
Rust: yes
Haskell: good luck
Well, this kind of people will never work in, say, finance, so they have no chance of getting their minds violated irreversibly by the certain APL descendants that are so popular im algo-trading.
Yeah, paradigms can be different and using a language effectively isn't a matter of syntax. Doing things in Java then copying over that code to rust can make the rust code suck, but redo it in the rust way and it'll work well. I guess basic syntax can for sure be understood, but the way you use a language definitely differs
@@ToaOfTech Any Bilingual will confirm to this.
Matlab: you like ()'s? Lets use them for arrays and functions. I'm sure nothing can go wrong.
SAS: You want a loop, you are going to have to pay for it.
Python to C or ASM 💀
01:25 🤔 Inexperienced developers often focus solely on making code work, neglecting essential pre-coding observations and considerations for maintainability and scalability.
02:29 🔄 Large, unorganized code changes in pull requests can lead to confusion and difficulty in diagnosing problems. Commit often, test each commit, and keep pull requests focused on cohesive features.
04:35 📚 Constantly learning new languages or frameworks may hinder true understanding of programming concepts. Focus on mastering core concepts rather than accumulating superficial knowledge.
06:10 🚥 Working on too many tasks simultaneously can compromise efficiency and depth of understanding. Prioritize tasks, complete them one at a time, and avoid overcommitting.
07:17 🙈 Reluctance to share code for critique indicates a fear of criticism. Embrace feedback, especially during code reviews, to learn and grow as a developer.
I keep seeing these everywhere what the heck are they
@@bbrainstormer2036 They are people. Surely, you are not used to them. And they talk about the things they think they master.
Bro had to include emojis 😂😂😂
Ah, you're talking about Salesforce engineers.
@@bbrainstormer2036 People posting AI-generated video summaries to farm likes.
College educated with 2 degrees here (CS and Business Admin) and feeely admit having worked with many self-taught developers I admire and myself learn from!
Having a computer science degree and being a developer are not the same. Coding is a tool in computer science coursework to apply computer science concepts.
@@jonaswatson533 Have worked in development now for over 11 years. Point remains. Use all your tools wisely, regardless of background, and be willing to learn from others. ☺️
I've been a dev for over 20 years, and have got a Bachelor of Computer Science degree. Back then, sure, it made sense. But now, I would recommend kids save their money and learn online instead of going to uni. Uni is a waste of time and money. But it was good fun back when I went.
I've been a C/C++ developer for more than 20 years. I believe that's both good advice and common sense.
I would add: "be persistent". Being a good developer involve way more than just writing code that work as expected. Being simply "ok" takes years, truly mastering takes decades.
As a developer with + 30 years experience in multiple languages across many industries, I think it is very important to learn the basics of computer science. Concepts like memory management, algorithms, data structures, security, networking, etc. These concepts are language agnostic, but are very important to becoming a well rounded developer.
Hardware is to software as physics is to engineering. I wish I had realized the cost of abstracting away everything into black boxes much sooner in my career.
Becoming a well rounded developer is something to strive for, but the most important thing is to function in the role you have. Knowing what is going on under the hood is good, but often it's not relevant and on occasion it can send you the wrong way. There are many environments like databases or CMS systems that are so encapsulated that reasoning with basic concept on how thing should be done or estimation performance is nearly impossible. In such cases you just have to read the documentation, consult with the community and test things out. I think in general the higher the level of the software you are building on the more that this is the case, but opinions may differ.
@@Muskar2 The difference between hardware and software is a logical one.
@@dancingdoormanable A basic understanding of B-Trees and how modern relational databases store tables and their indices as such is kind of indispensable for tuning performance of non-trivial queries. Just an example of how something one would learn in a college level file processing class is applicable to professional work.
@@markteague8889Wow man, I definitely couldn't learn about those things in any other way. Surely having my hand held for a few tens of thousands of dollars will make me a super smart fellow!
I’m a CS grad and if you think you gain the knowledge you need for being an “engineer “ from school then you’re high as a kite and misguided.
Science vs Engineering.
The mark of an engineer is experience in applying and improving their craft
Most of the people don't realize that the end of a degree is the start of a new Learning experience In which, most of the time but not always, you're alone and are self taught
@@juanitoMint I never went in to getting a degree thinking id gain knowledge from it. Matter of fact, I knew that I would be learning outdated information and technologies through the lenses of the academic field. Not the practical and useful side. I got it to check a box. Since I got my degree at the end of 2022, I have been just learning whatever interests me.
@johndanson4427 well, hold on now. If my 14+ years of service in the military taught me anything its that sometimes you need to let the rookie host something and take the lead. It allows them to break through nerves, gain confidence, and experience. Even if afterwards, you walk out and say "well that was a waste of time for us".
Hi everyone, Personally I am an engineer in biology, I hold a master of science in biotechnology and I am currently almost finished with my PhD in marine biology, and I am now trying learn how to code and be a self taught software engineer, and i have to say coding is far more difficult than anything I went through obtaining that "Engineer" or "Dr" status, so self taught deserves respect, It was diffuclt yet they did it ! Much love to the community!
The author is not meaning "self-taught to PhD", he is talking about "self-taught to writing some sloppy apps". Suppose a guy pretending to be a proper biologist after dissecting a few frogs at home and learning a few random fragmented statements from a biology book. That's what majoiry of self-taught programmers are.
@user-dz5pt3yr9z I get what you're saying, It does require practice, but we should not neglect that not every self taught is bad at it, and that we should not let a minority ruin the image of the majority, the majority of self taught developers are working very hard to improve their situation and making a scary leap into something that is very difficult to master and they end up working through it ! That said, it should also not deminish the effort that people who went through a college education to obtain their positions or knowledge.
@@salimbendag6274 Talents can exist. People could learn math. People could develop math knowledge independently of the mainstream; that's what we are taught to do at universities - all that complicated stuff can be derived from the basic principles. Only we have to live in a certain real environment where most IT newcomers are there for quickmoney and not because they are interested in the scientific part of it.
That's because you didn't study computer science as an undergrad. Regardless of the difficulty of coding in a particular language, there are many adjacent concepts that you learn in a university. Such as computer architecture, computer networks, operating systems, compilers, parallel programming, database management systems, computational complexity, linear algebra, numerical analysis, etc. All these may or may not matter depending on what you're doing. If you're just coding the front end of a website for example all these probably have very little importance. But if you are coding the back end for example, or developing a standalone software suite then all these may come into play depending on what you're doing.
Just like in biology, if you're studying e.g. immunology there are many background concepts that you should know, such as chemistry, biochemistry, microbiology, etc. This is why people say that if you've only studied one thing, eg Python programming, then you're not a software engineer. You are a programmer sure, but a software engineer (should) have much more generic knowledge.
As someone who switched out of Biochem to Chem E and finds bio very intimidating I find coding to be one if the easiest things ever. Every bio-related class I have taken has, at one time or another, resulted in pretty severe panic attacks due to the sheer amount of information I needed to know.
Thank you for concentrating on audio when putting this together.
I've seen similar comments but I just wanted to be another affirming voice. I have a CS degree but most of my knowledge is self-taught. I'm sorry that my fellow CS grads are trying to gatekeep. They are probably a little bitter about all their college debt.
"gatekeep" yeah right, I'd say is annoying to see "engineers" made through months long bootcamp and seeing colored-hair ballet girls take jobs over "another man", yeah, let's punish the man who made his mind up early and as you said probably got family into debt and work his ass off for a decade just so a disney-style company dismiss him over a DEI thought-provoking fresh ideas new perspectives wokeployee, gimme a f break
I'm studying Python in working towards a career change. This was great advice. It's terrifying, being MUCH older than most, to switch careers. But, I love learning, and this will not be easy, and it may be naive to try and get into tech in my mid-50's. But, I'm stubborn, and no's just make me try harder. I'll take coming across this video as a sign, and I look forward to more advice. Thanks!
You can learn at any age. But keep in mind it takes time and you might be too old to enjoy the fruits of your labour. In addition to python, I suggest you learn Bash to orchestrate your python scripts when your projects get larger
You can do it! When times get tough, remember ...
1. You're not alone. My husband is 51 and studying Python too. People change careers in their 50s all the time, and tech isn't just for the kids.
2. People don't retire from this gig until they're in their 70s, so that's a 20-year career if you start now.
3. Resumés don't require years anymore, and most interviews are conducted by video, so it's much harder for them to discriminate against you.
4. Don't let these ageists get you down. They're talking like you're a foot in the grave when you might outlive them by a score.
Thank you!@@LuzMCosta
If you truly love learning, then you’re already ahead of half the developers I’ve encountered. I’ve worked with some devs who are younger than me (I’m in my 50’s) and they haven’t read a single book or article in years. Never stop learning… you can totally do this!
you inspire me aaron...lets get it!!!!
Good video! I'm a mostly self-taught developer for last 25 years. Currently, a mid to senior dev on a team of mostly senior developers. I'm more of an App repair guy than anything. My company is large and has had several reorgs and mergers over the last 20 years. I deal with a lot of legacy apps that came in from mergers where nobody knows anything about the application and get a mix of everything from Classic ASP & PHP to .NET & Angular and we're now trying to move to more modern React apps. I try to not be pigeon holed as a .NET or Java developer. I'm just a problem solver no matter the stack. I've fallen into an interest niche that is not for everyone. I never know what kind of App I'll get but the expectation is that I always figure them out. 🙂
It's funny how everyone sticks to one specific language (usually the only one they know) these days. In 1990s it was like: "We have got a bunch of code to migrate from platform A to platform B and from language X to language Y. You don't know the language X? Well, the project is 7 months long, which is more than enough time to learn it and migrate those 500'000 lines of code". I've been quite fluent in 3 programming languages even before applying for a trainee position at my first job, and that was sort of normal. Now indeed everyone is pigeonholed with a language sticker on them. It's like a Babel language confusion. Had to create 2 CVs differing only in the language name in the title, otherwise recruitment simply can't match them to a position.
@@InconspicuousChap Currently on the job hunt with roughly two and a half years professional experience (I was a hobbiest doing mostly C# for years before), It's remarkable how many companies specifically ask about your experience with a language or framework. Great at C# but they're hiring for a Java role? 0 years of experience as far as the first few interviews go. I'm not sure I've come across a single role that requested a certain level of experience in computer programming in general.
I wonder if it's a reflection of more dug-in frameworks, though I'm not really sure how it was back then. Or maybe it's due to companies industrializing the recruiting process to the point where it takes a while before you get in touch with someone who knows that C and C# are in fact different.
I think you job sounds awesome!
@a225 - I guess I'm in my dream job actually. At first I thought, gee this is a bad situation but over time and with each new success, I really built my confidence and began to see that long term, this was to my benefit when I eventually make the jump to Cybersecurity at some point. It really takes a lot of guess out of what is happening inside all the the black boxes. 🙂
This is one of the most interesting jobs I have ever seen, I would love to try this out. If there is any way I can experience this job, please let me know.
That was the most insane comment I’ve seen in a while. As a CS grad myself, that is such an absurd mindset. 95% of us devs are building websites, not saving lives. This video was some good advice for how to approach our work.
Ever heard of Horizon / Post Office scandal? This is what happens when bad developers are unchecked and unregulated. Also, your users suffer every day, faced by bugs and glitches of your otherwise probably benign "websites". This should not be dismissed either. High time software development is regulated. And I'm not even a CS graduate, I'm an engineer (as in, a proper, regulated mecatronics engineer).
@@vitalyl1327 ha. Yeah, bad software can hurt people. 95% won’t. I’d love to hear, in detail, how you can regulate software. And where. We already have regulations on our financial systems, defense systems, strong requirements on medical systems. What are we missing in regulation? Your concerns are real, for sure. But taking aiming at “self taught” engineers is objectively a dumb angle to take
@@cody_codes_youtube self-taughts are just the demographic slice where the problem is the most pronounced. Being a self-taught is not necessarily a root of the problem, it just tends to correlate with a lack of rigour that is otherwise present in those who had a more structured education. Regulations work pretty well in medical and engineering domains, and I cannot see how the same framework cannot be applied to the software development. Personal responsibility, to start with. Centralised certifications that should be required in any sensitive development (aerospace, automotive, financial, civil service related, personal data handling, etc.). Responsibility of the certifying bodies for the failures of the certified. I.e., all the same as we have in the engineering.
@@vitalyl1327 respectfully, if you haven’t been building software, or have experience building software in the industry for more than 2 years, you wouldn’t realize how much of an ask that is. We have formal structured education with information systems, we have an incredible amount of certifications in every framework and software discipline, yet saying most problems come from that slice of demographics is ridiculous. I’ve worked with 100s of engineers throughout my freelancing career and in my experience the level of due diligence and safe programming has not been correlated to how they started and is directly informed by their professional working career
@@cody_codes_youtube LOl those "engineers" are so haughty, I thought there were like this only in France but it looks like they are assholes all around the world 😂
They are so insecure and starving for validation after years to learn something you can learn by yourself that they have to tell everybody in the world "i am an engineer " 😂 for real the worst people on earth in the professional world
We're all self taught. University might teach theory, but all practical knowledge has been gained on my own.
University does not teach theory. It teaches foundational truths in CS and CE. Unless you have taken a degree's syllabi and learned every single topic taught in a degree program, you do not have the foundational knowledge.
5:12 objection, your honor. A good new language is not merely a new syntax. I use C++ (fast, powerful, relatively crossplatform, a little convoluted, but able to handle large projects) for different tasks than I do python (fast prototyping, good science libs), matlab (simulations, proof of concept), R (statistics), Javascript (browser guis) or even perl (yeah, I am a boomer. Regexps, scripting for tasks around the OS). A wiser guy than I once said: "If a language won't change the way you think about a problem, it is not worth learning it." True. But does not mean we should do everything using the same single tool. Greetings, an experienced autodidact.
Perl is the shit especially for regex work
As a self taught dev with a couple years in paid dev work, but quite a few function focused PR's (accepted) to major Radio Frequency FOSS projects I absolutely agree with the sentiment.
Python I use for most things not dependent on speed
C/C++ I tend to use for speed dependent projects and microcontrollers (what is with the trend to use python on microcontrollers???). Almost all my RF stuff is C/C++ when microseconds matter.
VBA I have used extensively on systems where external code can take years to be approved to run on the network. Its terrible, but it gets the jobs done
commit as often as you want. it's like a quicksave. if you're not done with a specific unit of work yet, commit anyway. when you're done, you amend the commit and proceed with the next unit of work.
If it's not committed and pushed it doesn't exist.
@@streetcoder76 I agree - I usually make my own branch and commit and push whenever I'm finished for the day - just in case my computer explodes overnight, my work is saved to the cloud
@@streetcoder76Even if it's pushed you can make it not exist. Just rewrite the commit history. It is mostly useful when you've accidentally added sensitive data though.
@luke5100 Roughly how big are your commits?
@luke5100 Does that mean you create unused functions and/or classes that can be worked on in segments? I'm a bit curious about the process.
This is not about self-taught per se, it’s the difference between a “hacker”/“coder”and a “software engineer”. The discipline of applying scientific methods and engineering principles to the work. Schools attempt to train people how to approach problem solving methodically, and 18-22 is not the age to learn that for everyone. Someone made the comment about humility, and I agree 100%. Openness to criticism and a learn-it-all mentality rather than a vain/ego-driven “I made it work” know-it-all mentality is the biggest differentiator I see in my day job. Learn-it-alls will always pick up on the engineering principles inevitably because they will see the value of not repeating mistakes. Know-it-alls are rarely capable of evolving past the hacker stage even if they can pick up technologies/skills easily.
I'm not sure what school you went to, but as a computer engineer, I studied and worked along-side many computer science majors who were still struggling with the concept of loops and conditional statements. As far as discipline goes, none of the classes ever got this far. Professors didn't think that things like code repositories, clean code, or even server-side database connectivity were important topics. Not when most students were still struggling with the basics.
Effective code can be created in many different ways. As long as it works, is supportable, and fits in with the general scheme, I see terminology like the above as a weak attempt at gatekeeping.
This is 100 percent the case. I see the same thing in both people who have the degree and people who don't. I'm almost certain anyone who disagrees with how you put that is suffering from the Dunning-Kruger effect.
"I'm an engineer, not a coder!" says the gatekeeper with a big ego who thinks he is better than others that can not only do what he does, but possibly do it even better.
@@fictitiousnightmares Nah, it’s not about what you are, it’s about what you can learn that counts.
I think everyone are self-taught - it's impossible to have someone else learn for you :)
Just one thing I reacted to was your discussion about PRs and branches - this can be influenced heavily by the project/team/company so may not always be a reflection of the developer. But great video!
You absolutely hit the truth of it. University gives you access to materials, resources, and typically helps with a plan of how to tackle learning them, but the actual learning is always a self-taught matter in the end. People can pass courses without a full grasp of a subject simply by plugging and chugging on some topics. Ultimately understanding a subject requires a person commit to teaching themselves what the material means and how to use it. That has no relation to learning from university or from other resources outside of a formal school. No one can learn it for you, as you said.
The phrase is "self-taught" not self-learned.
I've got 1 year left of my cs degree and almost everything I know is from outside learning. A dedicated self taught programmer will be 10 times better than a lazy college graduate that just barely passed.
I'm a Self-Taught dev (pretty new) and the whole reason I decided to teach myself is because I hate getting taught by other people and the people who hate self-taught devs just need to learn that almost every self-taught dev has a good reason to be self-taught in the first place.
Fantastic video, as usual! It's always fun seeing those kind of comments from CS grads. Another thing I would add is inexperienced devs dont understand the problem they're trying to solve, or have ambiguous defintions, and thus try to do too much at once. One thing I constantly remind myself is to take the smallest piece, and make it smaller. Some old proverb put it best: "The mountain is moved pebble by pebble".
I've heard that proverb worded differently by my old Algebra II teacher in the form of a question and answer: "How do you eat an elephant? One bite at a time."
@@AndreiGeorgescu-j9pthey know enough computer science to do the job. The rare self taught dev are the ones who are able learn cs and implement it in their work using direct learning.
@@AndreiGeorgescu-j9pwhat the heck bro lol, you keep copying salty replies everywhere hahaha
@@angelocarantino4803 Find the lie. You clowns don't....hence the reason why you routinely lose out to those who do hold CS degrees.
Not nearly as fun as it is when I interview "self-taught devs" and they can't; down to a person provide me with a concise definition of OOP and or polymorphism, and why either should be used. But remember everybody.....Self-Taught-Devs aren't the deluded, generally unqualified, ignorami who thinks reading Medium Posts and copy/paste from Stack Overflow is the equivalency of grinding for 4 years in an accredited program instructed by actual Computer Scientists.
In my experience Computer Science and Software Engineering graduates are rarely better than self-taught developers.
I dropped out of University for personal reasons, however INN.Uni the Lecturers themselves said "We cannot 'spoon feed' You!", so WE HAD TO LEARN for OURSELVES!!
Those who excelled were those who worked together in groups and solved their problems together, whilst the "soloists" caved in week-by-week. By Year 2, the Class was less than half what started in in Year 1 😰.
Since Uni, I've taken extra Courses and when in one Course, all the Tutors and Students predicted the guy with 20+ years of Pro experience to pass the exams first.... I DID!! 😂😂SOOO....since then, it has been self-driven push!! Self-Determination and focus.
You are working at too low of a level then to witness expert work.
I genuinely appreciate this perspective. I am brand new to coding in general as I have only just started trying to make games and I have no experience yet. The biggest thing that has catapulted my learning experience is that I have spent a few years now figuring out what I wanted to make when I started and also having people around to discuss ways of doing things with.
Having the opportunity to discuss purpose and relevance of the application of code for a task really helps make the process future-proof.
I think you misunderstood the comment at 0:23. The commenter literally talks about the "engineer" as a degree. For example in my country, when you graduate with a diploma in an engineering degree you can put "engineer" before your name (similar to a title). So this comment is most definitely about the overuse of "engineer", often by people who technically aren't. It doesn't mean that a non-engineers can be less of a specialists or worse programmers, it's all about the proper use of the words. I'm also on the same opinion that you can't present yourself as an engineer if you don't have a diploma in some engineering degree.
fart sniffing credentialism is a plague on society
What if you do engineering professionally with years of experience? Then you're still not an engineer but some 20-year-old fresh out of college is? Seems like a weird standard. Engineer *isn't* a title the same way 'doctor' is, and it seems to work just fine this way. This just feels like gatekeeping from people who feel threatened.
@@sherrickthuesmunn657
Engineer is a title in Europe, with legal responsabilities if something on the project goes wrong. "Doctor" (Ph.D.) is a title of academic research if succeeded after 4 years on a specific knowledge branch. Teachers at university must be 'doctors' in most of the cases.
I think you were trying to refer to 'medical doctor', a title that grants permission to work in a hospital doing surgery and license for adquire drugs. To be a judge, or architect, you must have a degree in your possession, too. Experience doing the job are bonus points out of mandatory academic requirements.
Sorry for my english.
Another "qualified" person here who absolutely does not judge the self taught! Plenty of great colleagues I've had over the years have come to this point through different paths, not all university. I've trained plenty of graduates who come with their own problems. Besides all of this, we are ALL self taught in huge areas of our knowledge because tech changes so much, and no university education is a perfect fit for any job. We all need to self develop, increasingly as your career goes long
As a CS grad myself, i actually find myself admiring the resolve of self taught devs. Software Engineering is a demanding field, and people who are self taught who manage to break into the competitive job market deserve the utmost respect.
Far too often those people who broke in are breaking things and wrecking havoc. There is a lot of wrong people in this industry, who should have stayed far away.
@@AndreiGeorgescu-j9p I think it's youtube itself, its auto-moderation is absolutely unhinged. My comments get deleted randomly. Often it's simply because of a stray dot in between words instead of a whitespace (thanks to the mobile phone keyboards), it's interpreted as URLs and punished. Sometimes it's for some keywords - a lot of my comments here disappeared that mentioned the abbreviation for atomicity, consistency, isolation and durability.
@@vitalyl1327 Not exactlly.... the ones wrecking stuff are the "tech lead" with 9 years of experience who on multiple occassions tell me a snippet of code works when it doesn't and he sounds like he hasn't touched the language and framework he's supposed to be leading the team in for at least 5 of those 9 years, and isn't familiar enough with the language, getting shocked by its unique features, AND also costing the company extra thousands for months by provisioning more expensive cloud resources for no good reason and then going on vacation. This same guy asks me to write high latency code for no good reason other than it looks clean. Clean code will kill a web server, thanks to him the microservice I wrote is basically useless because it does multiple queries for one request other than the one query I wanted to do for that request and has about hundreds more lines of code. Readability and maintainablity is down the drain and I now hate working with that code. He also told me exceptions throwing exceptions don't cause latency issues. LMAO. Latency basically shot up by 4x when I added more exceptions. I had to tell him it doesn't work (because each exception has to collect the stack trace) but of course he's the tech lead he doesn't believe me, the intern, because I'm not the tech lead.
Or the other senior devs with 9 years of experience who come in to "help" and leave at least 3 bugs behind for me to fix. Their unit tests were useless at catching their bugs.
I have less than 1 YOE and mainly self taught, and the newcomer "senior dev" with also 10 years of experience come running to me to ask how to do this and that.
These people have MASTERS DEGREES.
Look, good sirs, with all due respect I'm sure there's good software engineers with Masters, but someone with a Bacherlor's or Master's degree isn't necessarily good, especially if they've been out of school for a LONG while. I'm bloody tired of them and would rather work with a self taught dev with integrity and common sense.
@@vitalyl1327why because they read the same books and did the same projects at home while you paid thousands for some dude to say "hey do the project on page 58 by tomorrow"? 😂 collge is a joke for 98% of professions. Everyone teaches themselves. Some do it cheap and some do it expensive. Who's smarter? Does it matter when you're dead? Your boss will have a new ass in your seat before it's cold and who knows maybe they are "self-taught" doing a better job than you were 🤷🏼♂️. There's always someone smarter, faster, bigger.
@@mrfixitm3345 you so very obviously have glaring gaps in your fundamental knowledge. And the funniest part here is that you will never be able to detect them yourself.
Again, people without higher education have no ability for systematic learning, they do not learn bottom-up, they are unable to form comprehensive systems of the knowledge they acquire. You're an obvious and hilarious case in point here. You have no faintest idea of what education is. I am so glad I will never have to work with someone as low as you are.
Very good points. These are real, I have lived through them. I'm also a self-taught software ENGINEER. Thanks for the video Travis.
How are you an engineer exactly?
I have a bachelors in Computer Engineering and I feel like the PhDs hate us. :)
CS grad here. We don't all hate self-taught devs. Some CSs have an inferiority complex because you're better than them without having to spend the time and money on the education portion, and others pissed that they don't think you're up to the expected level regarding knowledge, programming capability, etc. The former are just morons and the latter just screams of a disconnect of where they were when they started their careers because we all sucked at the job at first, too. The degree isn't a guarantee that we'll be good devs, it's a guarantee that we have a certain set of qualifications as outlined by an academic institution. We all learn most of our skills on the job and are, by extension, all self-taught devs. Much respect to all the software engineers out there who had the gumption to learn everything on their own.
I am a recent grad with a bachelor’s and masters in computer science. College doesn’t even scratch the surface of what is required as a SWE1 at most companies unless you are one of the lucky ones who got into a company as an intern to permanent position. Learning a computer language is just a small fraction of the job. Concepts like the use of Apis, use of interfaces, dependency injection, git, sql injection attacks, etc etc are not even taught. The things you mentioned are spot on. Constantly build projects in one framework, in one language and become very proficient first before moving on to something else. It’s essential to build projects regardless if you are currently employed or looking for employment. It’s this experience that determines how well you will exceed into an intermediate or senior developer role.
Engineer who graduated in CS: We have to cleanse the society of impostors!
Me, a tourism graduate, watching people who didn't study tourism getting jobs in travel agencies and hospitality industry.
They are self-taught 😂
Just curious, what do people learn in tourism degrees?
3:50 How is this not the norm? I thought everyone works like this.
1. Create, groom, schedule and assign an issue in JIRA.
2. Create a 'feature' branch from master/develop.
3. Breakdown issue into smaller tasks.
4. Code, test, commit for single task (ideally) or multiple related tasks.
5. Push remote branch.
6. Raise a PR to merge 'feature' branch into master/develop.
7. Implement review comments, test, commit, get approvals.
8. Merge
When I worked on a small team of three we did single branch development where we all worked off the development branch.
This was possible because we were such a small team, but also our code base was only worked on by the three of us with some people from other teams committing from time to time.
I loved it. It forced small non-breaking commits.
As for Jira, today's Jira culture at companies is a cargo-cult. I'll never forget the time I had a single character commit that took two days to get into a simple staging environment because of all the "ceremony" and red tape it needed to go through. Absolutely insane.
Such an overcomplicated and overseparated process
@@MrC0MPUT3Ri am currently working in a team of three and I am pushing my fellow engineers to use jira and github and code reviews as much as possible, because every time they merge directly to dev I have to solve some nasty conflicts or the code quality just isnt 100 there. I never understood why people cant allocate 70% of the time to coding and 30% to planning/refinement/etc. Its a simple step that from my experience makes working async on big project much more enjoyable
@@CyrilCommando Did you ever code anything non trivial in a team?
Many but not all. There is no single rule fitting for all it depends on your company, project and team.
I feel like self taught devs get lumped into an unfortunate bucket with accelerated bootcamp devs and the like. Obviously this is a terrible over generalization, but the perception of these folks essentially thinking they're on an "easy" get-rich-quick path is a real thing. I've seen this idea perpetuated by plenty of folks, but I've also seen absolutely kick ass engineers with those backgrounds. At the end of the day it really boils down to passion and skills. If your only motivation is to be well paid with as little effort as possible, it will show. The fact that people like this exist doesnt give the rest of us a right to discount every other person with a similar origin story
This right here
Started programming at 10 years old in BBC Basic, as an adult spent 10 years in the industry before deciding to go to uni to help further my career. My experience tells me that you learn more, and better in your first 6 months on the job under a good development team than you will doing 4 years of university. I wouldn't have hired 90% of the class I graduated with. University has an almost negligible value in the programming industry other than getting hired. In my humble opinion.
Should have attended the University I attended. The Dean of Computer Science was hell bent on structure, core understanding and algorithms. This was a while ago, if anyone in CS took the business coding Cobol class, they were dismissed from the CS program.
Hard core. First class out of the gate was Mainframe Assembler. Started with 60 in two classes. Ended freshman year with 15 in one class.
4:17 I (mostly self-taught) do that stuff like this:
I branch of develop (that is my main working-branch), then I start to work on the feature. I commit and push everything up as every step is done, so I created my user-model, then I create the form, then I create the login-check. Every time I test, commit and push.
When the feature is done, I create a pull-request, but to be honest since I am the only one working on that project I merge it without reading it again.
Code _in my branch_ can possibly be broken when I try to use it. Code _in develop_ should never ever be broken.
The main-branch is by the way my release branch. So when the release comes up, I branch v1.0rc (in example) off of develop, get it into a state where I am sure it will work on the server, then merge that first into main and tag it as v1.0 and second I merge it back into develop of course.
On the server I pull it again from the tag and create a docker-container, first to make another test, then to really send it to production.
Of course "production" is a little webservice with one user: me.
I’d disagree with the learning languages. If you learn the idiomatic way each language works, it can give you great insights into what you’re already doing.
Take Ruby -> Kotlin as a good example… it’s super familiar and I find it easy to work in. Meanwhile, my colleagues who came from an extensive Java background keep trying to write Kotlin as though they were in Java, and constantly complain the language being more difficult.
It’s ultimately a skill issue, and there’s nothing better than broad experience in many different languages and ways of working to solve a skill issue.
If I saw a developer with say a two-year diploma and a year's work experience, yet have C++, C#, Python, JavaScript, React, Angular, etc. I'm going to have to ask WTF they've actually been doing and whether they actually worked in any to actually get proficient.
If you are 50 and know everything from assembler, Pascal, C, JavaScript, SQL, VBA, Python, etc., etc. that's a different story. You could have been in five different positions for 5+ years each. However, even in those cases, you should probably either skip them from your resume or just focus on the ones key to this job.
@@BW022what if they started coding at 14?
@@kabiskac I've interviewed and hired lots of developers. Like most, we look at three main things -- education, work experience, and job specific skills. None of these show up well prior to around 18 on most resumes. When an employer asks for X, they typically want to see that you've used in a professional setting -- if not paid work, at least a school project, etc. Most development isn't just coding, it's working with others, needs, testing, versioning principles, documentation, testing, etc. Those rarely come from self-taught experience.
That said, it may help you get through a technical interview, you can certainly say "X years of experience" even if some of that happened before school, and maybe it you can use it to provide examples or "projects" to discuss -- if you made a web site, you could include a link to it. If you are self-taught, only a diploma, and/or not much work experience, just realize what (and why) employers want proof of experience using these in team/semi-professional environment and try your best to highly any experience you have.
@@BW022 Peope who know assembler and K&R C don't use Python! IMO, Python is the new BASIC.
@@andydelle4509Clearly that statement isn't true since I know assembler and C and I do use Python. I agree that Python is the new entry level general purpose language, but that doesn't mean because you know something else, you shouldn't use it. My choice of which language to use comes down at a lot of decisions -- time, ability to deploy them, policies, ability to share it, etc. Sometimes you just need something quick and dirt and that often happens to be Python.
I've had to write small utilities, analysis, document sorters, etc. in Python since others dev don't have C (or Delphi compliers) or is it necessary. Then again, I've had to rewrite some of their Python programs in VBA (inside Excel) so non-programmers (who can't install Python) can run them locally. Finally, I've had a few 'quick and dirty' apps which were so painful to run in Python or VBA, I gave up and fired up MS SQL and Delphi. And once, I had to rewrite one of their Python utilities in JavaScript so that everyone in the organization could access and run it.
I have always thought I was a weaker developer because as a junior dev I haven't learned more languages and frameworks outside of JavaScript and React, but I figured I wanted to get really good with programming concepts, techniques, patterns and architecture and I can then apply those to other languages later. Thanks for helping me feel better about not being a massive polyglot yet.
Don't take my word for it, but I think that's dangerous given JavaScript and React is your chosen specialties. React is a very replaceable framework and JavaScript is a hard language to learn fundamentals in. Don't feel bad about it, but just know that it will benefit you greatly to get comfortable doing something timeless, like writing in C and/or building something from scratch with minimal dependencies.
@@Muskar2 I don't disagree, I just meant to specialize as a beginner in these things. I am currently starting to learn C actually!
@@Muskar2 It's probably more dangerous for the reasoning that browsers are tightly coupled to JavaScript and vice versa. So much so, coupled to browsers where the GUI is untestable and not standardized. If anything, JavaScript has valuable lessons in navigating/avoiding this tight coupling with the complex configuration system it has via various json configuration files.
From a perspective of creating patterns of programs, I would say it's all mostly still there but maybe only less accessible due to all previously mentioned overhead.
C is great but I think maybe too low level for a front end dev to get as much use out of … I would look at Java or C# if you want to learn OO. Another good language which I have come to really like is Python you can write things in a more efficient readable way and you still have OO concepts as well as the ability to write a quick script.
I recall a slide shown at the Dallas JavaScript meetup with frameworks...each year it changed.
I am a self taught developer myself. In my country you cannot use the title engineer, without having a degree in some kind of an engineering field. So I consider myself a software developer, not a software engineer, and that's ok for me.
I'm a chemical engineer doing software development and i dont mind being called software devloper since i didnt study CS. I agree with your country though, the title engineer is used very loosely nowadays. Example some countries will call a millwright an engineer or the aircon technician engineer. It is a very hard course to do at university just to be so diluted and used by everyone. It should only be reserved for people who actually studied to be one
@@fabianpetersen2452people with CS degrees should not call themselves engineers either, they are supposed to be scientists.
People in the US don't mistake a software engineer for someone that can do the traditional kind of engineering. If you heard a mechanic market themselves as "Truck Doctor" you wouldn't be confused and think they were a real doctor would you?
Though I'm studying at prestigious university in my country, I'm still taking online Bootcamp on my spare time.
Modern education makes living, but Self education makes a fortune.
Only caveat I would make is that these are mistakes that those that are not self taught also make (maybe even more so). But the points are still valid. Good video.
There are plenty of qualified engineers that write absolutely crap code. Some of the best and the worst developers I have worked with have been self taught. Far too many devs over engineer everything into a mess of complexity.
No 1: Very good. Completely agree. Probably the most important mindset to have. Readability and maintainability above all. A lot of places don't need to scale too much.
No 2: Whatever. No 1 is way more important. A lot of working environments are way to chaotic for stuff like that.
No 3: Again agreed. Mastering things is more important than chasing fads and trends. Constantly learning means you will never be mastering stuff and constantly pushing out code in languages / frameworks where you aren't an expert.
No 4: Again, great of you have a working environment that you can do that in. A lot of places have to many firefighting issues to be able to focus on only one thing.
No 5: Experienced devs can be just as bad for this.
And this is exactly why robust regulations are so important. With a personal responsibility, with severe consequences for screwing up, bad engineers will be weeded out.
@@vitalyl1327 As I pointed out, some of the best people I worked with had no formal qualification. Why would regulations be expected to help?
@@softcolly8753 same as they work for medics and engineers - by placing the responsibility where it should be.
@@vitalyl1327 medial error is the third leading cause of death in the US.
@@softcolly8753 which can be attributed to one of the most relaxed regulatory regime in the world. EU is a far better example.
I am in a university. And all my knowledge is self taught, one of few things i got from University are Soft Skills and Degree. My entire development and AI knowledge is self-taught.
Experiencing a huge paradigm shift right now. Thanks, Travis
Like others said, almost all of this list is about experience programming in a large team environment rather than anything to do with formal training. As an example of the difference, academics can sometimes write some of the most impenetrable and confusing code out there. Zero comments, no version control, minimal packaging, idiosyncratic coding style, NIH syndrome, but it did something interesting and novel 5 years ago, which is also the last time anyone could get it to compile before that person graduated and dropped off the face of the Earth.
I'm an engineering graduate. I learned most of my coding outside of school AKA self-taught.
I see what you did there at 06:26 ! I just finished reading that book. Can't thank you enough for the recommendation 🙏🏼. I'm happy to see it echo and build upon something that I've always believed in: that wonders and breakthroughs will always come about when somebody finds their specialty and pour their heart into it, no matter how small or niche that specialty may be.
Hey, you got me curious. What is the book?
@@e.m.r1124 Probably it is "Just One Thing"
@@e.m.r1124
It's a productivity & self-help book titled The ONE Thing (240 pages). Travis talks about it in his video: THE Book That Changed My Life As A Developer.
I'm a university trained programmer. No one is asking for regulation that has any grasp of what comes with it.
What is a university trained programmer exactly? What is your degree in?
@@jonaswatson533 Literally Computer Science.
Funny thing about people who say the industry needs "to be sanitized" is they are going to Universities to learn from lectures who are joining bootcamps to also learn from non-university graduates. Everyone who thinks they deserve better treatment coz they spent a couple of years writing assignments needs to heal.
It does not matter how and where did you learn. What matters is who will be *responsible* when your code goes south. This is the difference between the wild west software development and properly regulated fields such as civil engineering and medicine.
@@gppsoftware You are right, that's what you prefer and it has to be respected by those who will look for employment at your company.
@@gppsoftware I agreed with your point, meaning I would still agree with a billion other people who share your view. However I have worked as a programmer for 5+ years now, I have a college degree but has nothing to do with Programming. During my years as a programmer I have come across a lot of graduates with CS degrees but cannot code beyond the old none usable projects that they did in college, and now as I speak, I know of several recruiters who prefer someone who knows hands on programming than just a certificate holder.
Great points. I am not an official developer, just someone who fools around with VBA at the office. But I've noticed my tendency to do several of the things you mention: specifically, (1) working on too many different things at once rather than finishing one thing and delivering it, (2) choosing a high-level language to preemptively study (justifying it as "practical") rather than focusing effort on the low-level work that can serve as a foundation for whatever may be asked for in the future, and (3) "making it work" at the expense of future maintenance (though I've been trying to rein this one in lately). Thank you for the harsh dose of reality! It hurts, but in a good way.
Full ACK to all points. Those are definitely signs of unexperienced developers, whether self-educated or with a degree.
I have a masters degree and it really helps understanding the basic concepts: data structures, efficiency, programming paradigms (object oriented, imperative, functional), etc.
What I did not learn at the university are the "engineering" skills, basically everything you described in your video.
In my career I met two outstanding mentors, both without any degree but excellent architects and explainers.
I rarely comment, let alone like a video, but wow, these tips are great. I, for one, have a big problem with adding huge changes to the codebase at once and never thought about doing it step by step, as you mentioned. I also really think the notebook advice is awesome. Thank you for sharing your wisdom; I will be sure to take advantage of my newfound knowledge! Great video!
I'm a CS major and the only crime in this video is the lack of a red sus reference at 0:46.
You know something cool about software industry, it's no matter what you background is, if you have the knowledge you can even make your own startup
Self-taught SDET here (I primarily use C++/Python in my job). I'm truly fortunate that my coworkers see my different education as a value-add rather than a detriment. I started as a QA Tester in Software Dev and moved over to SDET after 12 years of being a Tester, then Analyst, then QA Engineer. They seem to think my ability to think like another QA role while being able to code has allowed me to create better automation, better tooling, and better tests because I understand the needs of QA and can see potential breakages needing coverage. Great video!
This is the video I'd show to every beginner developer, whether he's self-taught or not. Great video!
I have seen both good and bad in self taught programmers. The main difference I see between the good and bad is the humility. I think it’s easier to fall prey to the Dunning-Krueger effect as a self taught person because you aren’t exposed to as wide a range of knowledge. Granted, CS grads and self-taught folks are just as likely to lack humility and fail to learn new things when it matters.
As a completely self-taught programmer of nearly 40 years, I have to vehemently disagree with the supposition that self-taught programmers are not exposed to as wide a range of knowledge as formally educated programmers. The greatest hindrances I ever experienced while learning my craft were while in a classroom earning my degree.
I had been programming for about eight years before I stepped foot into a University, and exposed myself to many different programming concepts and techniques that my University classes didn't even mention in passing. In my experience, formal training is a choke collar.
@@anthonyobryan3485 +100. I learned how to code first and then studied web development at a local college.
With regards to the exposure to knowledge, as I see it, the vast majority of it is gained as experience during one's career, so regardless of whether you're self taught or college / university educated, it's what you do after you learn those basics that determines your exposure to knowledge and experiences.
As far as college curriculum was concerned, it was relatively general at the beginning and there was a lot of material being taught that was fairly dated. Don't get me wrong though, glad I learned it all because it was all super interesting nonetheless!
I was very fortunate that all the teachers and the IT department head were very open minded and willing to accept input from students for some parts of the curriculum - for example, I found out they were planning to teach ASP classic, this is about 20 years ago, but it was already losing relevancy. Myself and another student wrote a proposal for switching the language to PHP. While PHP surely isn't "the best", it's a great language to learn in terms of web development, given it's wide availability and large community.
We are social creatures and almost everything we do has a goal to increase our social status. Being an "engineer", for a lot of people is a status symbol. Just like being a doctor or lawyer. So, I don't really feel bad when I hear that I am not really an engineer. Because what I am really hearing is "for me, being an important person is very, very important"
That is just not true. It's the mindset of a slave. "look at me, I have climbed higher than you" for people who are really free, they don't give shit about titles. That means they don't care about the title people have. They care about who they are.
Being an engineer, by definition, is having legally binding personal responsibility for what you're doing. Nothing about the status.
@@vitalyl1327Indeed, that's why I unit test the crap out of my services, unlike some people with degrees. I've seen some of the laziest shit coming from both self taught and degree holders.
@@vitalyl1327engineering is just an applied science, legal obligations are predated by engineers lol
This part here (0:20) is a masterclass on how to take feedback that is meant to be offensive and inflammatory, dissect it to see if there might be anything useful there, using that part to improve and disregarding the rest of it. Excellent video.
No one's been able to really give me a sense of what a "unit of work" is before your video, or how they fit into commits and PRs. It's been helpful for a person that learned to code by fixing rather than building a bunch of theoretical projects that began and ended cleanly
As a self-taught developer who helped few of those CS grads get their homeworks done, I think we are fine :)
CS grads talking down on self-taught is wild. They should ask those of us in Electrical Engineering what we think of software "engineering".
What do you guys think of software engineering?
@holdenmarkymark33 Mostly, it's seething about how CS people suck at math (and everything except CS stuff, really) yet get paid more on the top end. There is also a lot of resentment that the term "engineering" is used when it doesn't touch on common engineering staples common to the traditional engineering degrees.
@@professorquarter hahaha, you must have met some of the "senior" software engineers I work with. I'm no genius or math whiz, but some of these front-end cats are embarrassing XD
@@holdenmarkymark33 Yeah, they must be especially non-mathy. I think the math stereotype has to do with a lot of CS degrees only requiring up to Calc I or II, which are actual high school subjects whereas ABET engineering degrees all require multivariate calculus, differential equations, and linear algebra as well at a minimum (most often more than that. I was required to take a basic stochastics class at a minimum as well as what amounted to applied diffeq + LA twice, not to mention the actual content).
In fairness, I have met a lot of math undergrad -> MSCS people working in logistics, financial, etc. software and the like.
@@professorquarter honestly, it's an extremely rare case where I have to apply any mathematical concepts beyond discrete math. I have done zero calculus for work, but then again I work on commerce systems, nothing cool like rocket ships (yet).
Mostly basic arithmetic.
These are all very valid and useful tips. I have made some of those mistakes myself. I think it will take time for me to rid of those problems, but hopefully, knowing them will make me become more aware and fix it before becoming a problem.
Excellence isn't derived from a piece of paper you paid an institution for.
Wise words
Yes, however having a high GPA and receiving the respective piece of paper proves you have an excellent understanding of the foundations of the respective program (CS or CE).
Dev with 15 years of experience. Came in very skeptical, as I always am with such topics, but this video is spot on with every point. This is all good advice for new self-taught developers and really for all developers in general.
Excellent video! I've got 25 years as a professional dev/lead/architect/manager/director. I've been coding since I was 7(poorly) because my dad bought a computer instead of a NES. I've got an undergrad in Chemistry, an MBA, and a PhD in AI (from 2001 when AI as we know it today didn't exist.) I've made every single one of these "mistakes". I've learned from it. Maybe it's rose-colored glasses, but if youtube had existed in 2002, and if I watched your video, I might have been CTO by now.
As a senior dev I normally enforce that people have tests to cover all of their code before I will process their merge back into the development branch. I also look at their code for maintainability and to make sure it solves the actual problem. I have found that most of the self-taught programmers just want to throw something up and move on and while it is fast for them in that moment it is too slow for the projects. My experience is that the time spent debugging later completely swamps the time it would take them to do a better job.
I actively work to train the people I work with to be better programmers with feedback and pair programming sessions. However, some people actually seem hostile to learning and this creates a lot of problems. Their code quality is bad, it does not get better, and it creates maintenance problems.
I know what you mean by hostile. I get defensive when my world is threatened, but I let it all come in and marinate, and I'll come around or form a stronger debate basis. A lot of people can't or won't do that. IMO it is a clear red flag and that dev needs to get replaced soon as it is viable if they are consistently cagey. Titanic waiting to happen, hiding a burned hull...
A junior can still teach a senior on occasion and its part of what makes the mentoring process so beneficial. The moment where a dev thinks there is nothing else to learn, its time to go flip burgers. Another way to put it, someone who wants to be a developer who won't develop themselves can't be a true developer.
There's 2 different mindsets needed during the PR process:
1. While creating a PR the coder should have a lot of pride and ownership to produce the best code they can
2. While the PR is being reviewed the coder should take their ego out of it and instead consider that the code belongs to the team, wishing for the reviewers to surface as many issues and good suggestions to improve the code as possible
In this way each PR has the best opportunity to be of the highest quality and the coders skills will grow at the same time
This is something that every successful (team oriented) developer learns early on in their journey
This branching strategy could also harm testability in this case, too.
@@retagainez We normally aim for branches to live for about 2-4 days. The work is all scientific work and mostly involves a lot of math. The way the code is structured conflicts are pretty rare. A person working on chemical reaction equations won't conflict with someone working on mass transport because those will be in separate areas.
@@Immudzen Ah. In that case, a lack of merge conflicts wouldn't really detract from using branches.
I am more curious about the problem domain you guys write code for and it makes me sad and confused to hear about the hostile pairing sessions. I would do ANYTHING to work in a company with pairing, but I highly expect I won't be exposed to that for possibly up to an entire decade or so.
Im lucky to have a software engineer as my mentor and all these tips are the same advice he gives me, im starting out with learning C# right now…I picked the self taught route because college is expensive, and it takes time away from my responsibilities as I have a mother who I help out financially do to her health problems. Its pretty sad that theres people hating on the subject of self taught developers…sorry but not everyone has the opportunity to go a get a degree, I have found something I want to do as a career and im doing my best with what I have.
1. The opposite side of this is premature optimization. Yes, you should take some time to draft how your code should work and orgabize things in a way that makes sense, but you also need to get to implementing, or all that planning is worth nothing. Plus, stuff comes up, plans need to be changed. So it's important to find a balance between not looking ahead and looking ahead so much that you get nothing done.
This is definitely something I struggle with even in traditional storytelling and writing. There’s a fine balance and some it helps to have a generalized section like a template and fill in the relevant sections.
It makes it easier to commit out sections that don’t work or still need some more lines to work. It sounds odd but it sometimes helps to write the beginning and end and meet in the middle
Sign 4 - "Working on too many things at once. Stop volunteering for everything." Soooooooooooooooo hard to learn this. I do this so often. This video is really helpful, thank you for posting it.
This is amazing content!! 😮 Excellent. I'm going to listen to this several more times. Thank you
Self taught for almost 20 years, I see just as many "traditionally educated" devs make the same mistakes. It doesn't matter how you learn it, if you are truly passionate about coding.
A developer is not a computer scientist or a computer engineer. A computer scientist or engineer can be a developer, but not the other way around.
People that complain about non-uni coders are the ones mad that they paid for something they didn't need to pay for and probably know far less about it than the one passionate enough, and disciplined enough, to teach him/herself.
it's so funny because I am a (mostly, not entirely) self-taught chef and used to hear this a lot about people in the culinary industry. i'm now less than a year into learning how to code and it seems there's always people who just want to be negative nellies and who maybe feel intimated by people who take a non-traditional route to something? great video, have subscribed!
I catch myself doing things like this a lot. This just helped me come to the realization that taking things slowly can help me get farther in huge ways. Very helpful video
I 50s in and as self thought developer it escapes me how engineer lead could not comprehend client side caching. Good self thought devs have a proven track of will to learn and study new things on there own, school grads have a track record of passing exams.
Respectfully, if I may offer some feedback, the “how” you say things are just as important (maybe even more so) than the “what” you’re saying. You may not mean for any negative or unhelpful tone to come across but, for example, your message sounds like you may have a chip on your shoulder about CS grads. I’m not saying you actually do but the tone of what you say can communicate that even if it’s unintentional.
The soft skills of dealing positively with people, teamwork, communication, etc are equally as important as the hard/technical skills. Just my 2 cents, sir! 😊
@@paxsevenfour I do agree with what you say, my storie is that I trusted people too much and it shows more then I'd like. I don't have anything against the students, it not there fault that none really cares about making anything of quality. I worked for under a lead engineer who complained about response size and could not comprehend that client side caching exists and you are not limited to 5mb on a browser.
Lets just say I have a hard time trusting people these days. It's not even that they don't know, they don't want to know. Or don't want to look stupid.
@@fulconandroadcone9488 Students don't learn the "trade" side of writing code. In my University I had ONE course that maybe mentioned any semblance of code quality as a brief aside in a lecture. That was my software engineering course where we developed a project for stakeholders for an entire semester. One lecture mentioned agile, another unit testing, one talked about assertions, design patterns, and some about Git practices. And even that was in passing and not really remarked upon past that.
It's not all "just syntax"
Given the large number of programming languages that are basically shades of C, it can seem like it's all just syntax. From time to time you'll come across the work of someone who thinks "it's just syntax" and writes C code in Python, it's a good exercise in controlling your murderous urges.
That first comment is literally, "I don't think people who are good enough to self-teach themselves skills should be allowed to work in the industry". Actually the most insane positive I've heard on education regulation in my life.
Here, 24 years experience self taught software development enthusiasts & professionals, programming languages are not just syntax, these are also mindsets, many of these comes along with philosophies different ways to look at problem solving, nice video thanks.
5:17 "A language that does not affect the way you think about programming is not worth learning." -- Alan Perlis. Not all languages are just new syntax ... Some will teach you new concepts. Often, new concepts arise as patterns in existing languages, and later, someone invents a new language that is built around the concept. Many years ago, in a program written in C, I saw structs with function pointers ... basically, Povray Raytracer had object-oriented programming in C (not plus plus). Creating a language that is built around the concept enabled the concept of visibility!
Good video. But at 6:11, it really bugs me that you can't spell "TOO" as you talk about competence.
I think it's pretty funny that somebody with a CS degree would call out self-taught developers for not being "real engineers", call himself specifically a "software engineer," and conveniently forget that computer science is a different discipline from a software engineering degree.
None of these things are something an experienced programmer does, either self taught or traditionally educated. This is a sign of an inexperienced dev.
everyone does it, until regulated by a lead or supervisor
Travis! Great to see you here. I just stumbled on this and was delighted by what you presented. Fantastic video!
Hey Sam! I remember our Saturday morning business chats. Hope you're doing well! And thank you!
This is really refreshing. I finished my degree 35 years ago and everything I now use, I mean everything, has been self taught or learned on the job.
I don't know where these college grad kids hangout these days, discord or maybe still on stack overflow, but in my day we were on IRC asking questions and getting advice or saving work to floppies and sharing through sneakernet... Some things never change, there is always a group of people that try to shame or gate keep to protect their ego, than actually putting positivity into the world. I get it, you can't mentor everyone and you sure can't do other people's job, but it takes two seconds to provide a reference link to related material instead of complaining why they suck at programming.
We all started somewhere, even those super cool ego driven ones, but every single developer, programmer or engineer is on their own path and we all have different levels and areas of subject matter expertise. Just like making incremental changes to code, this is a career or hobby where you are constantly learning or improving on some aspect. Don't forget to give back through mentorship or coaching, it can be just as fulfilling as coding itself.
Travis, dead on for many of the points you made.
IWOMM - my fav from a very junior programmer when trying to tell him his code didn't work when deployed - "but, but, but - It works on my machine".
I chuckled at your thumbnail of the obvious code smells and what I would do differently but then thought of how it might have looked to me before I understood code and became quite anxious. Thanks for the humble reminder!!
Two guys who basicaly invented personal computers were self-educated, while people in IBM were "proper engineers". So, yeah, I hope they are enjoying their degree, because I certainly enjoy my job as developer. No degree needed.
Thank you for the confidence to mess up in front of others for the sake of learning.🙏🙏