@@Zerow45yw right? Management in the tech industry is incredible, it's like we took the worlds most incompetent human beings and made them in charge of an entire industry
One of the overlooked issues here is training issues. Every company and senior dev wants to complain about skill issues and jr devs who don’t understand the fundamentals, but companies, senior devs and higher education are all responsible for creating that environment. No one wants to train or mentor anymore. Every company expects everyone to know an extremely specific skill set but won’t provide any industry specific training. That won’t solve everything but it would certainly help and start turning the ship around.
I see this at my firm in electrical engineering, too. The pandemic has made it way worse, since its easy for mid and late career engineers to work form home. In fact, they can get a lot more done, without the distractions and interruptions of the office. But it's ruinous for the young staff and early career engineers. I come to the office 4 days a week, and so does my entry level staff... but I look round and see young staff showing up to a ghost town. Hope you don't have any questions, because you're on your own today. Again. The other thing that makes my blood boil is when I hear senior engineers talking s*** about their junior staff. As if any of us are born knowing this stuff. If engineering was that easy, and you could just learn it by osmosis, then everyone would do it. And I've been around long enough that I can remember these senior engineers talking s***... they had an old timer nurturing them, when they were young. They got feedback and structure and had someone showing them how its done. But 15 years later, they act like they pulled themselves up by their boot straps. That's not the way I remember it, dude... Companies have viewed training as a cost which they need to reduce and eliminate. If they can get away with it, they want someone else to do all the training, incure all of the costs, and then they just hire a fully formed high performing engineer at the end. Many have cheated the system, this way. The big companies are horrible, in this respect. The only problem, though, is, "what if every company does this? What if _no_ _one_ nurtures the junior staff?" You end up with what we see today...
I liked mentoring interns, but that would make me look unproductive, so I stopped doing it out of frustration as I realized that was never my job to begin with.
Im looking into creating a Linux Discord to help people maintain Linux and develop apps and learn security practices. Senior engineers need to help train the younger generation. Corporations need to help out also as AI needs to be controlled and restricted.
Asking other people to teach you essential skills is the wrong attitude. Education is primarily your own responsibility. And you need to do it on your own time. There are too many free or inexpensive resources available for you to say that someone needs to spoon feed it to you. I worked with several junior devs recently and I tried to teach them as much as I could. But I expected initiative and a strong desire to learn that never materialized for this group. They would freeze at the first sign of difficulty and immediately throw up their hands. Some appeared deathly afraid of learning a new concept. High demand for devs in the years past pushed many into careers that they were ill-suited for.
Both y'all coming off funny, but the fact people wouldn't identify CSS as "cascading style sheets" is worrisome for the web industry. If people only communicate in frameworks and not fundamentals, think of how much tech waste we're creating by making literally the same fundamental concepts, but with a slightly different name that's tied down to a specific framework.
@@SimGunther Oh yeah 100%. I'm not a professional web developer, I work in infrastructure but encounter a similar problem there. Many people have vendor-specific knowledge such as "Cisco Switches" or "Palo Alto Networks Firewalls" but somehow still manage to have incredibly poor understanding of the fundamentals, the actual underlying technology that is general and transferrable to pretty much any scenario.
@@TheRealStevenPolley I've encountered this as well. I know multiple people who were completely baffled when I decided to build a homelab network from scratch using basic managed appliances and routing with a linux box using only iptables. They couldn't wrap their head around the idea of learning fundamentals. To them, it was alien that someone wouldn't just get a cisco cert.
Early in your career it sounds like you also had the luxury of time to solve problems. In my entire career as a software engineer, every assignment feels like it was due yesterday, so your first half baked idea is what gets shipped, never to be rearchitected or refactored. Do you think this difference in our experience is due to time constraints changing over time? or perhaps it depends on the company size?
Yeah I think the demand on developers has grown massively. Building a complex dashboard with lots of state back in the jQuery days was really difficult, so they were somewhat uncommon. Now they're seen as a necessity, and companies assume they can be delivered in a few months like any other project. Even if you have a team of 3 developers, your company probably wants to compete with a huge org like Microsoft or Hubspot.
@@davidhart1578 Oh here's one! a manager demanding a dashboard that presents all of the information readily available in the implemented off the shelf web client...
The natural tendency of the market is to crunch employees as much as possible. The idea that just because a certain field is big and moves lots of money that will somehow translate into better wages or working conditions is laughable considering it's often the opposite. Big markets get flooded with cheap trash cashgrab projects and products, and see short term profits up for grabs where any reasonable person would see a booming and efficient workforce
The one issue with this is that there’s always another layer. You can’t just say “learn the fundamentals” indefinitely without burning through rabbit holes all the way down into quantum physics. Be a bit curious, but at some point you have to say “this is good enough”. Have some interest but don’t let your curiosity consume you.
You can't, but you can always see fundamentals as "something one or two levels lower than now". React => Vanilla.js, Tailwin => CSS, Axios => Networking etc.
I thought I understood the basics until I got a job at a computer shop that was the ISP for a local community. Then I learned how deep the rabbit hole goes and which rabbit hole I didn't want to go down
Yup, I'm realizing this more and more as a recent hired grad when senior engineers need to ask someone ELSE about my technical questions. I'm slowly calibrating that curiosity and seeing them as fallible humans as well.
Programming is increasingly becoming a great hobby and a horrible career. You are expected to live, eat and breathe software. You are expected to spend a great deal of time outside of work keeping on top of new developments. Many people don't take into account _why_ they feel a compulsion to continuously learn new things as a software developer. It's usually not something you actually want to do (although many of us fooled ourself into thinking that), but rather something being done to avoid being rendered obsolete. When you take into accout that you must live the lifestyle of a software developer in order to make a living, I find that it is not worth it. You don't see this in other career paths to the extent that it's found in this field. It takes over your thoughts in and out of work, your RU-vid algorithm, your interests, your hobbies, engulfing your time for what? Money. If you value money and like working in this field, I recommend adding up all the time you spend thinking about software development outside of work and factoring that into your hourly pay. You will find that it's not as much as you thought it was, and that perhaps it's not even worth being consumed limb from limb by a field that is experiencing a potential mass extinction event in the near future.
@jamm_affinity That's one of the reasons I'm considering something like accounting instead, doesn't pay so good especially at entry level however at least once you get your CPA and know all the fundamentals you're not going to ever have to do it all over again and study for some new hip reinvented CPA cert every 5 years or so of your career In order to have any idea of what the fuck you're even doing anymore and have relevance to employers. There's also the fact that taxes are constantly needing to be done whereas there's booms and busts in the tech industry all the time (just look at what's happening to new grads from CS and bootcamps right now)
@@hollowgonzalo4329 The only reason it is like this is because it is oversaturated. There's a selection event happening and it is clear, only the elite developers should stay in the field. Anyone who is not elite (top 2%) is better off to recognize this and spend their time elsewhere, or they will have a very hard time keeping up. You'll probably be better off going that route. Is it shiny? No. Is it on a cultural pedestol? No. But it's practical, and computer science is not. There's an entire generation of comp sci kids who turned into RU-vidrs because they didn't make it into the field who are now trying to convince everyone how great the field is and how "anyone can do it", and it is one of the biggest cultural intellectual traps of the past 10 years.
The best comment I've seen in a while. You are absolutely right, after 5 years struggling with this I decided to move one and code only as a hobby without the pressure all the sacrifices of health and time. I only got here because I liked computers and games and wanted to do something I understood and wouldn't bother me too much and get a living out of it but now programming is made so vogue because of dozens of videos like: "my life as a software engineer at faang" and blogers talking about the perks of remote work and the salaries. I don't want a Faang salary or perks, I now have to get creative and find news options.
@@jan0195 Thank you. I was in this same boat brother. 4 years mastering the craft, building all sorts of projects, landed a crypto gig making great money and got laid off after the bust. Wasn’t able to find another job. I see programmers as the new artists. In that, 99% of them aren’t successful, but creative types just building things that they think someone would find value in but that is ultimately not financially viable. I get a lot of flack for this, but most developers can’t see the writing on the wall. Too many emotions tied up in accepting that they will have to find a new way to make a living. Best of luck to you. I went back to the trades and am doing a bit better now. Started a painting business as well which I’m building up. Make more for my time than in software dev with a fraction of the stress.
I think something interesting is that you are basically talking about abstraction. When new developers don't understand the fundamentals that make up the current level of abstraction that they are working with then when problems arrive they often don't have enough knowledge to solve them.
I've seen this constantly in my job. Management is partly to blame. Most of them are non-technical, and they're constantly pushing for more "abstraction" and "automation" without understanding what that means. They have this fantasy that they can somehow abstract away every single bit of tooling, until eventually new hires can just write code and throw it into the void where it will magically end up in production. And maybe that sounds great... Until something breaks and no one understands how any of it works. I've gotten so much push-back at work when I insist that new hires NEED to be familiar with our toolchain and they NEED to be trained on our specific infrastructure.
I'm so glad I never did any front end development. Not that the business tier was any bed of roses either. You're spot on with we're building at an abstraction level now where we don't understand the basics. Some people get it and dig in, others are happy to stay at that higher level and never really pick up the knowledge they need to handle more complex development tasks. Everyone just thinks there's a package/library for that. And a lot of the time there is. If it works, if it does what you need, if you don't need to modify it, if it continues to be supported, the list of if's goes on. But that's all somebody else's problem now. I retired a few weeks ago and I'm happy to be out of the game. It's no fun anymore exactly because you don't have the opportunity to dig in and learn those things.
@@ozhoneybadger Poorly done agile for the most part. Though that's pinning too much blame on one thing. You just don't have the time to do it right anymore. Even at a good company with a strong development culture you're still crunched for time. Also I turned 60 not that long ago and I've got enough investments to do everything we want to do. So the real question was "why keep working" and I couldn't come up with an answer.
The best way I can explain career progression is this: I want to be part of the meeting. Do I need to be part of the meeting. Just give me a summary of the meeting.
One of the downsides of modern software development is "standing on the shoulders of giants" a lot of people skip fundamentals and start with high level abstractions instead of starting from the bottom. This results in many of new industry entrants lacking the required skills to troubleshoot and debug their stack beyond their abstractions.
Yes, I really feel a difference between now and then. Nowadays, people learn a lot of frameworks and put it without a clue what they are actually doing. Software packaging became harder than the software itself. Also, I don't understand why web-based standalone software is so popular now. No one consumer likes that, but they have no choice. Web-based approach and software-as-service is the worst practice I have even seen. It requires a significantly larger team, and it costs significantly more money, but the product's functionality in most cases is strictly limited.
Simple way to summarize that is the newer people in the industry lack deep knowledge of the systems they are using. Its proving to be somewhat dangerous as well. The industry is actually in trouble and has been for a while. Its not solving problems very well. An example of that is i have 2 sites currently where the environments for both front end sights are mutually exclusive with each other since they rely on different versions of the same framework which requires installation of global tools. eg the frame work shoots its self in the foot by the environment is created its self. This has become true for node, python and many other languages where even reasonably short time scales eg weeks or months these problems get created. We then attempt to solve these deep problems by taking the environment out of the environment and putting it in another environment. aka we bury our heads in the sand It's not just that new comers lack the skills. It the abstractions leak like a sieve and the solution each time to these problems is "new and shiny" frame work which has all the same issues in a new way.
I think you're right, but not because people don't want them or can't use them and not because people don't want or can't use junior engineers either. There seems to be no path from junior to senior for most people. If you get really lucky and work somewhere that gives you space and time to grow and the company actually has problems that you will learn something from solving, then you'll do well. If you end up consulting on WordPress sites or whatever then you probably won't. That's really it. Other jobs are similar. You can't become a foreman on a construction site by just installing people's bathroom doors for ten years.
This is a great point. Ideally we use frameworks etc not because we *can't* implement that functionality ourselves, but because we have done so before, felt the pain points the framework was designed to solve, and then *choose* to use the framework for reasons of convenience or productivity. For this reason, if I'm training someone, I don't immediately start them at the end point. Rather than starting a new project by importing all of the frameworks and tools which we might use for a large-scale project, we start simple, build things, and only introduce the fancy tools and abstractions *when the pain point they were built to address actually manifests*. This way, their learning journey more closely mirrors the history of the industry itself, and the timeline of different technologies which were introduced. And so they understand more of the *how* and *why*.
I enjoyed this video. I've been experimenting by myself since 20 years ago, anything, programming, networking, cryptography, even reverse engineering, being from html/css to windows drivers (just because I was interested), Linux/Unix, I've been a programmer and a network engineer as well, I'm no better than anyone but I do believe that having the fundamentals completely covered and then experimenting a lot (just because it can be fun) has give me the edge in many circumstances because I can see the relationship between things. Looking forward to another talk from you.
14:36 The issue I have with your statement is that no one knows what a job entails until you get there. Like your plumber example the more exposure a journeyman gets, the more prepared they are for complicated tasks. Part of the journey to Master is set of skills that is industry standard people are required to know to receive that designation. The problem with software engineering is that there is none of that. On top of recruiters and hiring managers don't know how to designate certain standards based on certain levels of experience to adequately assess people.
Very good point. Repetition isn't something we emphasize in the industry, but there is a confidence that comes with doing something until it becomes second nature. I've set up cloud services before, but I'm not doing it regularly so it's always a bit daunting. I'm sure if I spent a while in a pure ops role it would be no problem at all. I definitely wouldn't recommend someone try to learn everything at once. Maybe 2 years of getting to grips with regular development tasks is a good base before branching out, around the time you go from "junior developer" to "developer". The hiring one is also a pain, it's the old classic, "it says here you have 5 years as a web developer, but do you know HTML?"
I don’t know what to do anymore. Ever since I got laid off from my first dev job at the end of last year, I haven’t been able to find a role in the field in over 8 months. The grind to upskill and make myself appealing in this job market has left me burnt out. I don’t know if I dislike software engineering or just the process of getting a software engineering job. The problem is, I don’t where else I can pivot too. I am first generation college graduate that comes from a low-income family and my plan was always to use this career track to not just uplift myself but my family out of poverty. I am not sure if I’m cut out for this line of work anymore.
That's a really tough spot man, I hope you find something. The market right now is worse than I've ever seen it. I've applied for jobs I could do in my sleep and gotten automated rejections. Don't take it as a reflection on yourself, it's really tough out there right now. I know that doesn't help with getting a job but don't let it affect your self worth. I'm still trying to find a new job myself, so I'll make a video if I do find some creative solution that works.
@@davidhart1578that's been my experience recently too. Reminds me of when I was trying forever to get a job during the GFC. Not nearly as bad but still not good. I think all employers now want or can only afford to hire perfect cogs into their machine that chases quarterly targets, for as little as possible. And they're happy to not hire until such a unicorn appears. Probably when we enter a recession and mass layoffs ensue.
@@davidhart1578no idea why my previous comment got auto deleted by yt, but I concur with what you've seen. Not nearly as bad as during the GFC, but still not good.
You'd probably make way more money bartending in an elite club than as a software engineer with little experience. This field is not for everyone i think especially not for people who are not willing to constantly upskill and learn new concepts and tools just for the heck of it. The return on investment in terms of time spent is just good vibes unlike in other fields where people get paid more or move up in the career ladder. It is a fulfilling career for the people with the right mindset.
Very good point, I went to college with a lot of people who got lured in by the pay and ended up hating development. I don't know if anyone gets excited about insurance or accounting for their own sake, but because people do for development it's become the industry standard. No portfolio? No open source contributions? What do you do in your spare time, have an actual life or something?
You're a senior engineer when it doesn't matter what the problem is and you can solve it. Language, OS, frameworks are irrelevant. I have been at it 45 years and have held the title for 35 years.
All of yall are highly pretentious if you can think you can solve literally any problem. If you truly think like this you're working on the wrong problems
@@IVILGPr0 part of solving any problem is also making sure theres no XY problem and making sure you're the right person for the job. I dont see why that would be working on the wrong problems if you're getting paid. Of course you can always take initiative and say its no problem but thats pretty situational
We stopped learning all the fundamentals because there is too much advanced shit. You need to learn 9 billion things just to get the most basic of basic ass jobs. I cannot be expected to know everything about networking, design, computing, memory management, 12 different languages, 20 frameworks... at some point we've got to stop and simplify these cursed stacks. And if not, people can't complain "oh you don't know the basics". Well then give me a job where I can actually work with the basics. We can't know everything
That's actually the problem. If people become expert for framework X, their knowledge is superficial and quickly outdated once the framework changes or another framework is hyped. If people understand the more fundamental concepts of imperative programming languages, object orientation, functional programming, they can more easily adapt to new languages and also better understand the hidden complexities of a 'something.parallel().map().reduce()' call or why recursive calls can easily cause memory issues, once they know how stack frames work. That doesn't mean everybody needs to write in Assembler, we need high level languages and frameworks for efficiency. But knowing roughly the complexity behind the curtain will help in making better, more informed decisions.
@@zamnnnnnn Yes but all the framework are necessary to work, and they are fairly complicated and take time to learn. We can't learn everything. If the industry has decided we need to know 10x more technologies than in the past, so it will be, we'll all be 10 times less competent. I don't know what the solution is
Finally someone speaks something useful about programming instead of mass-producing tutorials for beginners or reacting to someone else's reactions or a day in life of a software engineer. Keep it up!
@@-BarathKumarS 100% agree. Do NOT work with any "manager" that is not technical (math doesn't count). Especially if they're too young to know better - as in, its their first job out of school and they're *still working there (you know who you are).
@@eyesopen6110 too much respect hampers personal growth.. it reaches a point when even if you bring an innovative idea to the table, "respect" politics will squash it.. at the end, work will just be non-productive, just acting as a busy body, and trying to maintain "respect" politics.. if you don't believe me, ask Japanese salary men..
@@StarnikBayley No one said anything about giving "too much" respect. Better manners than a 3rd grader would be fine. Zero respect creates a 100% non-productive environment. - Seen that first-hand with over 100 so-called "professionals".
@@StarnikBayley Without 'respect', common sense ideas (based on decades of experience) are squashed by waves of entitled (zero experience) brats who know nothing... Parents need to run the 'household', not the children.
3:11 "Im gonna act like Im paying you $500 Euros a days, hoping one day you'll be worth that amount of money" powerful thing to hear from someone who's in a position you would like 💪
Senior devs are those who survived enough of those impossible to solve tasks to come out a bitter, opinionated and short tempered git. The nice ones are still sociable. Architects are worse.
Complexity management is the hardest job. Trying to design and build a system that will work for years that other people will support and maintain is really hard. It takes years to learn how to do that and you can't learn that in school.
hey, great ideas you've put together! I've also started in early 2010s (2010 to be specific)! I guess the earlier one starts their career in software the better developers they are now. I think we are kind of lucky we were able to start careers earlier as we had to go through a lot of shitty stuff to make things work, let's say the lower level of everything, so we now have a better understanding of many things that exist now that actually make the development a lot easier, e.g. kubernetes, docker, react, angular, etc. We have a lot of abstraction over many different things in software, but not many developers learn what's under the hood
Junior dev can accomplish a small task on it's own. Mid - can create a module on it's own. Senior - can create entire system. That is major difference - Senior it's not nothing it is massive amount of knowledge backed by big project work. Naming yourself "Senior" means Jack sh*t - you got to prove it.
Hey, appreciating your input on these issues as another Irish software dev. It's interesting that your learning experiences have become less and less possible over time. The idea of struggling for months to implement a single pipeline is a bit mad as it isn't possible as a junior dev these days. It is sad because it's clearly important to struggle and look for instruction, these experiences are what make you as a software dev.
Great little discussion. As a total aside you remind me of an old mate of mine I knew from LARP. Have you ever used a shield and foam warhammer in anger? 🤣
Im currently a senior infrastructure engineer, but during my help desk days I assisted many developers with their machines and it was startling how little they knew about basic computing and networking concepts … like they only knew the code they needed to write and nothing else 🎉
Back in the day: "We need a contact form that validates the email and sends the comments to this inbox. Can you have it next week?" Now: "We need a new feature in which these 14 APIs need to be consumed, aggregated in Redshift, do some number crunching in Go workers and dump the resulting analysis onto S3 buckets using Parquet files, which should trigger events to be sent to an SQS queue and re-processed by these two Lambdas and these three Fargate instances. Can you have it by tomorrow EOD?"
Yeah it's a tough question. In the past I'd have said to put together a portfolio if you can spare the time, but I'm not even sure if that matters anymore with automated filtering and AI reading CVs. I'm in a similar spot myself tbh, I've got 12+ years of JS but no commercial TS experience and I can't get that experience without a job that uses it. It's a race to the bottom, as long as someone with 2 years experience is willing to take a graduate job or internship they'll keep making it a requirement.
My work life balance is great and I'm a senior (5 years exp) employed at a blue chip. After getting a taste of freelance and some other physical tradeskill work I've done recently (house renovation), I've just come to resent working for anyone else, upskilling to improve the processes for my company seems unrewarding. I had to spend a few months working on some wordpress site (I hate PHP), the design was pretty weird and the CSS took a while). By the time it was over, I'd forgot a lot of the React/Next.js stuff I'd been working on prior and had to learn it again. The constant back and forth for the same pay, isn't worth how mentally taxing it is. We've moved frameworks a lot, I enjoyed learning for the sake of it to a point. I just think, why am I doing this for someone elses disproportionate gain.
Son, when I was a junior the senior told me nobody would ever become a proper senior because we no longer needed to understand assembly or punch cards. I am old now. Ancient. And I don't think that this is the case. Juniors simply learn other stuff. They do docker instead of learning how to get the tool chain working. They can't speak C++ no more but instead know Rust. Times are changing but the juniors are fine. They will learn the same amount of bullshit, it's just from another bull. Disclaimer: not a web developer. I build robots. Haven't built a website since Google maps was on version 2 and the full stack was called a webmaster. But it is the same process.
At 9:00 I would ask what percentage of our user base is IE7? Given the constraints of IE7s lack of features is it worth the time and effort to make this feature, if the percentage of users is small. As a software engineer we have to examine the cost of things and tell our company(stockholders) the value and cost of things. Sometimes this is not clear. Love how he is like, it went through QA and got released. Now onto my next job.
In my opinion as a relatively fresh software engineer (7+yrs exp) I would like to have a real senior engineer I could learn from. I had one at another job but now I am the old one. And I still have tons of work to do to master my 3 languages I always use.
I have a similar story. Started out doing embedded C programming on an 8-bit microcontroller. Now everything is CDK constructs. Knowing the fundamentals does give some insight into how things really work, but I can see the temptation to "skip to the end"!
As a senior EE dealing with hardware, there are some things that are shared in common: be self-motivated, know where and how to find the right solutions, not be afraid to admit mistakes, and be a good mentor to the entry-level engineers and interns. Usually, there is a fork in the road at the path of senior engineer: does one wish to move towards management, or does one wish to become a subject matter expert/tech fellow/chief engineer? Both progressions take you away from the oscilloscope and the soldering iron, so this is it if you really want to stay close to the nuts and bolts.
watching this video as a computer science student is so weird, it gives me anxiety but relaxes me at the same time. great video man, really nice points you made
We are still a bit in the wild Wild West in Software engineering. The specialization is not really well defined as it is for doctors, lawyers, and even trades people. We are sort of expected to be front end (web, mobile, desktop, IOT, UI UX design), back end, databases, QA, DevOps, cloud, data engineer, data scientist, machine learning/AI, project management, cyber security, gaming, etc etc. Not to mention all the languages, frameworks, tooling, and domains. Each of us have very different paths and we all have a unique mix of competencies.
I agree. There's a lot of standardization to be done and there is some being done. But it's frankly lackluster for standardization in terms of how a developer or software engineer works on a project. Some web dev (like David Hart here) can do web development without ever touching upon something as simple and fundamental as CI CD. That just means nobody taught him to engineer something that goes outside the web browser.
Great vid. Working with senior devs who knew internals and how to use different tools outside frameworks to solve issues was eye opening to me, very humbling.
The companies that are leveraging AI too much are going to hit many anomalies that will need to be fixed. We still need engineers to build automation, however all of this needs to be tested and made secure. It is going to take many years and we will need people to interface properly with AI and control it. The problem comes with suits who believe AI can do everything, because they dont want to pay humans. Governments should look into paid internships for people.
Starting from the computer itself is the only way up. It doesn't need to be super deep, but so that one gets the ideas behind Everything. Just avoid quiche for a while.
Great video. I’m an electrical engineering student and understand none of the jargon, but your way of conveying ideas made me sit through the whole video. I have trouble committing to problems that I have doubts in and your video is a great reminder that any consistent effort is worth while.
This is such a strange mentality, everything you have just said can be applied to yourself but one level down. You are drawing an arbitrary line in the sand and saying this is what being an "expert" or "senior" is. What happens when vanilla JS hits the fan? Are you going to debug the underlying assembly? At some point junior developers have to build onto what others have built. The level of abstraction will increase more and more and mentality like yours old fashioned and frankly outdated.
I get why you would think that, but I think the problem is that more recent abstractions are incomplete. It's nearly impossible to cause a segfault in vanilla JS, but it's very easy to create a race condition or infinite loop in React. HTTP is essentially just "magic strings", but it's very rare to have a problem go down to that level. Protocols and languages are well defined enough to act as a foundation, whereas libraries are just scaffolding. We can opt in to memory management by using a non-GCed language, but we can't opt out of async execution by using a library that looks like it's synchronous code. Our over reliance on them might become less of an issue in future, but only if they become more reliable in general. That said, thanks for weighing in ❤️ always good to have reasoned criticism!
Reminds me: "You worked as a surgeon on a world mostly free of disease and human suffering, so your job focused on elaborate and creative cosmetic surgeries. You understand human biology, deeply, but has never had to remove a tumour - or a bullet." I think this is inevitable - that's the price of technological progress.
I am a senior advisor with advanced degrees in Mathematics and Physics and am willing to mentor and tutor anyone and no one wants to be mentored. I offered to help people with math by giving lectures on the lawn. No one wanted to participate. The screams and yells about schools failing their children were ploys to attack the school board politically. I know. I am having major issues getting a job. No one wants older technical people. I had an interview that went well and when they figured out how old I was the human resources person said "we are looking for younger talent". I wish I had recorded it as I could have sued them for age discrimination.
I think that the way lots of companies approach software engineering where they break tasks up into small pieces that take a week tops ahinders jr devs ability to develop the resilience and deeper problem solving needed to reach sr dev
I got my first IT job in 1995 and I have been a software dev, web dev, Network Eng, sysadmin, IT Manager etc.. and David you are 100% correct. Really great Video.
The thing is, engineers said this 20 years ago about us when it comes to not knowing how the lower level or precursors work. I am not saying don't learn the fundamentals, just wanting to point this out. I've always had a knack for 'how does it work?' and it also helps that I love pixels and terminals :) its important to keep your mental and physical health, so please treat your body well and don't go full degen[erate] mode for gaming or working, you're not impressing anyone. You will 'wake up' one day and realize there is more than just a job that needs to be built. Ex. I'm in my 30's and I decided im gonna be too old soon and bought a honda grom and started learning to do wheelies.
Re: Fundamentals: When you “learn it” do so by also practicing it. That’s implicit here since as we know you can have academic knowledge of things but when on the job, actually addressing it can be far different or more difficult. IMHO, it’s great to practice on the job as well as in your own time (depending on your personality). Of course if you’re learning at work, make sure it’s safe and sandboxed (again: depends on what it is).
I agree about the framework thing. I think the only thing people should focus on (or at least what they should mainly focus on) is os, hardware and comuncation skills. The rest is just fluff and is easy to learn afterwards.
@bdubs85 He's not saying there won't be senior softwarw engineers, he's just implying that the quality of future senior engineers is going to be trash compared to the old school one's in general and it's not entirely their fault.
Just the first 2 minutes of this video is something I've tried to explain a lot of people and failed to do so. More years doing the same doesn't make you a sr, except for that thing (often too specialized) you do. If that thing disappears, you're done so.
You think the React level of abstraction is bad .... just wait until you see the "low code" tools that are being forced on some developers by non-technical management.
So glad I was able to enjoy a software career when it was still fun and they still hired white guys. Believe it or not, this once was a great field to be in. I started out with C/Unix in the 90s, those were the best of times. But good software developers work themselves out of their own jobs, and that is exactly what we did.
As an embedded engineer, I mainly use C/C++, Bash, Python3, Assembly. I get massively frustrated, whenever I'm forced to team up with developers that solely use higher level languages. They don't understand pointers, lack networking knowledge, don't understand how (web)sockets work, etc... Most can't even come up with their own logical solution to a problem, without having to use a cheat-sheet with predetermined algorithms they learned at college or university! Their lack of Linux knowledge causes reoccurring dependency issues, but instead of solving their problem by learning Linux as a new skill, they just dump everything in a docker container instead... Some don't even understand the difference between a local LAN IP and a public WAN IP, nor the concept of port-forwarding, etc ... I'm one of the younger dev's at my current workplace, with 7 years of experience. However, I'm the one who has to explain basic knowledge to our senior dev's with 20 years of experience...
There's a lot to this problem. I think so much of it relates to industry hype cycles. There's so much hype for abstractions that claim to challenge our development paradigm by tying things up in a bow for us, but there's so little excitement for C, POSIX shell scripting, SQL, the osi model, or computer architecture. Why? None of these things interest shareholders. They're the opposite of new. They're proven. Shareholders don't care about it (it's "priced in") -> managers don't hire for it -> universities de-prioritize it -> learners don't learn it (unless they go beyond their classes). As a sector, we've turned our best senior engineers into wizards by avoiding teaching learners fundamental skills -- all in service of furthering a collective delusion that how things work under the hood doesn't matter.
@@chriss3404 Well... That's massively frustrating when you work as an embedded engineer, with both experience in hardware, firmware (and software) development... The lack of low-level understanding of the senior/lead dev at my workplace, results in the majority of our products being massively over-engineered! Development of everything takes ridiculously amounts of time, the end result is complete jank, etc ... I also do projects as parttime freelancer, outside of my fulltime job. Some of those projects are more complex and larger than the projects at my fulltime job. I usually complete those projects 3 to 5 times faster on my own, compared to my fulltime job where we're with 5+ developers! That for less money and a ten times higher quality as wel... If I weren't stuck for financial reasons (mortgage), I would've gone fulltime freelance years ago!
Guys, you're both based. I'm thank God that my situation allows me not to work in IT sector in order to not stand with bloated technologies. I'd rather not work with it, than getting decent salary
I'm a jr backend, i work in an old company for nearly 2 years now, this is my first ever SE job, most of the time I deal with 20 years old perl project and our new kotlin codebase. There's so much stuff that is customade thus understanding fundamental stuff is somewhat mandatory otherwise you have no clue what you're doing, one example is that we host our own sendmail server and that thing so old that it is older than me and is a pain to work with, and there's so much more to learn. However, I'm considering getting a new job not because i hate my current job, but because the urge, the feeling of trying new things at a new place. Any advice from any one with more experience on this? Should I stay maybe 2 more years before I move or should one be jumping everywhere everytime?
Now imagine junior developers using chatgpt "how do I write a website that...". Chatgpt scrapes it from one or more sources, as it's not real AI, then spits it out. Now your junior dev doesn't even understand the abstraction's outer layer.
I dont fully agree. Principal Solution Architect here - it's more about understanding the needs and system design at that point. Senior devs make it all work and when involved early can really help stay away from some sharp corners. Decades of "making it work" is probably some of the best experience I bring. Nothing beats "I know 5000 ways it can't work" though. Can confirm that I can crank out software like a beast, still, though :) Unfortunately, it not the employeers best use of my time often, so I have to stay sharp with side projects.
I think there are differences between programming languages and fundamental tools. That's what makes people senior. Big ideas. CI (and CD by extension) is not a very big idea, but it's fundamental to reaching big ideas. Generally, like with stock investing, you want to focus on worrying about things that aren't just fads. The web browser, a tool, (and by extension HTML / CSS) isn't a fad, but picking your flavor of JavaScript in the form of a framework is more towards that description. CI / CD is pretty young, but it seems so agnostic to any language and just a step above those kinds of concepts in terms of delivering a product...
There are no fundamentals in engineering other than common sense and problem solving skills, both which are impossible just to “learn”. You either have it or you don’t.
That's a pretty broad question and I think you're going to have to make your own decision, but I'll try give my rough thoughts on it. Being a frontend developer has some advantages in that every website uses JavaScript to some extent. Historically you could pretty much apply for any frontend job, though this is less so the case now with the React/Angular/Vue split. Still, there is no shortage of jobs using React, and you can potentially leverage that to get experience with different backend languages. Companies tend to hire more full stack/backend developers in my experience, particularly smaller ones. Most of the business logic is in the backend, so it makes sense. My last company was afraid to hire anyone who didn't know Ruby, despite me pushing for more frontend developers. Cybersecurity is a very different field. I'm not in the industry so take this with a grain of salt, but my view of it is that it's much more procedural and there's less room for creativity. You're largely ensuring that a company follows proper procedures and that their systems are protected from common exploits. They do have standards for learning and certification however, which I imagine would help with the fear and insecurity that developers often feel about "falling behind". Personally if I was starting today I'd learn something like NextJS, which gives you a solid grounding in React while keeping everything in the same language. This would let you apply for a lot of frontend roles, or full stack NextJS roles. It's probably worth experimenting if you have the time. Find something you like and go for it, the last thing you want is to spend 8 hours a day hating the language you work with. Best of luck!
@@davidhart1578 Thank you for your time , I really appreciate it. i wanted to say that you got yourself a subscriber but i already did subscribe. it feels like your a genuine person who would like to help and give advices not just like some shrimbo who is only looking for subscribers no matter what. Thank you sir and have a nice day.
I have a similar trajectory in my development career and it was the same working on shitty codebases, stepping up to do things i did not know how to do, and being lucky of having more senior programmers that would help me reason through issues. Nowdays so much focus is put on react and all the framework i rarely hear people discussing actual things they are building and the deeper problems they are solving.
I'm just starting to learn rust programming and I absolutely love it ..I'm just finding myself I lil bit doubtful and wondering if by the time I get a hold on the language there is going to be a job ... love this channel I'm a sub now bye bye
This is good advice. But more generally learn what's underneath whatever framework you use. But I would say learning some networking details is mandatory. I've interviewed hundreds of people, and it's just baffling to me that someone can work on a networked system for 10+ years and not know even the basics of debugging a network connection. So you've built code the uses networks and never ONCE have used tcpdump or netstat? Incredible. This tells me that you give up on problems and some other guy debugged your issue.
Hey Dave - you actually just won worlds best neck beard !! €5 billion direct to yr account ! Quit the job - close down the channel - profit 🏆 Enjoy the holiday in Monaco 🇲🇨 !
I came across some "full stack" developers who didn't really know how to debug a website 😮, I endeded up helping them to solve their fixes debugging deep down third party libraries, what a joke!
Instead of saying "Senior engineers are a thing of the past" you could say that "Knowing what your doing is a thing of the past". The complexity businesses force onto their coders is crazy stupid. If they did not get the free billions then those using React and the like would be out of business. As a senior software developer/engineer I have my own custom software platform as a result.
Senior Engineer : = an underpaid Engineering Manager , there is no difference , you are expected to deliver an end to end solution with / without a team with 100% customer satisfaction on your own....its the most ruthless position in a org, but if you can train a team and deliver , mate the whole thing becomes a bazooka and can achieve whatever you can imagine
A lot of rambling in this video. And it's hard to agree with some of your points, all of which could be condensed into under 2 minutes. We will need less software engineers because AI makes them much more efficient at their job. This is going to make the job market a lot tougher causing wage deflation and requirements inflation then eventually less people will learn to code and the market will kind of rebalance. But I would say working as a software engineer as a 'job' is going to become less rewarding as time goes on. There's other things you can do with these skills that is more rewarding though, and that will probably never change. Better to be nearer to the cutting edge technologies, and web frameworks are not it.