Reacting to Controversial Opinions of Software Engineers

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
object-oriented programming is absolutely the worst thing that's ever happened to the field of software engineering [Music] in today's video we'll look at some of the most controversial programming opinions coming from highly experienced developers on stack overflow which is known for its kind friendly and not toxic at all community i'll give you my initial reaction based on my 10 years of experience primarily in web development but in full disclosure i only have about 5 000 rep on stack overflow so my opinion doesn't really matter very much if you're new here like and subscribe then leave your most controversial opinion and i'll choose the best one to win a free t-shirt of your choice and i just released a whole bunch of new merch designs so check those out to support the channel and keep this content coming alright so let's get back to that initial opinion that basically says object-oriented programming is horrible developers have been hating on oop a lot in recent years and even the legendary edgar dykstra is quoted saying object-oriented programs are offered as alternatives to correct ones the idea behind oop has been around since the 1960s and allows developers to encapsulate data and logic inside of objects you start with a class which is like a blueprint that can then create multiple object instances these classes can inherit behaviors from each other forming a hierarchy of abstractions in addition there are a bunch of design patterns to go along with it like singleton factory dependency injection and so on all these features and design patterns sound sophisticated and sometimes they trick you into thinking you're making productivity gains when there's likely a much simpler way to get the job done a common complaint is that object-oriented languages require a lot more boilerplate than something that's more functional in nature and applications end up having a bunch of mutable state that's difficult to test refactor and just reason about personally i do think these criticisms are valid but a bit overblown in javascript i rarely implement my own classes and basically never use inheritance instead i create modules that export functions and plain objects that makes the code tree shakeable so that dead code can be eliminated when it's bundled together you also don't have to worry about things like constructors getters and setters that this keyword which in many cases just add unnecessary complexity but that being said i do come across cases where a class is a really nice way to encapsulate something and they do work really well in frameworks like angular or nest that have put a lot of thought into how to work with classes in a predictable way and there's also other tools out there that i really like that are fundamentally object oriented like flutter or the unity framework when done properly object-oriented programming can be very nice and intuitive but it may not always be the best solution so it's good to keep an open mind about procedural or functional approaches as well programmers who don't code in their spare time for fun will never become as good as those that do the idea here is that if you're not passionate enough about coding to do it in your spare time you're never going to reach your full potential now i actually disagree with this opinion even though i'm the type of person that writes code in my free time i think the reality is that many people treat programming as a job and there's absolutely nothing wrong with that there are some super talented programmers out there that can get stuff done with a fraction of the effort that other programmers might need 10x developers are real and it's not because they're programming in their free time they're just built different than the rest of us like ellen iverson and his prime didn't even have to practice and he was still better than pretty much everybody else we talking about the game we talking about practice man being a programmer is not just about writing code it's also about communication being a good team player vision creativity and a bunch of other soft skills which brings me to the next opinion lazy programmers are the best programmers or another way to translate it is work smarter not harder i agree with this one 100 but i think a better word for lazy might be something like clever working hard is good and all but sometimes it can blind you to a better solution like have you ever been stuck debugging something for hours then you take a 10 minute break and come back and solve it right away that's a phenomenon experienced by all developers and has happened to me many times instead of working hard be lazy about things take a break and come back and look at it with a fresh set of eyes in addition when you suspect you're doing something inefficiently it might be valuable to devote a few hours to learning a new skill maybe you need to write a function that checks for an odd number and currently you have an if else statement to infinity you might actually save some time by taking a few minutes to learn how the modulus operator works but in some cases learning might even be a waste of time the next opinion is that googling it is okay one time my doctor told me that googling stuff online doesn't make me a doctor that didn't make a whole lot of sense to me because my most important skill as a developer is being able to google things a better opinion i found on the same thread goes like this it's fine if you don't know but you're fired if you can't even google it i agree with this opinion because the daily work of most developers is about problem solving for the business as opposed to more theoretical algorithm implementations that you face on an interview google is not the solution to everything but knowing how to use it efficiently is definitely a skill that any experienced developer should have on a related note another controversial opinion is that a degree in computer science does make you a more well-rounded programmer this is controversial because many influencers out there today say that you don't need a degree to be successful as a programmer you don't need college learning learn stuff okay everything is available basically for free you can learn anything you want for free and many big companies have dropped their degree requirements for developers altogether personally i don't have a computer science degree everything i've learned has been self-taught or learned on the job and i've met many other developers making big salaries without a degree so you definitely don't need a degree to break into the industry but that being said if i could go back in time i would probably pursue a computer science degree it can definitely fast track you by getting you internships at big companies and i do think that foundation of knowledge would likely make you a better programmer but on the other hand is it really worth 4 years of your time and a hundred thousand dollars in student debt college definitely isn't a path for everybody and one of my favorite things about the tech industry is that you can be successful without a degree which is a good segue into the next opinion there's an awful lot of bad teaching out there whether you have a degree or not you'll eventually find yourself on youtube trying to learn from one of the many different teachers out there as a teacher myself and a supporter of my fellow youtubers i unfortunately agree with this statement in fact plenty of people out there absolutely hate my teaching style i get mean comments on almost every video saying the content sucks and that it's too fast and so on what it really boils down to is that different people have different preferences when it comes to teaching style ironically the biggest turn off for me is when a teacher has a highly opinionated take on something there are people out there who preach dogma like there's only one right way to do something that's almost never the case and my mind is always being blown with new ways to get things done all the time the only thing i really know is that i know nothing speaking of dogma people have really strong opinions about unit testing a controversial one is that unit tests don't need to be written up front and sometimes not at all unit testing can be very valuable and there's even empirical evidence to support that but also in my experience it can be a completely useless waste of time especially in projects where the requirements aren't very well defined and likely to change as the project evolves because if you try to write your test up front then requirements change you not only need to refactor your code but also your tests in addition most developers don't really like writing tests in the first place so when you put a requirement out like 95 code coverage you get a bunch of pointless tests just for the sake of testing and horrible code to go along with it i think quality is a lot more important than quantity when it comes to testing or if you have the resources use a dedicated quality assurance person or team to validate the code before it goes out another opinion that's kind of related to testing is that the customer is not always right when building a new piece of software you generally start with some requirements from a customer project manager or some other kind of stakeholder and it's not like a blueprint for constructing a building these requirements are very likely to change multiple times throughout the project for non-technical people software development seems like black magic and it's very important for you the developer to communicate when you recognize something as a bad idea or something that's going to take a ton of time to refactor when i first started doing freelance work i took the approach that the customer was always right and ended up working many hours for free just to make the customer happy and i really only blame myself because it's my fault for not being a good enough communicator but in some cases you may end up with a very difficult client and for that reason i generally recommend people do their billing on an hourly rate as opposed to a lump sum for an entire project because it's more transparent and allows for a clean break if things go really south what a divorce divorce i knew we had something in common yeah sign these and with that we've reached the final opinion most comments in code are in fact a pernicious form of code duplication or on a related note readability is the most important aspect of your code for the most part i agree with these opinions i think writing code that is simple and self-describing is the ultimate goal we should strive for the reality though is that even if you write perfectly readable code i might be able to tell what it's doing but not why it's there in the first place comments that explain why something exists tend to be the most valuable another big question here is should you write code that is optimized for readability or performance in javascript i can write a for each loop which is nice and readable but it doesn't perform nearly as well as a traditional for loop when faced with a situation like that i start by writing the most readable code and if performance does in fact become a problem then i may optimize it in the future but ninety percent of the time it's too insignificant to even matter i'm going to go ahead and wrap things up there don't forget to hit the like button and make sure to leave your own controversial opinion in the comments below thanks for watching and i will see you in the next one
Info
Channel: Fireship
Views: 522,618
Rating: undefined out of 5
Keywords:
Id: goy4lZfDtCE
Channel Id: undefined
Length: 9min 18sec (558 seconds)
Published: Tue Aug 17 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.