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
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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...
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.
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.
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'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 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.
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!
@@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.
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 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.
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.
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 🙏
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.
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.
It always irks me when web development is referred to as "front end" development, as if desktop and mobile front ends don't exist. This video doesn't even mention desktop app development.
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
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
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.
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
20 plus years moving around most of this list.. .from. Starting off with integrated, moving to webdev, then full stack - picking up IoT, DevOps and always working in Game Development .. I think calling webdev easy is just plain wrong. The complexities between these development spheres are all different and grading them on difficulty seems extremely silly and just seems to serve no real healthy purpose. Especially since different types of people will just be drawn to different spheres. They all just take different mindsets and all take a lot of experience to get great with them. I have met game engine designers who just cannot stand - or really do - web development, despite them having similar design to code journeys.
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!
I hear nothing but nightmares from my friend in front end web dev. Small sites are easy, but those high paying jobs probably have insane levels of tech debt and multiple versions of jQuery that have been customized on the same page and multiple competing frameworks.
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
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
i am a c++ developer because i am creating a procedural real time game (and it's have a lot of procedural things), but with some of tools, and a good code you can get a easy maintainability
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.
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.
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
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.
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.
Is more like a knowledge requirement list, where the more on the right are the most "scientific" parts of software development. The closer to the left the closer to the end user.
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.
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.
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.
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.
One reason why e.g. embedded development is paid relatively badly is because their work is always seen as a sunk cost by the bean counters. Whereas frontend development is a running cost for a company's primary process. And because our work is much more fun than the other types of work. It has its own satisfaction to create a new device.
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.
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.
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.
There's a few that I could add to this list. The first one is related to one you already mentioned being the hacker type, but instead of being a hacker looking for direct vulnerabilities would be the reverse engineer. The following are more of a specialized field but they warrant their own category and that is Audio Engineering or even now Lighting Engineering. Aside from those another that would be in this specialized field would be Avionics as in Navigational Software Engineering involving anything from basic Auto GPS to Missile and Rocket Guidance systems. I think these are worth a mention. The last one that I can think of to add to the list is quite often overlooked and it is kind of niche, but I would put it up there around the ranks of Game Dev concerning those who build their own engines and tools, compiler, and OS devs and this would be Hardware Emulation. Hardware Emulation is kind of on a differently level. It's a cross between pure software engineering and hardware engineering. You don't have to necessarily be able to build or design your own CPU or Architecture, but you have to at least understand their internal workings right down to the registers, memory addressing schemes, cache hierarchies if they exist, etc, ... This genre of programming has been around for some time, but now that PC performance has skyrocketed within the last 10-20 years, this is becoming more feasible and popular for people to design these kind of applications. Just look at all of your older retro gaming systems such as the NES, Playstation, etc... Right now there's an active team that has been working on and is still working on a full scale PS3 Emulator. You are basically writing a piece of software in a high level language primarily in C / C++ but you also have to know and understand Assembly to a very high level of degree and you have to be familiar with multiple architectures and instruction sets. You also have to be able to convert from one Assembly to another with great precision. These kind of programmers are trying to mimic the entire functionality of an already existing older system / architecture even right down to their hardware bugs... I'm 100% self taught I have studied and worked on hobby projects in many of these fields. Of these I like the Game Engine / Physics Engine - Simulator Design and I like Hardware Emulation... I tried to get into Compiler Design and OS Design but they are very large scale projects that will consume a lot of time... Even Game Engine Design is quite robust yet compared to OS Design, that's an entirely different beast. Now, doing what Ben Eater did with his 8 Bit Breadboard CPU, that seems like it would be a fun project to do. Other than that great video and I think your main points are just about spot on...
An interesting video! I feel that I learned a lot about the concepts between front-end and back-end. One area or niche in programming that I did not spot from the video is DSP programming.
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
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.
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
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
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
The quality of this video is just insane. You are making some real progress. Love your content. Keep it up!
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.
I love your videos' vibe. It's always got a chill atmosphere and the content discussed is always really well explained. 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.
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
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.
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.
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
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.
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...
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.
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.
My boy said php was the most common backend language 😂
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'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 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?
Front end web development definitely has the lowest bar to enter, but it can get wildly complex
I was just thinking yesterday I wish you had a video explaining the difference with all of them! Thanks 🙏🏼
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?
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.
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
Unusually clear source. Up to date pan-survey of computer science. Comments Rich.
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.
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.
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 🙏
When you finnished the front end
I knew you were a pure backend developer
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.
Man, I need to step up my video editing game. Yours is on another level
Bro, your explanations of most topics is 100% on point!
Easy to understand and process. Keep it up brother.
Thank you!
Just came here to make sure you weren't dissin' the game devs.
I am satisfied with your depiction.
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.
This is skanktacular my friend, this is helping me immensely.
Bios developing has to be one of the hardest jobs on the field especially when working with assembly instead of C
Listen Erlang has been a life saver for me when learning about scalability
It always irks me when web development is referred to as "front end" development, as if desktop and mobile front ends don't exist. This video doesn't even mention desktop app development.
Great video! Some key points were highlighted that I hadn't heard anyone else discuss. Thank you!
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
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
Whoever named a data engineering program 'Kafka' had a real sense of humor lmaooo
Bro! this was insane, thanks
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.
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
20 plus years moving around most of this list.. .from. Starting off with integrated, moving to webdev, then full stack - picking up IoT, DevOps and always working in Game Development .. I think calling webdev easy is just plain wrong. The complexities between these development spheres are all different and grading them on difficulty seems extremely silly and just seems to serve no real healthy purpose. Especially since different types of people will just be drawn to different spheres.
They all just take different mindsets and all take a lot of experience to get great with them. I have met game engine designers who just cannot stand - or really do - web development, despite them having similar design to code journeys.
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🔎
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!
I hear nothing but nightmares from my friend in front end web dev. Small sites are easy, but those high paying jobs probably have insane levels of tech debt and multiple versions of jQuery that have been customized on the same page and multiple competing frameworks.
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
I've done quite a few of these positions and nothing has satisfied me more than game dev :P
You also have Full-stack devs, which is a front-end Dev, a backend dev, a microservices dev, and a Devops Engineer all in one salary!
Kill me.
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
As a game dev it is never wrong to know how your triangle actually get rendered^^
Thanks for the awesome work Aaron!
Thank you!
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 am a c++ developer because i am creating a procedural real time game (and it's have a lot of procedural things), but with some of tools, and a good code you can get a easy maintainability
Do you use any engine
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.
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.
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
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.
I believe embedded cybersecurity engineers are the best.
Planes are not hacked only in movies
Your videos remind me why I love being a developer. Thanks
💪😎
I was baited to think this was a parody. Fortunately it wasn't and the content was just what I needed without knowing it. Thanks a lot
It's nice to find out I'm the most disposable type of programmer.
I assume, according to the industry.
Very telling.
I did OpenGL C++ for 3D graphic development. Unity now seems like a walk in the park.
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.
Is more like a knowledge requirement list, where the more on the right are the most "scientific" parts of software development. The closer to the left the closer to the end user.
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.
you missed Web3 / Blockchain / Crypto / NFT / smart contract development …
a class of it’s own
Great the answer that I was looking for.
You missed the most immerging one: Blockchain Dev
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.
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.
This was really helpful, thankyou
💪
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.
1. Web developer / frontend developer
2. Web dev backend
3. Backend microservices
4. Data engineer
5. Sysadmin/ devops/ cloud Engineer
6. Backend embedded system
7. Backend performance software developers
8. Hackers/ pen tester
9. Game developer
10. Data science and machine learning
One reason why e.g. embedded development is paid relatively badly is because their work is always seen as a sunk cost by the bean counters. Whereas frontend development is a running cost for a company's primary process. And because our work is much more fun than the other types of work. It has its own satisfaction to create a new device.
Hey Aaron,
Thanks for this video! I learned alot.
Aaron
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?
And another category: The engineer who loves writing their own custom applications for engineering CAD and data analysis.
That’s a really nice video for starting cs students
More likely IT
Missed 'Full Stack' devs. My work encapsulates at least half this list. 😆
I really enjoyed this video! Thanks!
Back end dev, which is going to be number 2
I felt that 💀
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
I enjoyed this!!
Very engaging video...and informative. Thanks for breaking this down for us!
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.
There's a few that I could add to this list. The first one is related to one you already mentioned being the hacker type, but instead of being a hacker looking for direct vulnerabilities would be the reverse engineer. The following are more of a specialized field but they warrant their own category and that is Audio Engineering or even now Lighting Engineering. Aside from those another that would be in this specialized field would be Avionics as in Navigational Software Engineering involving anything from basic Auto GPS to Missile and Rocket Guidance systems. I think these are worth a mention.
The last one that I can think of to add to the list is quite often overlooked and it is kind of niche, but I would put it up there around the ranks of Game Dev concerning those who build their own engines and tools, compiler, and OS devs and this would be Hardware Emulation. Hardware Emulation is kind of on a differently level. It's a cross between pure software engineering and hardware engineering. You don't have to necessarily be able to build or design your own CPU or Architecture, but you have to at least understand their internal workings right down to the registers, memory addressing schemes, cache hierarchies if they exist, etc, ... This genre of programming has been around for some time, but now that PC performance has skyrocketed within the last 10-20 years, this is becoming more feasible and popular for people to design these kind of applications. Just look at all of your older retro gaming systems such as the NES, Playstation, etc... Right now there's an active team that has been working on and is still working on a full scale PS3 Emulator.
You are basically writing a piece of software in a high level language primarily in C / C++ but you also have to know and understand Assembly to a very high level of degree and you have to be familiar with multiple architectures and instruction sets. You also have to be able to convert from one Assembly to another with great precision. These kind of programmers are trying to mimic the entire functionality of an already existing older system / architecture even right down to their hardware bugs... I'm 100% self taught I have studied and worked on hobby projects in many of these fields. Of these I like the Game Engine / Physics Engine - Simulator Design and I like Hardware Emulation... I tried to get into Compiler Design and OS Design but they are very large scale projects that will consume a lot of time... Even Game Engine Design is quite robust yet compared to OS Design, that's an entirely different beast. Now, doing what Ben Eater did with his 8 Bit Breadboard CPU, that seems like it would be a fun project to do.
Other than that great video and I think your main points are just about spot on...
Solid informative video with great depth in every sector
An interesting video! I feel that I learned a lot about the concepts between front-end and back-end. One area or niche in programming that I did not spot from the video is DSP programming.