I dont agree with in terms of data scientist. Chatgpt Did not written in Python. The GPT-2 source code is written in 100% Python. The model is based on Tensorflow and NumPy which are written using C and C++. So data scientiest cannot develop engine or web app or backend.! So two types of ds are one just use existing predifened lib (worst one) They can write their lib contribute Python (average). You said that 80 percent of a data is unstructured. How a fucking data scientiest can read millions of images (you can use haskell ruby c C++) or you can make data dd in haskell faster than python. Average Python ds needs to spend two years to learn haskell or c. In this days every fucking thing is called a.i even you said that data scientiest developed chatgpt with Python. How this fucking frontend written how they deployed this huge app to all world without js or some kind of js library. How they developed backend mvc mvvm which design pattern they used. What is request response time. Caching backtracing logging ?parttitioning all that data. What is high cohesion and loose coupling types ask your ds who developed chatgpt assuming they are data scientist. Data science is just a tool and algorithm within huge application. Yes you are write math behind it too important. But you talked as if they are earning the best Salary.😘 After learning Python everyone can become a so called data scientiest that is aşk! 90 percent of then not even a software developer. Ask dsa system design bfs dfs. Make eda train test split put aşk supervised models into for loop look f1 roc curve and say that they are the best. Absulately rubbish. Please use for nlp haskell and Python. In haskell you can read image convert text write your own nlp compiler. In python pip install bla bla bla please find MR one python nlp dev can make same job in haskell within 20 days after this response. I think you cant find. But ı can make nlp with Python while one of my is not opened within 30 minutes
Exactly. Of course the people who write systems level software are great; that goes without saying. But as someone who's still in the process of learning all this stuff, I always find it interesting to look at code I'm using. For example, a lot of times I'll open a Java file written for Spring or Jax-RS so that I can understand what a certain class or method is for, but I get a glimpse into how the developers at Oracle or whatever framework I'm using designed their software. The way these people design software is amazing. For the front-end, sometimes I'll take a quick minute to look at code in the developer's tools on popular websites. It's interesting to see how these devs organize their html and css. The JavaScript never makes any sense though. I'm assuming some type of algorithm is used to change the JavaScript shown in the console for security, because all you can see is a bunch of one-letter variable and function names. I doubt a team of devs would be able to understand thousands of lines of code with function and parameter names like "function a(b, c)".
@@MrWhoAd Hello! It looks like you've got a lot of knowledge about programming. I'm starting to learn python now that I ended my college semester (I literally just started), could you give me an example of a good project that will make me learn a lot of stuff? I thought about making a calculator but I already did that on C++ some months ago so I don't know
As a software engineering grad student, I think systems programming is the hardest. Machine Learning isn't too difficult if you have a decent math foundation. But memory management and having to actually understand how different types of hardware work, are very specialized skills that don't come up in other areas of programming, let alone other industries. The people who wrote the Linux kernel and GNU must be absolute gigachads.
Couldn't agree more, all those ml engineers just use framework libraries and they are also the one to get fired as even company do not know what they want, kudos to people who write libraries, kernel etc🙌
In Industry, machine learning is not just math, its the application of maths and it doesn't traslate exactly from academics to the industry. It is lot harder. But yes, people who write those libraries are the real MVP
Family member of mine (dads cousin or sum) wrote a part of the linux kernel and gets paid 8 figures. honestly so jealous of him but money isnt worth it for how much he works
Time Stamps: 1. Web Dev 0:43 2. Back End Web 3:01 3. Back End Micro Services 4:39 4. Data Engineer 6:55 5. Sys Admin / Dev Ops 9:01 6. Back End Embedded Systems 10:46 7. Back End Performance Developers 12:49 8. Ethical Hackers / Pen. Testers 14:19 9. Game Developers 15:51 10. Data Scientist and Machine Learning 17:33 For people who might need them
The concept of "back end" is only really applicable to web development. Nobody who works on embedded systems, for example, calls themselves "backend embedded software developers", they are just embedded software developers.
@@LangstoniusRex When theres no server-client relationship involved I would just call them an embedded developer that does UX. But in reality I don't think it matters too much where people draw disctintions as long as it makes some sense with a given job description so hopefully me saying that doesn't make me sound like some programming domain naming elitist...
Most if the time i agree with you, but for instance for my graduation, i had to make a bluetooth interface for an embedded system, so i had to make a front end app, and a backend bluetooth server to execute configurations and and give responses to data requests.
Being new to programming and looking to pic a language to learn, this feels like I'm about to choose a new character in an MMO. Thanks for the great vid!
Don't worry about it too much! You are after all initially not much learning a language, but learning to program. In the long run, the particular language doesn't exactly matter, as you should be able to quickly pick up whatever is the right tool for the job. And a professional programmer while know more than just one language. Thus don't worry if you learn Javascript or Python or Go or whatever first, just pick one and get to it!! So long as it is fairly mainstream. Nothing either with picking a more niche language as your first language too, such as Matlab or R, if those more closely align with your current line of work.
I confirm. I learned python over a few months and was able to pick Java up in about 30 hours. I can't problem solve with it yet but I can write a class in Java with proper syntax. It really isn't a huge deal to learn a new language and I am very surprised.
In the 90's there was only one kind of developer that the business expected to do all 10 of these - Web Master. Today when the business doesn't want to pay for 10 developers they just advertise a single opening for "rock star full-stack developer."
Absolutely, working for smaller businesses has their own benefits but you gotta be careful. At the very least, they better understand you're taking care of multiple positions and make accommodations one way or another
Key words "doesn't want to pay." Yep. In the 90's businesses HAD to pay BIG MONEY for a Web Master. Now they just take them for granted and treat them like a dime a dozen. So condescendingly calling them "Rock stars." Insult to injury. PAY THEM!
full stack doesn't encapsulate everything, thats what non-tech people think is an "all round developer" but its just front end and back end. If you want a true full -stack you'd have to do front end all the way to the embedded chip it runs on. It's impossible to do all the roles in one.
Some of the ones you've missed. Mainframe developers - Mostly older guys on the verge of retirement or from India where it is still taught. Used in large old established companies. COBOL and JCL is what is used. Very simple languages on very old and arcane systems. Machine operator - Programs CNC, and other industrial equipment operating instructions. Uses G-code, M-code, and other machine-specific languages. Quality Control Testers - Primarily write testing suites. Not very well respected. Graphics rendering developers and sound technicians- Usually very good at math, loves talking about shaders/audio stuff, and frequently found working on game engines. It's only when they mess up that you notice their work. Quantum computer programmers - Only a handful in the world.
@@ReggieMisFit you start out as a 9th grader interested in quantum physics but because you have Indian parents you gotta go into CS, so as a compromise you do quantum computing fr tho if you want a good starter search up Qiskit, it's IBM's quantum computing sdk and theres a tons of tons of tons of explanations of quantum computing guides on how to learn qiskit
Embedded haven't been using Assembly for a looong time. The main reason is that compilers have become really good. When you find a good trick to speed up code in Assembly you just add it to your compiler. Occasionally they might decompile and tweak the machine code so it helps to know it. But devtime is way too important to attempt to handwrite anything major in machine code.
that's not quite true. there are cases where you need to write in assembly. especially when you're writing code for signal processing applications. it can be very small code where every instruction matters.
I think software engineers who work on safety critical systems deserve a mention in a list like this. Engineers who work on flight control systems for planes, stuff for NASA (space shuttle), medical equipment, etc where software defects can cost lives. Although there is some overlap with some of the other categories on this list, the processes and techniques used to write safety critical software are very specialized and rigorous.
I know a guy who writes C code for life-maintaining ventilators and what he does falls neatly into the embedded software developer. The software is so critical they have to use certified compilers, so GCC is out of the way for example.
@@Bjokac We use GCC in the train safety systems space but are limited to language features from C90/C99 and even a subset of those. Collections libraries are out the question because dynamic memory allocation is forbidden past runtime, for example. The code is strictly filtered through static analysis tools to ensure that no bugs get through and that the code is written as platform independent as humanly possible. The same code runs across 3 different OS/hardware platforms and they crosscheck eachother's memory on a 1/3rd second basis.
Good point, but he does talk about Embedded Systems Engineers which safety systems would fall into. He just doesn't specially mention safety software on electronic embedded systems.
I would say the difficulty in game development (solo, or in small teams mainly) is that you have to learn way more than just coding, game and level design, graphic design, music, story telling etc, because you have to be good at many things, it makes it hard, even if you are a excellent programmer, unless you got pepole for the other parts, your game is very likely to just fail atleast that's just my opinion, being on the lower end of the game dev spectrum
And if you are creating it from scratch you need to do shit toon of Math and deal with memory and specially dealing with storing entities or which way to handle them them the most efficient way.
@@DiamondZombie True but i don't know why you'd ever do that these days unless it's just for the challenge when tools like Unity and Unreal are available
@@NameSpaceVoid True, but aside for that 2D is still do-able I think easily without tools like Unity since easy to use 2D libs exist for DX and OpenGL, I think Vulkan has them to not sure, but having the benefit of engine is that you can export it to anything like Metal (Apple). I agree with you, tough I think that challenge of it is very fun and you can learn lot's of things!
Game developers are a different species. As an ex front-end, ex back end, ex data engineer turned system admin, I find game development impossibly hard, just below actual computer scientists, specifically for the things you mention (4-5 different skillsets) and mainly for the fact that you cannot easily automate game testing. You can do a lot of unit test automation and all that, but you have to play the game over and over and over a million times to see how it actually plays on real hardware on a real computer (with all kinds of configurations). I am somehow just unable to imagine myself ever doing something so repetitive. Certainly a character defect in me, but I also see 95% of the population unable to do game development.
Watch an old video game developer who was making games for home computers and consoles in the 80s and you will see how sharp they had to be to give us some of our favorite experiences at the time.
Very good video! As a career game programmer, I would add a caveat to your point about pay. I think pre-5 years you're definitely correct about short pay, long hours. It's still a livable wage by all means, but the problem is that a lot of larger studios will dilute your pay with long hours so your effective hourly rate is very low. The plus side is, as a "veteran" game developer, you have a lot of experience, you've built trust, people know who you are. Most importantly people are willing to pay you bigger $$ because you've got shipped titles under your name. They know that you're an asset, not a gamble. The largest churn in the game industry is people fresh out of college, getting their 1-3 years of experience under their belt and working their way to mid-level. Senior veteran game developers are very stable, have very good pay, and that's usually because they've forged themselves into a rockstar along the way. One thing I love about the game industry is that nobody can really coast by and get a cushy job at a high level position without knowing exactly what they're doing and being strong collaborators. It's definitely tough at first, but if anyone is discouraged about game dev as a career, I will say this: I burnt out of my first studio gig, and went into enterprise software, and it was significantly easier, but I had an itch that I just couldn't satisfy. The passion wasn't there, the energy of my coworkers felt so low, I felt like I was easing myself into an early coffin.If you can tough it out, the payoff is so worth it
Great video quality. I do disagree almost entirely with the idea that you can rank complexity by category. I personally started with embedded systems, then ML/AI, then Frontend+Backend+DevOps+DataAnalyst, and in my experience how complex the work I'm doing always depends on the project scope. For example, it's easier to train an AI model and load it to an ARM chip than to build the interface of a service like Uber.
Cause you cant rank this up. I do or done all fields (also I never heard of "back end XY" developers) and programming a hardware can be easy or complex like programming a button in your app. Q
Maybe you missed his point, he compares complexity between these professionals one on one not based on one project but a lifetime of projects, for example training an AI model is not the same as making it from scratch aka inventing this algorithm. Also dabbling with systems programming for one project doesn't mean you can compare a professionally paid systems developer like one who works on the kernels, and OS such as Windows, Mac or Linux to a front end web developer complexity wise (not size of project wise). Sure Uber is huge but it has hundreds or thousands of employees working on it's front end alone. Does that make front end harder than coming up with a new AI algorithm ? Does it mean designing and making a web page is as hard as making a gpu driver ... This is not a comparison of projects but paths.
I agree I would say that the range of complexity does differ by category though. I.e. I dont think you could come close to the most complex FPGA design complexity in web development, each category has a ceiling I feel like and that ceiling differs by category.
Less Complex End 1. Web Developer 2. Back End Web 3. Back End Micro Services 4. Data Engineer 5. SysAdmin / DevOps 6. Back End Embedded Systems 7. Back End Performance Developer 8. Hacker / Pen Tester 9. Game Developer 10. Data Scientist / Machine Learning More Complex
I pretty much worked most of the roles once in my 25 years in the industry. If you become an absolute expert in frontend dev than your work isn't easier nor harder than a pentester or game dev. It is just different. I still kinda agree that the fundamental knowledge to get started might be higher for the later example. And I hat frontend dev, moving around pixels to match a psd file for example gives me more sleepless nights than squeezing the last ms or bandwidth out of a software. We all have our preferences. I liked the video! Got a new sub. Also a freelancer btw.
I guess the first and second category both apply to me: full-stack web dev. It may not be as complex as AI or embedded systems, but keeping up with the ever-changing frameworks, languages and databases keeps me plenty busy.
Missing from the list: Graphics Software Developer. This could be considered a specialty within Front End, or Games, but really does seem to be its own thing. Lots of OpenGL, Vulkan, DirectX12, Metal and loads of libraries for dealing with meshes, objects, animation, almost all in C++ or sometimes Rust, Java. WebGL, Babylon, Three, and various Javascript libraries on top of those for working with Front End teams. Lots of 3D math, though no need for physics-level math jocks, since existing libraries take care of most of the details, but some ability to deal with vectors and coordinate systems. Having an eye for color, lighting, composition is helpful, though a hard-core left-brained coder will usually work with a hard-core right-brained visual designer to get things done. (I don't do that; I'm what you might call a "full stack" digital artist.) Understanding the hardware level of how things work is also good, since fast high quality graphics, especially in high end games, requires sling plenty of data around real fast. Can't waste time moving some data someplace only to copy it someplace else. Pays well, and the best part: playing with shaders all day long! Also one of the best areas of software development for impressing others, since you are literally making what others will see, tied only with Front End web developers.
Hello, mister graphics programmer. Do you know how can I get into gpu driver development ? (not the same as vulkan opengl and direct 12) Can't find any resources to learn...
You can scale monoliths horizontally too, and backend web vs backend microservices isn't a different type of developer according to me. You fit into whatever architecture your company uses. Example stackoverflow is a monolith and Netflix is a microservices based backend, a good backend engineer will fit in both these roles.
Lol scaling a monolith is the worst thing you can do. So many headaches come with that. I think we can safely separate people who build Monoliths compared to people who build good architectured microservices
@@yohanasfaw5563 A lot of companies have there apps written in a monolithic architecture that might be for a variety of reasons. What if one day you need to serve 50-60k thousand customers you can’t rewrite your app. Vertically scaling becomes very expensive after a point you need to scale horizontally in those cases.
Would love to see videos like these include something like PLC / machine programmers. That field could benefit tremendously from many of the tools of the modern developer.
I learning datascince now and honestly the preprocessing is harder than model building. With established packages u can write the models from latest reaserch from scratch. It is math intensive but thats the fun part. I like tryinf new things and thinking of new algorithems. Even when they fail horibly
that's the point were the know how of applied math, physics, stats and domain knowledge obfuscates all dev tricks anyone might have learned. indeed smart preprocessing is craftmanship, and peta data number crunching monkey buzznezz and a waste of energy
I have been wanting to start a new career in Software Developer and this is one of the best videos I can recommended to somebody if they want to understand the different types of Software Developers out there. Thank you Aaron.
Overall, really nice breakdown! I think control systems might be missing (for robotics or electronic sensor systems. E.g. thermostats or self-balancing robots). There's some overlap here with embedded systems. I also think you can be in Arduino land without ever touching real embedded systems concepts like interrupts (I think this is a huge shame because they're actually more like how humans think) or more complex concepts like RTOS. I also make a distinction between people who do matrix math (ML, data science, signal processing, robotics people) vs people who do discrete math / combinatorics (routing algorithms, trees, shortest path kinds of things) vs backend data mangling stuff vs DevOps vs people who connect pre-existing APIs (can be front or backend) vs front-end UX
The "high performance backend developer" is known as a financial developer on Wall Street. It's apparently its own branch of development and those guys get paid enormous salaries to write super efficient and secure finance-related code in C. They're not normal people though, they're the kind of people that can tell you how many toothpicks are in a jar but can't tie their own shoes lmao.
Finally, I can explain to my parents what I am doing in my job🤣! Jokes aside, I think this video summarizes up the general software development career pretty thoroughly and concisely. It does help me to explain my job to family and friends, great job, haha!
Great video. Web3 and blockchain programming including advanced P2P networks and smart contracts could be considered as an addition in the next 5 -10 years.
I am a "Senior Research Data Scientist" (that's my title) and a faculty member teaching Machine Learning, Data Mining, Databases etc. I liked your video a lot, exactly because my passion is also in developing new algorithms for AI/ML, and I consider myself foremost to be a programmer! However, despite popular belief, the main languages of ML developers is not Python and R; these languages are mostly suited for the "other" category you mentioned: the "users" of other people's algorithms. I claim that in the highly sophisticated (and mathematical/statistical) world of ML, the languages that should be used are the HPC (High Performance) ones that you mentioned: C/C++ (see TensorFlow) and my personal favorite, Java, for its great libraries for concurrency/parallelism/distributed computing. ML is a field where high-performance matters a lot, as very often the computations are extremely complicated, or you deal with "Big Data" (with a capital ""B").
Hi Ioannis, as a Senior Data Scientist would you by any chance recommend any books for Machine Learning? Would a high level of Calculus and a notable understanding in Statistics allow someone to understand Machine Learning algorithms? Would you say a degree in Math is compulsory to follow your steps, along with a Computer Science degree?
If you are as smart and capable as you claim you are, then you must surely know what you have really done here. Nothing but separate yourself from the Python community (those "users") and positioning yourself in a different league, no wonder that's your favorite thing about this video, it speaks directly to your ego. The truth is, nobody gets anywhere without collaboration, everybody sits on top of the shoulders of giants, and thus, if you are as capable as you individually claim, in a group setting you are only better than someone who is completely useless. Humans (like other lifeforms made of bone and flesh) are very fragile and have depended in shared knowledge preserved through generations, in that sense you have proven yourself infertile. If you hold a position as a faculty member, it is clear that this was not a calling that was chosen by authentic vocation. Enjoy your temporary status while it lasts, as technology such as GPT-3 has proven to be highly efficient at algorithms and will likely continue to grow in that field first.
As someone who began learning python a few weeks ago after being undecided between programming and psychology, and as someone who has meddled with marketing and article writing, it excited me when you talked about how the front end connects user experience with coding. A light bulb lit up inside me because I saw a potential to connect everything there. Either that or data science. I have a burning desire to eventually connect programming with psychology one way or another.
I'm a fullstack dev. When i was new, I used to think that front end was easier. The more experienced I got, the more I could see that front end web development is more difficult and demanding than backend.
I have seen microservices written on C# for an stock exchange inner system. The underlying communication is always network but they often use a Message Queue (MQ) layer that simplifies the communication failure/busy handling scenario.
Indie game developers absolutely use existing engines like unity to make stuff. Its what most are probably familiar with and unless you have a specific reason to build your own engine, if your only goal is to get a game out the door and you have probably little if any income you would be absolutely insane to burn through ungodly amounts of time reinventing a wheel that already works perfectly fine for your needs. If youre an engine dev you are almost certainly working at a bigger company
Game engine developers are a funny group because they are basically toy makers but they make amazing stuff, like these developers are one of the main groups behind some of the most important optimization techniques like the fast inverse square root or memory arenas. I remember watching a conference about super efficient memory management made by John Lakos (one of the most important people in the whole history of C++) and he mentioned some of the techniques he structured in the C++17 standard had been in use for game engines for years. It's just amazing what they do, needless to say the fact that they not only work in low level but also have to learn to process data in dedicated hardware (GPU) just adds.
Categories are pretty good. Some of the examples are a bit less cutting edge (but that may mean more quantity of jobs). I would add native mobile as a category though.
Some valid points but I’d specify something that you threw out there. Web Developer != Front End Developer. “Web sites vs Web apps” like you mentioned for example. Many different types of systems need a GUI. Which is where a front end dev would come in. Whereas Web Developers stay in the realm of browsers exclusively even using tools like Wordpress. Just my two cents.
I am not sure how that works in USA but here in Belgium where i am from , we devs do kinda all like front-end (even mobile) , back-end, db design , security , dev ops all together. It's called full-stack if you will and these are here the most required dev jobs.
@@sassy_gamer7899 I make games, not anti cheat software. I would suggest you find something better than making cheats for games, there's a reason it's not so obvious how to make them.
I'm pretty sure mobile devs can be categorized as front end devs nowadays. Many companies now have front end devs do their app development, thanks to more and more mature tooling ecosystem in this area, specifically, for example, you can find react native, flutter, which are both great platforms for native app development.
@@brd5548 While yes Mobile dev are technically frontend dev, but normally when we talk about frontend dev we really means web dev, which is quite different from native mobile dev in terms of the knowledge involved.
but why do i feel it runs each cell pretty slow? i mean, just run a cell that printis "hello", and the loading symbol is slower than jupyter notebook. did i do something wrong or haven't i correctly prepared my Colab settings?
@@amineacademy1544 ohhh okayy thank u... But i really wonder why people use Google Colab. Idk why, but i still feel Anaconda's Jupyter Notebook is faster. They also provide something about tensorflow-gpu... Maybe i did miss something about Google Colab? Do you mind to share insights maybe? THank youuu 🙏
MIssing and absolutely necessary Software Developers: 1. Database developers (not users those that use the database, developers) 2. CAD developers as in people that write things like SolidWorks, CATIA, AutoCAD, Rivet, 3. Graphics developers, as in the NVIDIA Team, Autodesk team, VRay, 3Ds Max 4. Medical devices (although that's overlapping with others, they do have rigorous guide lines to follow that one must know) 5. The CAD field has so many subfields that it's hard to say it's on its own. You have Verilog, you have digital simulation, analog cirtuit simulator, those are all considered as CAD but are radically different from other CAD such as SolidWorks, or Rivet; those in turn are different from Animation CAD systems like 3Ds Max and Blender
Great video! I am deciding on which direction to go next after my bachelor's degree and this video made the options more clear. I will probably stick to web dev and go more in-depth and focus on scalable and bigger projects. I also like game dev a lot but if it is a lot of work for not so much money, it is probably not worth it.
Yeah unfortunately it seems to be one of those career paths that you have to enjoy more for the game creation and less about the money. Creating video games is a huge business Market and the pay for those people should never be low-balled.
I work in embedded systems and in my opinion is the most fun of all software development out there. I think you also need to be have an interest in electronics and hardware. I like fighting for bytes and testing my sw while running it on the hw in a lab and I wouldn't change a job in embedded for web, game dev, or any of the other ones 😁
Any time I watch one of this videos I'm really inspired. But I think you missed 2 things, Mobile and Desktop development. Even though we don't hear much about desktop developers these days 😅
considering so many people are watching this on either a laptop/desktop or mobile phone makes it particularly amusing. You might be looking at a website from a webdev, but your browser is definitely a desktop or mobile application =)
Great video, albeit a bit generalised .I'm sure a lot of people have discussed this already but according to my personal experience things simply take much less time and complexity decreases when you become a backend dev (I can attest to it) , front end is riddled with quirks and you have to confront the lack of uniformity where the code runs (the code will run in many environments), back end has just one environment where things can be locked down to a single compiler and environment which you can control , also front end code is closer to the user therefore making it more brittle, as complex interactivity will create a vector for failed behaviour , back end has challenges of memory management, resources , bottlenecks, outages ofc, but in my experience they took less to fix . Tasks like creating a data API, take a fraction of what it needs to happen to display it, and make it work for several displays , create interactivity etc, the logic nowadays resides in the front end , some backends just spit out data. If someone that has worked in both has a different opinion I'd like to hear
Wow, this is amazing! So glad I came across this. I'm entering the tech world as a Data Analyst, but I'm impressed with the high demand for Software Developers. So, I've been asking if a Data Analyst could easily transition into the Software Dev world, but got no tangible response... But after watching this, I now know that Data Engineers & Data Scientists/ML Engineers, are also know termed "Software Developers". Now I can look forward to having a smooth career transition in the future. 😎
Nail on the head with embedded systems. You have to watch how many variables you use and precisely control buffer size. Your code is specific to the hardware. It’s a blast!
Great video! Although I think you missed that AI models and algorithms are not implemented in Python or R, which are actually just the interface to them, but in C or C++
@@sonicemitter6131 No. Decide weather you want to develop machine learning software or just be a machine learning software user. Both will require you to code, but the first one involves fast, compiled languages and tons of math and computer science knowledge and the latter involves probably Python and much less knowledge of what is actually going on. The usual job titles you see refer to being a USER, you'll just use machine learning algorithms, not implement them. So yeah, if you want to get a job fast, learn python and python machine learning libraries.
At times, the lower the tier such as front end and web development, the higher the pay. *Reason 1:* They interact with a large cross section of people, from the CEO down to the outside testers and even HR. *Reason 2:* Personal experience, since having a sales background, I knew exactly what the clients wanted and knew their language. *Reason 3:* Even though working with back-end Devs, most end user requirement communication through all departments passed through me.
Can't say I agree with your order whatsoever, but I appreciate the descriptions you gave. One crucial thing you forgot to mention with front end is accessibility. A truly responsive, accessible, user-friendly, progressively-enhanced PWA is very difficult to build. If front end is easy to you, then you are shafting at least some of your users.
What a great and informing video I don't think anyone else has made something similair. I'm just wondering where do you think iOS/mobile devs fit in between these positions? Thanks again for the video.
Dear reader, if you ever find yourself in front of some manager pitching buzzwords about how awesome, scalable and amazing a micro services architecture is…do your best to fake an emergency and change your name.
Don't ever be intimidated by those mentioned "I programmed x in 10 minutes" or whatever videos! They copy from an off-screen, prepared code. That's about it.
It's hard to rank any of these roles in order because the difficulty often scales with how large the company is. The bigger the company, the more difficult the job can be, especially for DevOps / SRE.
Even small size startups are now demanding for cloud/devops/systemadmin roles that too for entry level position tho it mentions 3 years exper 😂 (something I don't standard this) but devops definitely is growing faster than before and this is the best time command on it. 🙌
Data Scientist should be way down the list. All of their algos are prewritten and imported via external libraries. Moat data scientists just do "plug in and play".
For some, that's the case. But others do a lot of R&D in new application areas using TensorFlow, PyTorch, ML.Net first to develop new types of models that might work well, then make actual models to be made into production pipelines. Figuring out the right variables to feed into the ML training process can be tricky in some applications. There's a wider range of Data Scientists skill levels and pay levels than ever before.
@@DrunkenUFOPilot "others do a lot of R&D". I'd say 'others' equates to a tiny percentage of them. And yes, that tiny percentage that actually do create new solutions are trailblazers. But the majority of data scientists are just putting the Lego bricks together.
@@DrunkenUFOPilot you've touched on a very important point that renders this video utterly useless - you can't directly rank jobs as per their "difficulty" - as their difficulty is highly dependent on the task at hand - there are the "for some, that's the case" in every field - the complex systems can be found in any of those positions mentioned and I doubt they can be easily and directly compared - not to mention, there is no metric as to how the ranking has been reached in the first place
Im learning Web dev and the biggest pain for front end is the responsiveness and managing different types of browser supports. Well it's a pain for me but I believe there is more.
I created a voxel engine in Unity and the complexity has become insane, so I count as game dev :) At my company, my job is to squeeze every bit of power out of the CPU/GPU for games and simulation. It's funny that everyone I met considers GPU/Shader development as evil stuff you never want to do. For game development, my tip is to consider real-time simulation, data visualization, and even military training simulations. Companies creating non-game-related real-time stuff struggle to find game-devs because all flock towards game companies.
I feel like game dev with an engine/Unity was downplayed quite a bit in this video and I'm feeling a tad salty about that. There's a lot more to it than the engine you're using.
@@ChipboardDev how would you suggest going about making a cheat for a video game I have decent knowledge on c++ and I’m want to know if that is enough to make your own cheats for video games
Funny I'm in 3 areas lol , and for what you say they are very difficult, but I don't think they are very very difficult, I think the problem nowadays is that schools /universities don't invest and teach most of the times , the basics and in a good way.
You cannot put wordpress frontend at the same level as javascript+react+redux enterprise level apps. Try creating a scheduler with zoom levels and dates and events with dragNdrop from the ground up. Or UI for inner banking systems and many more. Those are pretty complex. I think you should subdivide frontend further. Otherwise great video.
Another missing from the list, and a cool area to be in, but not for everyone: Scientific Software Development. Someone has to make the tools used by radio astronomers, analyze data from particle accelerators, plan space missions, and make those pretty pictures of planets and galaxies appearing on magazine covers. Takes serious math, time optimization, testing, making use of GPUs and large headless clusters of machines. Help chemists and physicists earn Nobel Prizes and bring Star Trek style warp drives and transporters closer to reality. Lots of C++, some Java, some old semi-forgotten languages, lots of legacy code because big science projects can last decades. Even a bit of Fortran now and then. Great if you know Matlab or IDL. If you're lucky, Julia is an impressive language. As a Science SW Dev, and given that usually budget limits and hectic schedules mean one person does it all, more so than most other SW dev contexts but for startups, so you'd probably be doing some data viz, including 3D data viz, database, networking, user support. You may be working on a very important project, for scientist you routinely see in news interviews, but have a total of five users. Challenging, but deeply satisfying to be on the cutting edge of knowledge. OTOH, universities and research labs don't pay as well as industry and business.
I think people really underestimate the complexity of frontend applications. At my work all devs that work in the backend and on microservices really struggle in the frontend. Because it's really hard to load the data correctly, while keeping the code readable and fast. As a good frontend dev you really have to understand how the DOM and the event loop works. It got really complex over the last few years.
As an electrical engineer, I am in fact getting into AI, from learning how convolutional neural networks work to applying fuzzy logic to finite state machines
As a school DevOps I have to integrate systems that do not efficiently talk to each other. I have about 8000 lines of Perl code to daily automate data syncing between services, service uploads, automatic account creation/update/disable/delete across multiple incompatible services, manage Apache, Samba, NGINX,Postfix, MySQL, PostGRES and MSSQL database servers and every major OS platform. I also manage the 7 node VMWare cluster and SAN array. So yah, schools do not have a lot of money for employees or services so often you have 1 or 2 DevOps/Admins.
Wow, I don’t feel this guy has a full grasp on what is effectively Information technology Technicians, vs software developer. Many of them interface with software but more on a configuration level. Dev ops / Sys ops rarely pull out a full set of software chops to accomplish their goals. It’s usually like a Rube Goldberg Machine jerry rigging scripts together. I feel SRE title tends to have stronger software chops, and if you write a lot of code and do sys ops / dev ops you’re probably an SRE.
Chris Sawyer made Rollercoaster Tycoon in 99% x86 Assembly language... on his own. Graphics and sound and such were handled by a few others but all the code was done by SAwyer. Absolutely incredible, he is a programming god
Jack, this video is just sooo grreat!!. so loaded with value. can't thank you enough. I actually went to your about page hoping to see your email but...nada I'm a math graduate and I'm just start my tech journey...I'm interested in software develoopment but still kinda confused where to specialize. I still need a lot of guidance.
Free Beginner Programming Course
coursecareers.com/a/aaronjack
Free JavaScript Cheat Sheet
dontforgetjavascript.com/
Free Coding Advice (We'll Send you a Video)
aaronjack.dev
I dont agree with in terms of data scientist. Chatgpt Did not written in Python.
The GPT-2 source code is written in 100% Python. The model is based on Tensorflow and NumPy which are written using C and C++.
So data scientiest cannot develop engine or web app or backend.! So two types of ds are one just use existing predifened lib (worst one)
They can write their lib contribute Python (average). You said that 80 percent of a data is unstructured. How a fucking data scientiest can read millions of images (you can use haskell ruby c C++) or you can make data dd in haskell faster than python. Average Python ds needs to spend two years to learn haskell or c. In this days every fucking thing is called a.i even you said that data scientiest developed chatgpt with Python. How this fucking frontend written how they deployed this huge app to all world without js or some kind of js library. How they developed backend mvc mvvm which design pattern they used. What is request response time. Caching backtracing logging ?parttitioning all that data. What is high cohesion and loose coupling types ask your ds who developed chatgpt assuming they are data scientist. Data science is just a tool and algorithm within huge application. Yes you are write math behind it too important. But you talked as if they are earning the best Salary.😘 After learning Python everyone can become a so called data scientiest that is aşk! 90 percent of then not even a software developer. Ask dsa system design bfs dfs. Make eda train test split put aşk supervised models into for loop look f1 roc curve and say that they are the best. Absulately rubbish. Please use for nlp haskell and Python. In haskell you can read image convert text write your own nlp compiler. In python pip install bla bla bla please find MR one python nlp dev can make same job in haskell within 20 days after this response. I think you cant find. But ı can make nlp with Python while one of my is not opened within 30 minutes
The people who write systems and libraries from scratch for other developers are truly gifted.
Exactly. Of course the people who write systems level software are great; that goes without saying. But as someone who's still in the process of learning all this stuff, I always find it interesting to look at code I'm using.
For example, a lot of times I'll open a Java file written for Spring or Jax-RS so that I can understand what a certain class or method is for, but I get a glimpse into how the developers at Oracle or whatever framework I'm using designed their software. The way these people design software is amazing. For the front-end, sometimes I'll take a quick minute to look at code in the developer's tools on popular websites. It's interesting to see how these devs organize their html and css.
The JavaScript never makes any sense though. I'm assuming some type of algorithm is used to change the JavaScript shown in the console for security, because all you can see is a bunch of one-letter variable and function names. I doubt a team of devs would be able to understand thousands of lines of code with function and parameter names like "function a(b, c)".
@@tasheemhargrove9650 The JS code you saw was actually transpiled and minified for browser compatibility and reduction of file size.
@@MrWhoAd Ah, that makes sense. Thanks for letting me know that.
Most have PhDs in CS and Maths
@@MrWhoAd Hello! It looks like you've got a lot of knowledge about programming. I'm starting to learn python now that I ended my college semester (I literally just started), could you give me an example of a good project that will make me learn a lot of stuff? I thought about making a calculator but I already did that on C++ some months ago so I don't know
As a software engineering grad student, I think systems programming is the hardest. Machine Learning isn't too difficult if you have a decent math foundation. But memory management and having to actually understand how different types of hardware work, are very specialized skills that don't come up in other areas of programming, let alone other industries. The people who wrote the Linux kernel and GNU must be absolute gigachads.
Couldn't agree more, all those ml engineers just use framework libraries and they are also the one to get fired as even company do not know what they want, kudos to people who write libraries, kernel etc🙌
Yeah you can’t really top the software that literally allows your hardware to work and run programs
In Industry, machine learning is not just math, its the application of maths and it doesn't traslate exactly from academics to the industry. It is lot harder. But yes, people who write those libraries are the real MVP
what is "systems programming"?
Family member of mine (dads cousin or sum) wrote a part of the linux kernel and gets paid 8 figures. honestly so jealous of him but money isnt worth it for how much he works
Time Stamps:
1. Web Dev 0:43
2. Back End Web 3:01
3. Back End Micro Services 4:39
4. Data Engineer 6:55
5. Sys Admin / Dev Ops 9:01
6. Back End Embedded Systems 10:46
7. Back End Performance Developers 12:49
8. Ethical Hackers / Pen. Testers 14:19
9. Game Developers 15:51
10. Data Scientist and Machine Learning 17:33
For people who might need them
Thanks
Where are app developers, damn
@@ballinspalding11 Being missed
Press F for respect
F
And flashers and javascripters
@@AndriiMuliarLol I learnt to use JS in about 3 hours and I'm not even a "real" programmer 🤣
The concept of "back end" is only really applicable to web development. Nobody who works on embedded systems, for example, calls themselves "backend embedded software developers", they are just embedded software developers.
I would disagree.
The guy writing my libraries might not be the best choice for implementing the UX.
And im seeing this distinction more and more.
Yeah this guy seems to mostly be a front end dev but hey that's fine.
@@LangstoniusRex When theres no server-client relationship involved I would just call them an embedded developer that does UX. But in reality I don't think it matters too much where people draw disctintions as long as it makes some sense with a given job description so hopefully me saying that doesn't make me sound like some programming domain naming elitist...
Most if the time i agree with you, but for instance for my graduation, i had to make a bluetooth interface for an embedded system, so i had to make a front end app, and a backend bluetooth server to execute configurations and and give responses to data requests.
............... what!?
bruh
everything is dependent on the system, there are no concrete things
Being new to programming and looking to pic a language to learn, this feels like I'm about to choose a new character in an MMO. Thanks for the great vid!
💪🏼
Don't worry about it too much! You are after all initially not much learning a language, but learning to program.
In the long run, the particular language doesn't exactly matter, as you should be able to quickly pick up whatever is the right tool for the job.
And a professional programmer while know more than just one language.
Thus don't worry if you learn Javascript or Python or Go or whatever first, just pick one and get to it!! So long as it is fairly mainstream.
Nothing either with picking a more niche language as your first language too, such as Matlab or R, if those more closely align with your current line of work.
I confirm. I learned python over a few months and was able to pick Java up in about 30 hours. I can't problem solve with it yet but I can write a class in Java with proper syntax. It really isn't a huge deal to learn a new language and I am very surprised.
@@SoundSpeeding How long have you worked in IT?? Your comment gives me a big encouragement..thank you..!
@@AaronJack what's another name of the title 'systems developer' in terms of this industry. Just need some clearance from a pro in the the field.
In the 90's there was only one kind of developer that the business expected to do all 10 of these - Web Master. Today when the business doesn't want to pay for 10 developers they just advertise a single opening for "rock star full-stack developer."
Absolutely, working for smaller businesses has their own benefits but you gotta be careful. At the very least, they better understand you're taking care of multiple positions and make accommodations one way or another
Key words "doesn't want to pay." Yep. In the 90's businesses HAD to pay BIG MONEY for a Web Master. Now they just take them for granted and treat them like a dime a dozen. So condescendingly calling them "Rock stars." Insult to injury. PAY THEM!
full stack doesn't encapsulate everything, thats what non-tech people think is an "all round developer" but its just front end and back end. If you want a true full -stack you'd have to do front end all the way to the embedded chip it runs on. It's impossible to do all the roles in one.
nice! I forgot about that title "webmaster" nice nice
The quality of this video is just insane. You are making some real progress. Love your content. Keep it up!
Some of the ones you've missed.
Mainframe developers - Mostly older guys on the verge of retirement or from India where it is still taught. Used in large old established companies. COBOL and JCL is what is used. Very simple languages on very old and arcane systems.
Machine operator - Programs CNC, and other industrial equipment operating instructions. Uses G-code, M-code, and other machine-specific languages.
Quality Control Testers - Primarily write testing suites. Not very well respected.
Graphics rendering developers and sound technicians- Usually very good at math, loves talking about shaders/audio stuff, and frequently found working on game engines. It's only when they mess up that you notice their work.
Quantum computer programmers - Only a handful in the world.
As a QA guy, that hurt man. So many times I say, it's not ready "but we got deadlines..." - then surprised when everything is broken.
ones may not respect qa, ok, go with apps games and websites completely bugged up)
Quantum Computer programmers representtt
@@aaditiwar1 provide a roadmap, how does one end up being one
@@ReggieMisFit you start out as a 9th grader interested in quantum physics but because you have Indian parents you gotta go into CS, so as a compromise you do quantum computing
fr tho if you want a good starter search up Qiskit, it's IBM's quantum computing sdk and theres a tons of tons of tons of explanations of quantum computing guides on how to learn qiskit
Embedded haven't been using Assembly for a looong time. The main reason is that compilers have become really good. When you find a good trick to speed up code in Assembly you just add it to your compiler. Occasionally they might decompile and tweak the machine code so it helps to know it. But devtime is way too important to attempt to handwrite anything major in machine code.
Yeah most embedded vendors just ship a modified version of GCC as their toolchain and call it a day
that's not quite true. there are cases where you need to write in assembly. especially when you're writing code for signal processing applications. it can be very small code where every instruction matters.
There are 10 types of people: those who understand binary and those who don't
Wait, what about the other 1000?
EDIT: typo
@@MarcillaSmith lmao
2
There are 11 types of people. Those who understand binary, those who don't and those who are so fucking tired of this joke.
@@dronestrikejr the joke is 1 and 0 he didn’t really mean Ten
I think software engineers who work on safety critical systems deserve a mention in a list like this. Engineers who work on flight control systems for planes, stuff for NASA (space shuttle), medical equipment, etc where software defects can cost lives. Although there is some overlap with some of the other categories on this list, the processes and techniques used to write safety critical software are very specialized and rigorous.
I know a guy who writes C code for life-maintaining ventilators and what he does falls neatly into the embedded software developer. The software is so critical they have to use certified compilers, so GCC is out of the way for example.
@@Bjokac We use GCC in the train safety systems space but are limited to language features from C90/C99 and even a subset of those. Collections libraries are out the question because dynamic memory allocation is forbidden past runtime, for example. The code is strictly filtered through static analysis tools to ensure that no bugs get through and that the code is written as platform independent as humanly possible. The same code runs across 3 different OS/hardware platforms and they crosscheck eachother's memory on a 1/3rd second basis.
Good point, but he does talk about Embedded Systems Engineers which safety systems would fall into. He just doesn't specially mention safety software on electronic embedded systems.
Now I'm thinking about the fact that all these programs were made by humans and it scares me.
Those are called Critical Mission Developers
I love your videos' vibe. It's always got a chill atmosphere and the content discussed is always really well explained. Keep it up!
I would say the difficulty in game development (solo, or in small teams mainly) is that you have to learn way more than just coding, game and level design, graphic design, music, story telling etc, because you have to be good at many things, it makes it hard, even if you are a excellent programmer, unless you got pepole for the other parts, your game is very likely to just fail
atleast that's just my opinion, being on the lower end of the game dev spectrum
And if you are creating it from scratch you need to do shit toon of Math and deal with memory and specially dealing with storing entities or which way to handle them them the most efficient way.
@@DiamondZombie True but i don't know why you'd ever do that these days unless it's just for the challenge when tools like Unity and Unreal are available
@@NameSpaceVoid True, but aside for that 2D is still do-able I think easily without tools like Unity since easy to use 2D libs exist for DX and OpenGL, I think Vulkan has them to not sure, but having the benefit of engine is that you can export it to anything like Metal (Apple). I agree with you, tough I think that challenge of it is very fun and you can learn lot's of things!
Game developers are a different species. As an ex front-end, ex back end, ex data engineer turned system admin, I find game development impossibly hard, just below actual computer scientists, specifically for the things you mention (4-5 different skillsets) and mainly for the fact that you cannot easily automate game testing. You can do a lot of unit test automation and all that, but you have to play the game over and over and over a million times to see how it actually plays on real hardware on a real computer (with all kinds of configurations). I am somehow just unable to imagine myself ever doing something so repetitive. Certainly a character defect in me, but I also see 95% of the population unable to do game development.
Watch an old video game developer who was making games for home computers and consoles in the 80s and you will see how sharp they had to be to give us some of our favorite experiences at the time.
The guy who wrote Rollercoaster Tycoon wrote the entire game, GUI and all, in assembly.
Very good video!
As a career game programmer, I would add a caveat to your point about pay. I think pre-5 years you're definitely correct about short pay, long hours. It's still a livable wage by all means, but the problem is that a lot of larger studios will dilute your pay with long hours so your effective hourly rate is very low. The plus side is, as a "veteran" game developer, you have a lot of experience, you've built trust, people know who you are. Most importantly people are willing to pay you bigger $$ because you've got shipped titles under your name. They know that you're an asset, not a gamble. The largest churn in the game industry is people fresh out of college, getting their 1-3 years of experience under their belt and working their way to mid-level. Senior veteran game developers are very stable, have very good pay, and that's usually because they've forged themselves into a rockstar along the way. One thing I love about the game industry is that nobody can really coast by and get a cushy job at a high level position without knowing exactly what they're doing and being strong collaborators.
It's definitely tough at first, but if anyone is discouraged about game dev as a career, I will say this: I burnt out of my first studio gig, and went into enterprise software, and it was significantly easier, but I had an itch that I just couldn't satisfy. The passion wasn't there, the energy of my coworkers felt so low, I felt like I was easing myself into an early coffin.If you can tough it out, the payoff is so worth it
I'm back in school for mobile app development but not for games. Do you think there is decent side money to be made in game dev?
@@scifyry depends on what you mean by side money I guess. Game dev can be hard. Only doing it on the side might be harder than doing it as a main gig
Great video quality. I do disagree almost entirely with the idea that you can rank complexity by category. I personally started with embedded systems, then ML/AI, then Frontend+Backend+DevOps+DataAnalyst, and in my experience how complex the work I'm doing always depends on the project scope. For example, it's easier to train an AI model and load it to an ARM chip than to build the interface of a service like Uber.
Cause you cant rank this up. I do or done all fields (also I never heard of "back end XY" developers) and programming a hardware can be easy or complex like programming a button in your app. Q
Completely agree
Maybe you missed his point, he compares complexity between these professionals one on one not based on one project but a lifetime of projects, for example training an AI model is not the same as making it from scratch aka inventing this algorithm. Also dabbling with systems programming for one project doesn't mean you can compare a professionally paid systems developer like one who works on the kernels, and OS such as Windows, Mac or Linux to a front end web developer complexity wise (not size of project wise). Sure Uber is huge but it has hundreds or thousands of employees working on it's front end alone. Does that make front end harder than coming up with a new AI algorithm ? Does it mean designing and making a web page is as hard as making a gpu driver ... This is not a comparison of projects but paths.
Now that's a full stack worth having
I agree I would say that the range of complexity does differ by category though. I.e. I dont think you could come close to the most complex FPGA design complexity in web development, each category has a ceiling I feel like and that ceiling differs by category.
Less Complex End
1. Web Developer
2. Back End Web
3. Back End Micro Services
4. Data Engineer
5. SysAdmin / DevOps
6. Back End Embedded Systems
7. Back End Performance Developer
8. Hacker / Pen Tester
9. Game Developer
10. Data Scientist / Machine Learning
More Complex
FPGA is another niche.
thanks! I was getting bored halfway through
Blockchain is another
Game dev at 9th? Curious
@Arnav Vijaywargiya I would've thought it may not require the technical computer knowledge of pen testing
I pretty much worked most of the roles once in my 25 years in the industry. If you become an absolute expert in frontend dev than your work isn't easier nor harder than a pentester or game dev. It is just different. I still kinda agree that the fundamental knowledge to get started might be higher for the later example.
And I hat frontend dev, moving around pixels to match a psd file for example gives me more sleepless nights than squeezing the last ms or bandwidth out of a software.
We all have our preferences.
I liked the video! Got a new sub.
Also a freelancer btw.
Thanks for sharing, Kevin👏
What was the most fun and least fun category for you?
I guess the first and second category both apply to me: full-stack web dev. It may not be as complex as AI or embedded systems, but keeping up with the ever-changing frameworks, languages and databases keeps me plenty busy.
I was just thinking yesterday I wish you had a video explaining the difference with all of them! Thanks 🙏🏼
Missing from the list: Graphics Software Developer. This could be considered a specialty within Front End, or Games, but really does seem to be its own thing. Lots of OpenGL, Vulkan, DirectX12, Metal and loads of libraries for dealing with meshes, objects, animation, almost all in C++ or sometimes Rust, Java.
WebGL, Babylon, Three, and various Javascript libraries on top of those for working with Front End teams. Lots of 3D math, though no need for physics-level math jocks, since existing libraries take care of most of the details, but some ability to deal with vectors and coordinate systems.
Having an eye for color, lighting, composition is helpful, though a hard-core left-brained coder will usually work with a hard-core right-brained visual designer to get things done. (I don't do that; I'm what you might call a "full stack" digital artist.)
Understanding the hardware level of how things work is also good, since fast high quality graphics, especially in high end games, requires sling plenty of data around real fast. Can't waste time moving some data someplace only to copy it someplace else.
Pays well, and the best part: playing with shaders all day long! Also one of the best areas of software development for impressing others, since you are literally making what others will see, tied only with Front End web developers.
Yeah and some of the best programmers of all time are graphics programmers, ex : John Carmack
Hey you seem very knowledgeable about this, can you send any contact info for you? I wanna ask some questions if you don't mind
Interesting
Hello, mister graphics programmer. Do you know how can I get into gpu driver development ? (not the same as vulkan opengl and direct 12)
Can't find any resources to learn...
You can scale monoliths horizontally too, and backend web vs backend microservices isn't a different type of developer according to me. You fit into whatever architecture your company uses. Example stackoverflow is a monolith and Netflix is a microservices based backend, a good backend engineer will fit in both these roles.
Lol scaling a monolith is the worst thing you can do. So many headaches come with that. I think we can safely separate people who build Monoliths compared to people who build good architectured microservices
@@yohanasfaw5563 A lot of companies have there apps written in a monolithic architecture that might be for a variety of reasons. What if one day you need to serve 50-60k thousand customers you can’t rewrite your app. Vertically scaling becomes very expensive after a point you need to scale horizontally in those cases.
Microservices project can all be in one repo like a monolith too, its just they are deployed as separate services
Would love to see videos like these include something like PLC / machine programmers. That field could benefit tremendously from many of the tools of the modern developer.
I learning datascince now and honestly the preprocessing is harder than model building.
With established packages u can write the models from latest reaserch from scratch.
It is math intensive but thats the fun part. I like tryinf new things and thinking of new algorithems. Even when they fail horibly
that's the point were the know how of applied math, physics, stats and domain knowledge obfuscates all dev tricks anyone might have learned.
indeed smart preprocessing is craftmanship, and peta data number crunching monkey buzznezz and a waste of energy
I have been wanting to start a new career in Software Developer and this is one of the best videos I can recommended to somebody if they want to understand the different types of Software Developers out there. Thank you Aaron.
Overall, really nice breakdown!
I think control systems might be missing (for robotics or electronic sensor systems. E.g. thermostats or self-balancing robots). There's some overlap here with embedded systems.
I also think you can be in Arduino land without ever touching real embedded systems concepts like interrupts (I think this is a huge shame because they're actually more like how humans think) or more complex concepts like RTOS.
I also make a distinction between people who do matrix math (ML, data science, signal processing, robotics people) vs people who do discrete math / combinatorics (routing algorithms, trees, shortest path kinds of things) vs backend data mangling stuff vs DevOps vs people who connect pre-existing APIs (can be front or backend) vs front-end UX
My boy said php was the most common backend language 😂
The "high performance backend developer" is known as a financial developer on Wall Street. It's apparently its own branch of development and those guys get paid enormous salaries to write super efficient and secure finance-related code in C. They're not normal people though, they're the kind of people that can tell you how many toothpicks are in a jar but can't tie their own shoes lmao.
Finally, I can explain to my parents what I am doing in my job🤣! Jokes aside, I think this video summarizes up the general software development career pretty thoroughly and concisely. It does help me to explain my job to family and friends, great job, haha!
You should be able to explain what you do - just keep explaining at multiple levels. If you're both patient enough they'll get it :)
I'm a Wizard Mom & Dad just like I always wanted!
how you got your first job?
Great video. Web3 and blockchain programming including advanced P2P networks and smart contracts could be considered as an addition in the next 5 -10 years.
I am a "Senior Research Data Scientist" (that's my title) and a faculty member teaching Machine Learning, Data Mining, Databases etc. I liked your video a lot, exactly because my passion is also in developing new algorithms for AI/ML, and I consider myself foremost to be a programmer! However, despite popular belief, the main languages of ML developers is not Python and R; these languages are mostly suited for the "other" category you mentioned: the "users" of other people's algorithms. I claim that in the highly sophisticated (and mathematical/statistical) world of ML, the languages that should be used are the HPC (High Performance) ones that you mentioned: C/C++ (see TensorFlow) and my personal favorite, Java, for its great libraries for concurrency/parallelism/distributed computing. ML is a field where high-performance matters a lot, as very often the computations are extremely complicated, or you deal with "Big Data" (with a capital ""B").
Hi Ioannis, as a Senior Data Scientist would you by any chance recommend any books for Machine Learning? Would a high level of Calculus and a notable understanding in Statistics allow someone to understand Machine Learning algorithms? Would you say a degree in Math is compulsory to follow your steps, along with a Computer Science degree?
If you are as smart and capable as you claim you are, then you must surely know what you have really done here. Nothing but separate yourself from the Python community (those "users") and positioning yourself in a different league, no wonder that's your favorite thing about this video, it speaks directly to your ego. The truth is, nobody gets anywhere without collaboration, everybody sits on top of the shoulders of giants, and thus, if you are as capable as you individually claim, in a group setting you are only better than someone who is completely useless. Humans (like other lifeforms made of bone and flesh) are very fragile and have depended in shared knowledge preserved through generations, in that sense you have proven yourself infertile. If you hold a position as a faculty member, it is clear that this was not a calling that was chosen by authentic vocation. Enjoy your temporary status while it lasts, as technology such as GPT-3 has proven to be highly efficient at algorithms and will likely continue to grow in that field first.
As someone who began learning python a few weeks ago after being undecided between programming and psychology, and as someone who has meddled with marketing and article writing, it excited me when you talked about how the front end connects user experience with coding. A light bulb lit up inside me because I saw a potential to connect everything there. Either that or data science. I have a burning desire to eventually connect programming with psychology one way or another.
Man, I need to step up my video editing game. Yours is on another level
I'm a fullstack dev. When i was new, I used to think that front end was easier. The more experienced I got, the more I could see that front end web development is more difficult and demanding than backend.
I have seen microservices written on C# for an stock exchange inner system.
The underlying communication is always network but they often use a Message Queue (MQ) layer that simplifies the communication failure/busy handling scenario.
Unusually clear source. Up to date pan-survey of computer science. Comments Rich.
Indie game developers absolutely use existing engines like unity to make stuff. Its what most are probably familiar with and unless you have a specific reason to build your own engine, if your only goal is to get a game out the door and you have probably little if any income you would be absolutely insane to burn through ungodly amounts of time reinventing a wheel that already works perfectly fine for your needs.
If youre an engine dev you are almost certainly working at a bigger company
Game engine developers are a funny group because they are basically toy makers but they make amazing stuff, like these developers are one of the main groups behind some of the most important optimization techniques like the fast inverse square root or memory arenas. I remember watching a conference about super efficient memory management made by John Lakos (one of the most important people in the whole history of C++) and he mentioned some of the techniques he structured in the C++17 standard had been in use for game engines for years. It's just amazing what they do, needless to say the fact that they not only work in low level but also have to learn to process data in dedicated hardware (GPU) just adds.
Categories are pretty good. Some of the examples are a bit less cutting edge (but that may mean more quantity of jobs). I would add native mobile as a category though.
Bro, your explanations of most topics is 100% on point!
Easy to understand and process. Keep it up brother.
Thank you!
Some valid points but I’d specify something that you threw out there. Web Developer != Front End Developer. “Web sites vs Web apps” like you mentioned for example. Many different types of systems need a GUI. Which is where a front end dev would come in. Whereas Web Developers stay in the realm of browsers exclusively even using tools like Wordpress. Just my two cents.
Front end web development definitely has the lowest bar to enter, but it can get wildly complex
I am not sure how that works in USA but here in Belgium where i am from , we devs do kinda all like front-end (even mobile) , back-end, db design , security , dev ops all together. It's called full-stack if you will and these are here the most required dev jobs.
the fact you put game devs into the hard category, made me motivated to continue with making of my game. Thanks-
How hard is it to code cheats for a game ? I have decent knowledge on c++ and I’m looking at creating my own cheats for rust
@@sassy_gamer7899 why you asking me bruh
@@aurealis2041 you claim you make games so why wouldn’t you know how hard it is to get past eac ?
@@sassy_gamer7899 I make games, not anti cheat software. I would suggest you find something better than making cheats for games, there's a reason it's not so obvious how to make them.
Forgot an important software developer these days. Mobile Developers
I'm pretty sure mobile devs can be categorized as front end devs nowadays. Many companies now have front end devs do their app development, thanks to more and more mature tooling ecosystem in this area, specifically, for example, you can find react native, flutter, which are both great platforms for native app development.
@@brd5548 lmao
@@brd5548 While yes Mobile dev are technically frontend dev, but normally when we talk about frontend dev we really means web dev, which is quite different from native mobile dev in terms of the knowledge involved.
mobile devs = underrated devs imo lol.
And Fullstack, sure it is just 1 + 2, but should also fit in the complexity scale. I was thinking at 3rd or 4th.
Listen Erlang has been a life saver for me when learning about scalability
for the AI newcomers: use google colab to train models (Tesla T4 /K80/ P100)and google drive to directly download your datasets into it
but why do i feel it runs each cell pretty slow? i mean, just run a cell that printis "hello", and the loading symbol is slower than jupyter notebook. did i do something wrong or haven't i correctly prepared my Colab settings?
@@danielniels22 my first guess would be server latency
@@amineacademy1544 ohh.. is it from Google Colab itself? or do i need to fix it?
@@danielniels22 there's nothing we can do about it really maybe getting a better net would help a little
@@amineacademy1544 ohhh okayy thank u... But i really wonder why people use Google Colab. Idk why, but i still feel Anaconda's Jupyter Notebook is faster. They also provide something about tensorflow-gpu... Maybe i did miss something about Google Colab? Do you mind to share insights maybe? THank youuu 🙏
MIssing and absolutely necessary Software Developers:
1. Database developers (not users those that use the database, developers)
2. CAD developers as in people that write things like SolidWorks, CATIA, AutoCAD, Rivet,
3. Graphics developers, as in the NVIDIA Team, Autodesk team, VRay, 3Ds Max
4. Medical devices (although that's overlapping with others, they do have rigorous guide lines to follow that one must know)
5. The CAD field has so many subfields that it's hard to say it's on its own. You have Verilog, you have digital simulation, analog cirtuit simulator, those are all considered as CAD but are radically different from other CAD such as SolidWorks, or Rivet; those in turn are different from Animation CAD systems like 3Ds Max and Blender
just when I thought I couldn't be any more intimidated.
This cleared so much of the mystery up and was easy to watch, this guy nails it🔎
Great video! I am deciding on which direction to go next after my bachelor's degree and this video made the options more clear. I will probably stick to web dev and go more in-depth and focus on scalable and bigger projects. I also like game dev a lot but if it is a lot of work for not so much money, it is probably not worth it.
Yeah unfortunately it seems to be one of those career paths that you have to enjoy more for the game creation and less about the money. Creating video games is a huge business Market and the pay for those people should never be low-balled.
I want to start learning how to code and I came across your channel, your videos overwhelm me... But I can't stop watching them 😞
I work in embedded systems and in my opinion is the most fun of all software development out there. I think you also need to be have an interest in electronics and hardware. I like fighting for bytes and testing my sw while running it on the hw in a lab and I wouldn't change a job in embedded for web, game dev, or any of the other ones 😁
This is skanktacular my friend, this is helping me immensely.
Any time I watch one of this videos I'm really inspired. But I think you missed 2 things, Mobile and Desktop development. Even though we don't hear much about desktop developers these days 😅
I was thinking the same too. I could also add operating system developers and programming language designers.
considering so many people are watching this on either a laptop/desktop or mobile phone makes it particularly amusing. You might be looking at a website from a webdev, but your browser is definitely a desktop or mobile application =)
Great video, albeit a bit generalised .I'm sure a lot of people have discussed this already but according to my personal experience things simply take much less time and complexity decreases when you become a backend dev (I can attest to it) , front end is riddled with quirks and you have to confront the lack of uniformity where the code runs (the code will run in many environments), back end has just one environment where things can be locked down to a single compiler and environment which you can control , also front end code is closer to the user therefore making it more brittle, as complex interactivity will create a vector for failed behaviour , back end has challenges of memory management, resources , bottlenecks, outages ofc, but in my experience they took less to fix . Tasks like creating a data API, take a fraction of what it needs to happen to display it, and make it work for several displays , create interactivity etc, the logic nowadays resides in the front end , some backends just spit out data. If someone that has worked in both has a different opinion I'd like to hear
Wow, this is amazing!
So glad I came across this. I'm entering the tech world as a Data Analyst, but I'm impressed with the high demand for Software Developers.
So, I've been asking if a Data Analyst could easily transition into the Software Dev world, but got no tangible response...
But after watching this, I now know that Data Engineers & Data Scientists/ML Engineers, are also know termed "Software Developers".
Now I can look forward to having a smooth career transition in the future. 😎
Bios developing has to be one of the hardest jobs on the field especially when working with assembly instead of C
Hey Aaron,
Thanks for this video! I learned alot.
Aaron
Nail on the head with embedded systems. You have to watch how many variables you use and precisely control buffer size. Your code is specific to the hardware. It’s a blast!
Great video! Although I think you missed that AI models and algorithms are not implemented in Python or R, which are actually just the interface to them, but in C or C++
Wait, so would learning C++ be better for AI and machine learning? Assuming one wants to make money within 6 months.
@@sonicemitter6131 No. Decide weather you want to develop machine learning software or just be a machine learning software user. Both will require you to code, but the first one involves fast, compiled languages and tons of math and computer science knowledge and the latter involves probably Python and much less knowledge of what is actually going on. The usual job titles you see refer to being a USER, you'll just use machine learning algorithms, not implement them.
So yeah, if you want to get a job fast, learn python and python machine learning libraries.
@@JeSus-hl6zj Thank you for the information. I have more research to do it seems.
@@JeSus-hl6zj so if I wanted to develop a ML software/alogirhtm (the one that involves a lot of maths and cs) will c++ be a good language for that?
At times, the lower the tier such as front end and web development, the higher the pay.
*Reason 1:* They interact with a large cross section of people, from the CEO down to the outside testers and even HR.
*Reason 2:* Personal experience, since having a sales background, I knew exactly what the clients wanted and knew their language.
*Reason 3:* Even though working with back-end Devs, most end user requirement communication through all departments passed through me.
That’s a really nice video for starting cs students
More likely IT
Can't say I agree with your order whatsoever, but I appreciate the descriptions you gave. One crucial thing you forgot to mention with front end is accessibility. A truly responsive, accessible, user-friendly, progressively-enhanced PWA is very difficult to build. If front end is easy to you, then you are shafting at least some of your users.
Dude your thumbnails are amazing 😂
Just came here to make sure you weren't dissin' the game devs.
I am satisfied with your depiction.
What a great and informing video I don't think anyone else has made something similair. I'm just wondering where do you think iOS/mobile devs fit in between these positions? Thanks again for the video.
Dear reader, if you ever find yourself in front of some manager pitching buzzwords about how awesome, scalable and amazing a micro services architecture is…do your best to fake an emergency and change your name.
Don't ever be intimidated by those mentioned "I programmed x in 10 minutes" or whatever videos! They copy from an off-screen, prepared code. That's about it.
Writing code is usually fast, the thinking part is what takes time
Thanks for the awesome work Aaron!
Thank you!
It's hard to rank any of these roles in order because the difficulty often scales with how large the company is. The bigger the company, the more difficult the job can be, especially for DevOps / SRE.
Even small size startups are now demanding for cloud/devops/systemadmin roles that too for entry level position tho it mentions 3 years exper 😂 (something I don't standard this) but devops definitely is growing faster than before and this is the best time command on it. 🙌
Great video! Some key points were highlighted that I hadn't heard anyone else discuss. Thank you!
From the thumbnail I kept reading "IO types" (inputs and outputs).. I was very confused
As a game dev it is never wrong to know how your triangle actually get rendered^^
Data Scientist should be way down the list. All of their algos are prewritten and imported via external libraries. Moat data scientists just do "plug in and play".
For some, that's the case. But others do a lot of R&D in new application areas using TensorFlow, PyTorch, ML.Net first to develop new types of models that might work well, then make actual models to be made into production pipelines. Figuring out the right variables to feed into the ML training process can be tricky in some applications. There's a wider range of Data Scientists skill levels and pay levels than ever before.
@@DrunkenUFOPilot "others do a lot of R&D". I'd say 'others' equates to a tiny percentage of them. And yes, that tiny percentage that actually do create new solutions are trailblazers.
But the majority of data scientists are just putting the Lego bricks together.
@@DrunkenUFOPilot you've touched on a very important point that renders this video utterly useless - you can't directly rank jobs as per their "difficulty" - as their difficulty is highly dependent on the task at hand - there are the "for some, that's the case" in every field - the complex systems can be found in any of those positions mentioned and I doubt they can be easily and directly compared - not to mention, there is no metric as to how the ranking has been reached in the first place
Im learning Web dev and the biggest pain for front end is the responsiveness and managing different types of browser supports. Well it's a pain for me but I believe there is more.
I created a voxel engine in Unity and the complexity has become insane, so I count as game dev :) At my company, my job is to squeeze every bit of power out of the CPU/GPU for games and simulation. It's funny that everyone I met considers GPU/Shader development as evil stuff you never want to do. For game development, my tip is to consider real-time simulation, data visualization, and even military training simulations. Companies creating non-game-related real-time stuff struggle to find game-devs because all flock towards game companies.
I feel like game dev with an engine/Unity was downplayed quite a bit in this video and I'm feeling a tad salty about that. There's a lot more to it than the engine you're using.
@@ChipboardDev how would you suggest going about making a cheat for a video game I have decent knowledge on c++ and I’m want to know if that is enough to make your own cheats for video games
I did OpenGL C++ for 3D graphic development. Unity now seems like a walk in the park.
Funny I'm in 3 areas lol , and for what you say they are very difficult, but I don't think they are very very difficult, I think the problem nowadays is that schools /universities don't invest and teach most of the times , the basics and in a good way.
I think coding is easy in general It's just that it's incredibly time consuming to learn
What 3 areas are you in?
@@devinisreal9356 cybersecurity/pentesting/etc, embedded software, operating systems .
Bro! this was insane, thanks
You cannot put wordpress frontend at the same level as javascript+react+redux enterprise level apps. Try creating a scheduler with zoom levels and dates and events with dragNdrop from the ground up. Or UI for inner banking systems and many more. Those are pretty complex. I think you should subdivide frontend further. Otherwise great video.
Another missing from the list, and a cool area to be in, but not for everyone: Scientific Software Development. Someone has to make the tools used by radio astronomers, analyze data from particle accelerators, plan space missions, and make those pretty pictures of planets and galaxies appearing on magazine covers.
Takes serious math, time optimization, testing, making use of GPUs and large headless clusters of machines. Help chemists and physicists earn Nobel Prizes and bring Star Trek style warp drives and transporters closer to reality. Lots of C++, some Java, some old semi-forgotten languages, lots of legacy code because big science projects can last decades. Even a bit of Fortran now and then. Great if you know Matlab or IDL. If you're lucky, Julia is an impressive language.
As a Science SW Dev, and given that usually budget limits and hectic schedules mean one person does it all, more so than most other SW dev contexts but for startups, so you'd probably be doing some data viz, including 3D data viz, database, networking, user support. You may be working on a very important project, for scientist you routinely see in news interviews, but have a total of five users.
Challenging, but deeply satisfying to be on the cutting edge of knowledge. OTOH, universities and research labs don't pay as well as industry and business.
You forgot the Quantum Machine Learning Engineer 🤤
tbh that’s just researchers, I don’t know any business use for quantum computing
True, for today
you got Qiskit in python
When you finnished the front end
I knew you were a pure backend developer
I think people really underestimate the complexity of frontend applications. At my work all devs that work in the backend and on microservices really struggle in the frontend.
Because it's really hard to load the data correctly, while keeping the code readable and fast. As a good frontend dev you really have to understand how the DOM and the event loop works.
It got really complex over the last few years.
It's still easier than all of the backend.
@@vickerfinal never said otherwise
As an electrical engineer, I am in fact getting into AI, from learning how convolutional neural networks work to applying fuzzy logic to finite state machines
U forgot 3 important types of engineers:
1) Infrastructure engineers
2) SREs
3) Mobile developers
SRE are pretty much what he called devops(wrong name in my opinion)
Don’t know why he missed these types…
I think nowadays mobile dev is pretty much similar to web dev, that might be the reason he didn't include it
@@apoilgun8342 either embedded or web, depending on what part of the system
I've done quite a few of these positions and nothing has satisfied me more than game dev :P
Great compilation but one that is missing is Blockchain developer. The crypto world is blowing up right now
As a school DevOps I have to integrate systems that do not efficiently talk to each other. I have about 8000 lines of Perl code to daily automate data syncing between services, service uploads, automatic account creation/update/disable/delete across multiple incompatible services, manage Apache, Samba, NGINX,Postfix, MySQL, PostGRES and MSSQL database servers and every major OS platform. I also manage the 7 node VMWare cluster and SAN array. So yah, schools do not have a lot of money for employees or services so often you have 1 or 2 DevOps/Admins.
Wow, I don’t feel this guy has a full grasp on what is effectively Information technology Technicians, vs software developer. Many of them interface with software but more on a configuration level. Dev ops / Sys ops rarely pull out a full set of software chops to accomplish their goals. It’s usually like a Rube Goldberg Machine jerry rigging scripts together. I feel SRE title tends to have stronger software chops, and if you write a lot of code and do sys ops / dev ops you’re probably an SRE.
Chris Sawyer made Rollercoaster Tycoon in 99% x86 Assembly language... on his own. Graphics and sound and such were handled by a few others but all the code was done by SAwyer. Absolutely incredible, he is a programming god
You left out robotics, mobile and full stack
robotics - either automation engineer or embedded software
Very engaging video...and informative. Thanks for breaking this down for us!
U missed the unemployed developer
Miss the vids man, awesome editing
For me you missed Mobile Devs and Desktop Apps Devs ( someone has to develop Visual Code / Visual Studio / Browser or Excel ;-) ) .
Desktop developers aren’t worth mentioning. Most app are moving or already moved to the web. Mobile developers on the other hand are on demand.
Jack, this video is just sooo grreat!!. so loaded with value. can't thank you enough. I actually went to your about page hoping to see your email but...nada
I'm a math graduate and I'm just start my tech journey...I'm interested in software develoopment but still kinda confused where to specialize. I still need a lot of guidance.
Aaron what about blockchain developers any clue were the rank ? Thanks for all you do.
There is definitely a market for blockchain developers, however it might be to soon in the technologys lifespan to fit into a category