Top 10 Types of Software Developers

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
okay let's talk about all the different types of software developers in one video so this video is not going to be boring it's going to be packed with info my personal insights on each software developer niche and we'll talk about the cool parts of each one in total we're going to talk about 10 different kinds of software developers and we're going to rank them in ascending order of complexity that is from the easiest to the hardest so this might be kind of a controversial list also just want to stress that more complex doesn't necessarily mean better and it definitely doesn't mean better paid either with a few notable exceptions anyway if you're new here i'm a freelance developer i talk about business oriented tech and coding content and i'm also the founder of fremo the freelance developer bootcamp okay with that said let's get started let's start with number one web developers which a lot of people call the easiest and yeah i do think it is the easiest way to get into the tech industry no one's arguing about that anyway web developers are also called front-end developers and the common misconception is they just do designs they kind of make things look pretty but a solid design is a lot more than just being pretty it's actually influencing behavior whether that's making an app more addictive driving more purchases or generally influencing behavior still implementing designs is just one part of being a front-end developer there's also the marketing aspects like you've got configuring things for seo setting up marketing pixels and stuff like that you're linking user events like these to back-end systems for hyper-targeted ads a b testing heat maps stuff like that anyway as a front-end developer you need to understand the browser how it loads files and this feeds directly into performance so you need to know about script and image optimization tools like lighthouse can help you improve things and you have to consider a pretty broad spectrum of possibilities different connection speeds devices browsers and so forth front end developers really do have some of the greatest tooling they've got stuff like chrome dev tools lighthouse which i already mentioned and different libraries and frameworks that just make being a front-end developer a lot of fun in fact the tools are so good this is kind of part of the reason that front end is easier it's more a matter of understanding libraries tools and platforms and gluing it together with a bit of code rather than doing everything from the ground up anyway for these reasons without a question front end is the best way to break into the tech industry because there's the lowest technical we could say overhead so people are surprised to learn that web dev front end is actually just as well paid as other types of software development the main reason for which is just an insane demand for this kind of work at any given time upwork's got around 50 000 web development jobs whereas python at any given time usually has less than 10 000 and i think the reason for this demand is because your website or web app it's never really done you're always testing new features your a b testing things to see what converts better you are making things one percent better every day for your users for me personally web dev was my first foray into coding and it's actually still my favorite just because it's so fun and so relevant in the business world and i really like being close to the end user moving on from web dev we have back end web which is going to be number two while fortunately for web devs the entire back end is often taken care of by a platform like wordpress shopify or firebase a fair amount of the time you are going to have a completely custom back end and that's where we get back end web from the truth is a front end can't function without a back end which it needs for something as simple as submitting a form the exception would be if you're building a static page at low time but a server is still needed to dynamically create that page when it's requested before sending it over anyway your backend web server could literally be sending files or it could just be sending json string data to be rendered on the page you can write back in web servers in a ton of different languages the most common of which is php followed by python and node.js aka javascript you've got ruby on rails and actually pretty much every language can be used to write web servers but that doesn't mean you should do it when you get into the world of back-end which is pretty much everything else on this list just understanding programming language isn't enough though you have to understand the complexities of databases and data design how do you scale and replicate your data make things robust with high up time and create good schemas for efficient querying beyond that how do you set up telemetry and monitoring to make sure everything's working as you expected since you don't get the same visual cues as you do with front end you have to configure every little thing to even be able to see what's happening anyway the line between back and dev and our next kind of developer is actually a bit blurry our next one is called back-end microservices which is not an exact definition or term consider this beneath every popular website there's an entire iceberg of services that do different stuff if you do something as simple as submitting a form i mean google is the is the textbook example of this anyway in most cases when your apps get above a certain size uh using python actually becomes sub-optimal and this is both for performance and maintainability reasons and that's when you want to bring in the heavy hitters like java golang c sharp for the real enterprise level development now these are both faster due to being compiled languages it's harder to write bugs due to their strong typing and compile time checks anyway with enterprise or service development you've got two main patterns and those are going to be microservice and monolith in the microservice model you have a bunch of different mini services each of which does a distinct thing you can make them as small as just doing a math calculation and you can make them as big as well an entire app and that's what we call a monolith now with microservices you can easily scale up and down your number of apps or instances so for example that math calculation if you really need to do like high volume at one time you can create like 20 different copies of that and each one can be handling requests and so you can scale kind of horizontally very easily having this smaller self-contained amount of code also allows you to like deploy things faster and keep it separate from everything else so you can make changes to it without kind of breaking the entire system on the other hand every service needs a communication channel and this could be over a network and by definition networks can be a bit unreliable or unstable so that's one of the main downsides anyway within a single service you have different layers you have the service layer the storage layer and these are just additional abstractions to keep your code organized anyway web is over here and it's optimized for like fast real-time response times and also kind of rapid prototyping which is why we see languages like javascript and python which are just faster to write typical enterprise services though are optimized for scalability flexibility maintainability that is being easy to like change by a large number of people but there are some kinds of services that are optimized for high performance and we're going to get to those soon okay the next type of developer and we're going up the complexity chain here and this is where it gets a bit controversial are data engineers and not too many people know about these or what they are outside of the software world so exclusively in larger companies you've got software engineers dedicated to processing large amounts of data and they're just for processing the data and converting it to a useful format then that data analysts and data scientists can later on kind of query and use for useful things data analysts are going to be using tools like kafka for real-time data streams they're going to be using things like hadoop to do what's called extract transform load processing which is going to happen at regular intervals to convert again like i said data to a more useful and queryable format because you've got millions of of data points coming in in a larger company like facebook or google that you have to kind of filter and sort through in fact there's a really famous algorithm called mapreduce that kind of makes this efficient and easy to do well i'm not going to say easy but it is a well-tread area of cs anyway there's probably more systems that have this kind of big data than you think like just consider uber trips you know around the world every single uber has like a gps location that's kind of being transferred to a server in real time and that's how you see the car update on your screen right so how do you like process this sort of data in real time that's kind of one area so if you're going to aggregate this data from all over the world and then kind of convert it into some reports or analysis like how exactly do you do that and that's where the data engineers come into play now in this area of programming you've got a whole different set of challenges and a whole different set of bottlenecks now things like storage like how do you actually consolidate and where do you keep all this data like that's the new issue and it's less real-time response time because you don't even have a front end really with this kind of stuff until you get all the way through your data lake to your end user which is like more a data analyst okay let's move on from data engineers to sysadmin slash devops this is also known as server management uh you're kind of just concerned with how things are set up and deployed on the hardware if you're doing like simple sys admin work like you're just provisioning users for i don't know a school network or something now obviously like that is not very challenging no offense to anyone out there but like other areas of programming things get interesting when you add scale to the equation and especially dynamic scaling think of it this way to run a server takes a certain amount of power and resources and most tech services have a variable amount of traffic so like i don't know another example from uber new year's eve is like super popular for uber you need way more servers running to handle that traffic than on like a normal night at 3am right so the challenge that devops people have is like how do you make that extremely efficient you also want to help developers be more productive and to do that you need fast deploy times so like deploying is when you push your code onto the server and if that takes like an hour then you can only you know make so many updates per day and a lot of times you want to like fix bugs really fast and stuff like that so common tools in this space are kubernetes docker and aws is actually taking care of more and more of the complexity as time goes on and a lot of people are really into this like containerization virtualization type of stuff and i can understand why but i never really got into that but anyway i could throw terms at you all day like continuous integration continuous deployment and try to maximize up time but unless you're like interested in devops you probably don't care just wanted to make you aware of this area and actually there's a lot of overlap with this which i kind of think of as devops but like some people call it a cloud engineer but whatever you call it it's actually a pretty booming area right now if it's something you want to get into okay let's keep going and talk about back and embedded systems these guys are pretty much squeezing as much processing power onto small chips as they possibly can and that's the whole point for example there's like the zylog chip in game boys back in the day and you know you could play so many different games with this one ship that cost like a few dollars and when you're doing something like manufacturing a product at scale every single one of those dollars counts so that's the first main challenge of kind of being an embedded systems engineer anyway no one cares about game boys anymore but the truth is embedded software is on pretty much everything it's on like camera camera lens uh headphones you know it's in wireless speakers it's in every pretty much appliance that you could think of that has some kind of control on it and yeah assuming it's not just an on and off switch there's probably some embedded software running on that so for embedded systems engineers c and c plus plus they're actually considered high level languages and if you really want to get max performance you're going to be writing what's known as assembly language which is just yeah it's just crazy because it's literally commands on what to do specifically on the hardware now speaking of that embedded systems engineers are working really what we call close to the metal that is like the lowest of the low level and this is because to write those super efficient programs on small processors and ships you need to really squeeze out every drop of their performance the other kind of mind-blowing part of this is yeah think of any consumer electronic you have like here here's a microphone right once they create the software for this this is not connected to a network so they can't ever update it so the software you launch with the product it better be absolutely perfect and that's kind of a lot of pressure now if you're at all interested in this like embedded systems programming you can pick up an arduino chip for around 20 bucks and write a lot of basic low-level programs and it's actually more fun than it sounds you can also check out michael reeves channel here on youtube and fun fact me and him are actually from the same town in hawaii the more you know okay getting more and more complex here let's talk about back end performance software developers these are often competitive systems that are competing like at the speed of light in the nanoseconds measures and not the milliseconds the first thing that always comes to mind is high frequency trading algorithms which are literally making 100 trades before you can even lift your finger anyway when your server being physically closer to the stock exchange makes a difference you know your software has also got to be pretty damn fast now the other thing that comes to mind with high performance is compilers having a compiler that's one percent faster is gonna add up you know so much over the long term when you're compiling things hundreds of times and by the way compilers are just translators that uh convert code from one language to another or from a language to something like byte code which is just code you can't actually read that runs a lot faster anyway high performance is usually going to be written in c or c plus plus and the way i separate it from other types of development is you're basically giving up everything specifically maintainability and ease of development just to get your code a little bit faster in the high performance space webassembly is also gaining steam where you can run lower level languages directly in your browser and the figma design software is actually written with web assembly and you can do like crazy stuff with really good performance in your browser if you've ever tried that out you could also group in kernel and operating system developers into this high performance category and honestly i got nothing but respect for those guys that's that's challenging work for sure now speaking of people who are kind of working at the operating system level let's next talk about hackers slash pen testers being a hacker as a career kind of sounds like a joke but you can actually make pretty good money being what's known as a penetration tester which is what companies actually have in-house to stress test their security or you could be a freelance pen tester and just do bug bounties which are open contracts companies put out to find security vulnerabilities and then they actually pay you when you find them and you can actually make like a hundred thousand dollars if you find a big one in a big company with that being said though this stuff is extremely extremely difficult to break into a system you have to fully understand that system and its vulnerabilities often down to the inner workings of a browser or even the operating system or network levels i think a lot of people kind of get addicted to the idealism of being a hacker but in reality you know to be a really good hacker you probably have to read like every textbook on operating systems anyway the go-to pen testing slash hacking platform is like usually known as kali linux and that's a whole rabbit hole i personally avoided getting into just because yeah there's so much technical overhead before you can even begin to be a really solid pen tester i wouldn't say by any means you have to be a genius to be a programmer but people who can actually find bug bounties and make a living out of that well i actually put them up pretty close to that you can't really fake this stuff so they get near the top spot on the programmer tier list okay continuing to go up let's talk about game development and before you kind of get angry there's a couple you know very clear different types of game developers uh some of which are easier and some of which are a lot lot harder so on one hand we've got people who build on top of an existing engine and a game builder platform like unity and that's how you see these videos that are like i made a game in 24 hours and stuff like that so a level up from that you have people who kind of are building their engines and their 2d sprites and physics engines from scratch and this is where you see a lot of these indie games come out that are like actually pretty fun and uh widely available but when you get to like 3d rendering and physics engines things actually get absolutely crazy at this point you can kind of take performance back-end developers and multiply it by like 10 different categories because that's really what these guys are so you're gonna be like writing in c or c plus plus and you not only have to make things update extremely quickly in real time you also have to do it over networks for multiplayer games and things have to look absolutely perfect too now on top of that game developers get a high spot because it's notoriously known for you know having long hours and actually pretty low pay in the developer world and that's because they're working within like pretty tight deadlines uh at least if they're working at a big studio anyway i'm not sure if i have more respect for the big studio guys or guys like notch or eric barone who solo develop their own games for like years on end without getting any feedback and then release it to great success and the reason i say that is because for every one notch there's probably a thousand game developers who are just you know grinding at it every day and probably never gonna make it so yeah it just takes a lot of discipline and passion to kind of put in this work every day anyway the last top spot is data science and machine learning this is a bit different than data engineering or data analysis because those deal with clearly structured data and machine learning and data science are more with what we call unstructured data this is also known as qualitative data and it can be pretty much anything on the internet for like images videos audio social media posts basically anything that doesn't fit in a spreadsheet and this kind of data is traditionally really hard for computers to understand as of 2020 80 of the world's data was actually unstructured and because machines can't analyze it only less than one percent of that data was actually used in a meaningful way so yeah that's where machine learning engineers start to come in where they can look at stuff top down instead of bottom up where you feed the models a ton of data then they pick up on the patterns and they use that for predictive power and this is called ai artificial intelligence because this is the same way humans work too we we learn by seeing patterns and also repetition so when we've already done something 100 times we know exactly how it works and we know how it's going to work 800 first time anyway again there's kind of two big categories of people who you know generously call themselves data scientists who are really just using uh existing models and running new data through that but on the other hand you have the heavy hitters the people who actually create the algorithms and these people are absolutely at the top of the tech world these top guys have like phds in math physics and that kind of stuff and i would say there's only like a handful in the world that the top tech companies are competing for and they're really getting paid like top dollar far beyond any other kind of engineer needless to say these are like some of the most important people of our time pushing this stuff forward and they're able to come out with algorithms like gpt-3 which has just insane predictive power and you can feed it anything and it will predict the next line so it's also super adaptive which is you know getting closer to what we call that generalized artificial intelligence the go-to languages for this are python and r and you also need some substantial hardware to both create and train these models and also to store the data that you pass through it so you also combine this with your your database or your data warehouse of choice anyway this field is without a question the most academic and mathematical so when your co-worker says they're getting into ai just take it with a grain of salt anyway that's an overview of pretty much all the different uh kinds of software developers i could think of let me know if i missed any obvious ones and i also want to stress again that more complex doesn't mean uh necessarily better i actually like you know web development the most and you could also call it the easiest and you know it also pays just as well as some of the much more difficult ones anyway guys i hope you learned a thing or two and hope you enjoyed that video and i'll see you in the next one catch you soon you
Info
Channel: Aaron Jack
Views: 588,976
Rating: undefined out of 5
Keywords: programming, web development, javascript, react, learn programming, learn to code, coding, software development, become a software developer, software developer, freelancing, freelance developer, coding tutorials
Id: -AAA68uZuWU
Channel Id: undefined
Length: 20min 39sec (1239 seconds)
Published: Thu Apr 29 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.