I hope you enjoy, and here is the original author's Deets!! TH-cam Video: th-cam.com/video/iF0I2SPk5JU/w-d-xo.html TH-camr: www.youtube.com/@Power_Couple
at 13:15 you went from Math to Statistics. 😄I remember my statistics professor never liked when people call statisticians mathematicians. He would proceed to explain the difference between sciences and applied sciences. You called it correctly though. most developers need to be good at statistics to optimize their code or even invent custom algorithms for their cases. There are times where I spent days to derive my own correlations to either speed up my code or obscure performance parameters - something AI does not do yet btw. That aside, normally we see advancements in computing in general when there is a breakthrough in natural sciences and that normally happens when there is a breakthrough in math. A topic for those deep in chipset design and probably low-level development - Not for programmers for sure. A very active example today is how tight is the work between scientists in physics, math and CS in quantum computing. I would say the only time you need good math skills is when you are specialized programmer in a field where you're translating such equations/correlations into code. More of a specialization that is not really important for everyday developer.
I have both, a CS and a math degree. Even though it’s not directly related to programming for the day to day tasks, it helps you to think abstractly and trains you brain for problem solving.
My 5: 1. Normal algebra (regular formula-rearranging) 2. Boolean algebra (being able to write if statements efficiently) 3. Basic geometric transformations & trig (mostly for games/UIs) 4. Finding patterns/relationships between numbers you calculate a lot (why increment 2 counters when you can store 1 and add an offset?) 5. lerp(a, b, 0.1) Though it's not math, I've seen one too many people not be able to follow 2 nested loops, so I'll put it down as an honorable mention
@@seanmeyer6436 I'd say unless you're doing straight up frontend stuff you're likely to run into linear algebra sooner or later. Take the pagerank algorithm for example, this stuff just shows up everywhere.
tbh I failed the 2 nested loops because a variable was incremented in the nested loop and I just forgot that happened, but I understood it better when I started writing out everything on a piece of paper I am not a professional still, just a person who is interested in learning Java and still doesn't know too much yet.
From my experience the reason you “need” to be good at math for programming is because of the mathematical thought process of math and being able to apply that to development
I don't think it's "mathematical" process. Great software engineers have unique and fairly distinctive way of thinking that is fairly unique to this industry. Some overlap sure exists but this overlap exists between all fields of science. IMHO having philosophy degree is whole lot more useful in programming than a math degree. Most difficult problems in programming is not exactly writing code - anyone at this job is expected to be able to do it to some decent proficiency - and usually good highschool level math will take you everywhere what's necessary in programming . More difficult task is typically arriving at consensus of the solution. Thing about math in general is that it's more lone wolf kind of subject compared to programming. Not saying that mathematicians don't collaborate they do but not on as frequent and not to same extent that programmers need to sync. It's kind of rare that you'd have army of hundreds of mathematicians working together on single project. Philosophy degree really sets one up ahead of others as it may help you construct your thoughts better and make it easier to understand different takes on it. On other hand if you have math background and you started explaining problems through the perspective of mathematical approaches - it may be more difficult for others to understand what you're saying - because typically mathematical ways of explaining things in programming is not necessary the lowest common denominator approach towards explaining problems and ideas behind programs. Philosophy on other hand really helps to separate the wheat from the chaff. That's in essence why all the gurus telling why you should use monads are never able to escape their small circle of irrelevancy in grand scope of software engineering - there are just more simple ways how to explain same concepts that don't require mathematical concepts that don't really serve important purpose in software systems. In essence sure math degree is helpful to get a job in software engineering and be the average engineer. Philosophy degree on other hand is much more likely to help you go above the average engineer than the math degree is. And computer science degree in good university probably is still the best. Problem though with software engineering degrees is that it's much harder to find good ones - in many areas it may be easy to find decent philosophy studies as it's been for centuries. However software engineering most of available degrees are time wasting rubbish only few universities have really good programs.
@@sk-sm9sh formal logic is generally a different branch of mathematics to highschool mathematics, it is mathematics but it is different mathematics. That is the thing, you can learn the rest where needed and unless it is specific applicable fields (writing a ray tracing engine, avionics of an aircraft...) it isn't a lot of the more advanced highschool mathematics even.
To describe how I see it, most important thing is being good enough at mathematical thinking, rather then being good at math. This may sound weird, but the my point here is that math study also comes with a lot of terminology and symbols which are different from the terminology and symbols used in programming. I mean, to me it's more important that I understand how long functions or loops are going to take and the how and why behind that, than also being good at finding the right mathematical terms (like exponential, logarithmic, factorial, etc) for all that. And not everything here is all just mathematical, but technical understanding around memory and CPU usage also matters, as well as other considerations like understandability, safety and security of my written code, etc.
I'm especially like this getting into programming with coding in p5js as part of a design degree. I didn't expect to be drawn to math at all but it's satisfying when you're using it to realise a creative idea.
- Vector Math - we use vectors all the time (array). Good to make animations, measure correlations. - Linear Interpolation - Useful to mix colors, remap scales, etc - Binary math - Sets - Basic statistics
As a professional programmer of +30 years I programmed in C, C++, Java, Python, Javascript, Go, and Rust. The one thing I've learned is that it's the same old shite just repackaged as the net new thing. My first job is 1992 was writing client/server TCP/IP socket communication protocols in C. Today 30 years later I'm doing the EXACT same thing in Rust lang. Did I need maths in my 30 year career. NO. Oh BTW I forgot to mention, I invested my career earnings into investments and now I program for fun, because I love it and I've loved it since I was 13 years old. The moral of the story - Love what you do, and you'll be OK. Maths is useful, know a bit of it, but as a programmer you can learn what you need to learn on the job - THAT IS WHY YOUR ARE A PROGRAMMER - we figure it out as we go along!
@@Blaisem You don't need an advanced level of mathematical understanding - a basic high-school level of maths is fine. The ability to understand percentages, understanding how leverage works, i.e. to amplify gains (and losses!) Understanding risk - i.e. volatility of an asset - you could use standard deviation as a simplistic measure of risk. Understanding simple linear regression. It's all high-school stuff. The key is to ensure you can invest in assets using a bit of leverage, which you can manage and maintain in times of stress in order to maximise your gains, whilst ensuring your money is working hard to generate gains.
@@gickygackers You need to study it at collage. Or at least get some practical experience, create some open source software and show your experience on your resume.
Another set of skills he didn't mention, modulo, and logic. Knowing what mod is and how to use it is extremely useful. For logic, ANDs and ORs are nice, but knowing that (A || B) = !(!A && !B) or that (A && B) = !(!A || !B) (De Morgan's Law) is really useful for simplifying conditions. As for the rest of the maths, definitely does depend on the application and field you're going for. I am making a game as a personal project, and work in the aero space industry, and you need to know trig, differential equations, control system's theory, signals and system theory, as well as linear algebra for some of that work.
Though I've learnt this eventually in Boolean Algebra, De Morgan's Law is extremely intuitive and I ended up using it without ever knowing about it, so atleast you don't need to study De-Morgan's, it'll just come to you naturally.
Usually I do my conditions without thinking about them. If you write clean code, I don't think you will ever have a condition that complicated like !(!A && !B) in the first place, so there is nothing to simplify. I think this is useless for 95% of developers. Usually using guard clauses is superior to having big scary conditional statements.
@@twothreeoneoneseventwoonefour5 in the aerospace world, when having to write code for embedded hardware, you will find very big and scary conditionals that need to take into account very specific sets of conditions, and you can’t just “clean code” them away without first knowing how to simplify them. You can’t just trial and error until you think you’ve got it right. Instead you use techniques such as K-maps, truth tables, and De Morgan’s to know you got it right.
I'm like a 6502 microcontroller running at 0.2Mhz and that guy at 1.25 speed is like the serial bus trying to send me something at 115000 baud rate and all that while my dog is causing a hardware interrupt every 3 seconds
The kinds of maths you need will vary a lot with the kind of programming you're doing. The guy programming a missile to be able to blow a different missile out of the sky and the guy programming some frontend to be nice and comfortable to use are both programmers. Ask the missile guy to make you a nice UI, though, and you might be left wanting.
This is the only correct answer - people act like programming is just one monolithic thing and I don't get it! Programming is just a tool, a means to an end. How much math you need depends on your end goal.
13:45 the median and the average are related in statistics, because a median is a type of averaging. In fact, the ”average” is used as a word to talk with people who have no idea about statistics. There are 3 averages, known as “mean median mode”. Which one you use will depend on the distribution. For example, in a non bell-shaped distribution, you don’t wanna use the mean, because it will be skewed towards the tail. The mode for example, is the most frequent value ( say you have a dist of 1,2,3,4,4,4,5,6,7,100) the mode is 4 because that’s the most frequent. One could say that, since you have a higher chance of encountering a 4, you will encounter a 4 more frequently *on average* 16:37 you say stats are great but then you say you are not gonna run inti linear algebra. Linear algebra is used in statistics and data analysis. What do you mean you wont run into it? You cannot do statistics / data analytics without calculus, linear algebra and integrals.
There is another important skill that all programmers should have and is not necessarily connected to math: understand a requirement and translate that to code. That alone is much more important than most math skills the guy here is proclaiming to be absolutely necessary. It doesn't really matter that you are a little math genious if you are not able to talk with the back-office/business analyst and automatically translate what they are saying into data structures and conditions.
>understand a requirement and translate that to code This is a narrower version of step 0 of mathematics called formalization, you have a specification of ideas, you want to understand what it means in formal statements. (all codes are formal statements) People who say "communication is more important than math" often don't understand math or communication. Mathematics is clarified communication. You assume "the back-office/business analyst" people have a clear idea of what they want, that is rarely the case. The deeper reason is because people think in natural language, natural languages are inevitably ambiguous. Words are ambiguous, pictures are ambiguous, only logical forms aren't. This is the reason why you can't program computers by writing in English, you need a formal language that comes from some context free grammar. The point of Mathematics is it guides people to a clearer idea of what concepts they want to capture, and give them precise forms. From there they solve their problems. It's not simply about solving equations (or whatever silly images lay people have about mathematicians).
An even more important skill would be to know how to get out of your bed in the morning without smashing your face on the floor, since you can't function effectively as a human without that skill, let alone as a programmer, but that's not what the video is about.
Love how Prime reasonably reacts and calls out the original video. There's definitely no way that knowing factorial is a major factor for a programmer outside of a school project or interview question, and even if it was, it's literally just basic multiplication from 1 to n. I'm like 99.9999% sure you're never going to be solving an issue and realize that you need to loop x factorial or use x factorial in a formula.
I think it's completely depends on the type of project you are doing If it's just a small project like a landing page, or just a small simple application, you don't need math at all But in large complex projects, there are so many areas were math could be very useful In general math is a very good skill to have as a Software Engineer, especially if you know how to leverage your math skills in solving real world problems
I 100% agree with this take. Math is important but I've never used more than basic arithmetic operations or logarithms for time complexity while programming. Maybe if you wanna get into machine learning and AI you should know more math like derivatives, integrals, matrix multiplication and differential equations, but that really only applies to machine learning. I had to take a bunch of statistics classes during my biomedical studies (way to many if you ask me) but it helped me so much when I got into programming. As prime says, understanding distributions or knowing why median is better than average in some cases is so extremely useful to know. Even some more advanced stuff like probability, hypothesis testing, regression and classification are very useful to understand when getting into programming.
It was almost like you were reading my mind. Statistics is by far the most useful math skill I learned for software engineering. Bit manipulation math comes in handy occasionally. Boolean logic comes in handy, but I've found if I'm applying that skill at any non-trivial depth it usually means I need to clean my code instead. Of all of the things the original video mentioned, I'm usually considering Big O but in a more general "How can I make this more efficient?" context. I used logarithms to solve a problem one time in the last 20 years.
1:24 If you want to get to the point of the video fast there's a browser extension "sponsor block". The main feature is to skip sponsored segments, but also it gives you option to "highlight" the most important thing, which is typically the answer to the title of the video
I like watching the sponsored content to support the TH-camr. This is usually at most min(1 minute, 5-10% of the video). It's the fluff content such as introductions or entertaining segues to pad out the video length that take up like 50%+ of the video and is useless that I want to avoid.
@@Blaisem Sponsors either pay youtubers up front, how many people click the link, or how many people use the promo code. You are wasting your time lol. No sponsor pays influencers based on watch time you are out of your mind.
I know my way around 3D vectors, because I made things in Unity. It's really not complicated if you can see it play out before you. Ultimately I made a script for a camera, which moves it smoothly, ahead, allows soft focus on enemies, can have boundaries, etc. It all required quite some vector calculation.
Why the heck would the average programmer need type theory? While some concepts might be useful, I'd say unless you work on a compiler you most probably won't ever need to bother with that.
@@moonythm I mean enough type theory to recognize that stringly-typed interfaces are not the way. Even dynamic languages, people need to understand very simple type theory. Like a 101 first day of class amount of info.
+1 for graph theory (e.g. to linearize dependency graphs you do a topological sort), but I'd also add boolean logic and some set logic (union, intersection, etc., especially useful when your language has a built-in set type)
@@egor.okhterov are you saying that is "big boy math"? that is also undergrad math(first 3 or 2 semesters). Big boy math is stuff like functional analysis, algebraic topology and so on, however, I don't see how "big boy math" could be even remotely useful to a programmer.
I'm a math graduate and I don't think 95% of what I learned is directly relevant to software engineering profession on a daily basis. You need some basic math, sure, but not to the level most people think. Unless the domain/project you're working on is directly related to math, I don't think it ever comes up. In the decade that i became one, the only time I really vividly remembered I used some math was for generating an amortization graph on a webpage for a loan company.
Multiplication and division are fundamentally the same thing. And even if you consider them different, in fact, most multiplication in banking is impossible without division. For example, if you want to know, what 50% interest rate would give you over your 100 dollars, you would have to multiply 100 by 1,5. And when you multiply 100 by 1,5, you have to know what multiplying 100 by 0,5 is, because you can't just magically multiply by 1,5, you first multiply by 1 and then multiply by 5 that was divided by 10 (0,5) and then add the results together. 100 * 1,5 = 100 * (1 + (5/10)) = 150. Also, multiplying by 3/2 is the same as dividing by 2/3. 100 * 1,5 = 100 * 3 / 2 = 100 / 2 * 3 = 150
In my current job the technical interview was just: implement fizzbuzz with these characteristics and write a unit test for it. I was even told at which multiple of a number it should be fizz or buzz or fizzbuzz. It was less a test to check my coding skill and more to test my ability to learn and pick up new dev environments and add-ons Ive never used, because i did never use what they are using. I was done after 3 minutes and the rest of the 45min interview was just the boss showing me simulations and telling me about what the system they develop does :). I hate interviews where I have to regurgitate some obscure algorithm which I may have learned in some university lecture... If an algorithm/solution for a problem already exists in a library, I use the library and don't bother with implementing it myself, I got better things to do. But if it does not, then I'm happy to implement my own. Oh and one of the interview questions was: We require that you are able to use google properly and research/lookup docus for things we are using.
I've used combinatorics in programming, for example when looping through all possible combinations in tests (e.g. OS & version), when trying to create a Wordle bot, and so many other things. This just needs the first lecture of a combinatorics class (or just reading python's itertools docs), but not as niche as other math
If you’re in scientific computing, linear algebra is the single most important piece of mathematics you need to know. Almost every physics problem turns into an eigenvalue problem if you look at it long enough.
Well a little bit of Calculus would be applicable here too... Vector Calculus to be more precise... Rates of Change, Integration by Parts, limits of a system... etc... As well as Analytical Geometry... You kind of need to be able to the various geometrical shapes, their properties especially when applied to certain materials in certain configurations and even some cases various manifolds which then leads into number and group theory... If you want to go that far down the rabbit hole, then even Quantum Mechanics / Quantum Physics has its own set of applied mathematics to it... which brings you into probabilities and statistics.
@@skilz8098 Basically every mathematical operation you describe become a linear algebra problem when you implement them in a computer. So while you are correct that all those other fields of mathematics are important, if you want to use them in a computational setting you better also know your linear algebra. Besides, computational quantum mechanics is nothing more than applied complex linear algebra.
I think what skill you learn by being extremely good at maths is the ability to visualise problems and solutions mentally which directly translates to implementing complex algorithms in programming. Also, DSA is one of the most difficult topics according to every programmer. So, a passive ability that helps you be good at that and gives you an edge over the competition is definitely worth acquiring. Thank you for listening to my ted talk.
yeah, memorizing math is not needed, understanding math is needed. one can solve an equation using its cheat sheet, but, if you were to understand how to arrive to that solution to the equation itself, thats more important in programming. I think similar thought process is in numerical analysis and linear algebra subjects.
The reason why top companies would consider someone who is good (deep understanding of math concepts) in math before others is not because of the math skills, but mainly about the fact that they're good at solving problems and abstract thinking.
I have been in the business for over 20 years. It has only been in the last 10 (or maybe less) that companies have even been asking questions like these... it's a FAANG thing. "Interview Questions" has literally become a subculture in our industry.
I started coding a few years ago. I have a PhD in economics and before coding I was mainly doing applied game theory (research). I do not consider myself a math chad, however I started coding with a lisp dialect (clojure) and in this case I really enjoyed having some math skills even though I do not think that they are directly useful per se. I take what they guy said in the first minutes, I think it's a matter of being trained to abstraction and abstract stuff
I despise trick questions on both interviews and on tests. Those ones that are architected to make you fail. I’m a very black and white get to the point kind of guy. If an interviewer asked my a trick question like that, I would say, “Bye bye, don’t want to work for you anyway.” …..
I’ve had to re-learn a lot of math concepts on the fly for different projects and I always soon forget them after. Usually when I learn a “new” concept I’m like “oh I’ve used that, I just didn’t know it had a formal name!”
I think that "Oh you need **THIS** Math" is not great way to put it I personally see Math just as a pure subject that teaches you to start from basic stuffs and build powerful results and notice patterns and shiz Learn what you think is useful, and if you wanna get into more involved stuff like cryptography, cybernetics, graphic engines, etc, you may need to go through Algebra, Statistics and Information Theory, Grassman/Lie Algebra etc I think most important skill for a CS student can be also to develop mathematical maturity
In my experience, the bread & butter of programming "math" is figuring out that correct little algebra formulas based on the variables in your FOR loops, i.e. just Algebra 1. Example: In a view port that's height H and width W, place a columns and b rows of rectangles, each of which is height h and width w, with uniform spacing both horizontally and vertically, except that the four outer-most borders get double spacing. The placement call for each rectangle places it by its center point. In my experience, that kind of trivial-but-ya-gotta-write-it-down algebra is "the math" of programming, regardless of any more sophisticated math that might be needed for particular situations. Any kind of coding inevitably will include stuff like that.
I find the ability to read advanced math to be far more important than the ability to do advanced math. The computer can do the math, I just need to tell it what I need. Integrals once confused me, their special symbol made any formula using this operation impossible for me to read, now I can just look up a library or function that does it for me.
I realize, as my first year in my compiter science in university (3 years total) was entirely maths courses. I also realize that me procrastinating the entire year and cramming at the end to barely pass was pretty damaging yo me as I will be wasting time to learn that crap again
1 Basic Infinite Category Theory 2 Basic infinite Ramsey Theory 3 Basic Stochastic Partial Differential Equations with regularity structures 4 Basic Derived Algebraic Geometry 5 Basic Inter-universal Teichmuller Theory once u get the basics of these 5 topics, then you can start thinking making websites.
It's so funny with "gotcha" code. Basically that's what code certificates does (my experience is Java). They jumble together a bunch of logic so tightly and badly named that even a junior dev wouldn't end up with it in their first ever PR. Totally against clean code principles and readability. It just a game of "can you find all the details in this complex shit I made to scare you with, that technically represent about half of the logic this language supports at the same time in an unreadable piece of code?" Pedagogy isn't the IT industries strong suit lol.
As someone who failed all subjects at school and maths, i can confirm you really don't need maths to have any form of success. I've been working as a hybrid of Engineering & Design for many startups the past couple years, including during my university years. All the maths I do is just adding, substracting, multiplication, and division.
Math is useful in the sense that most math is deriving short cuts and formulas for computation, and as a programmer you are frequently implementing computations. The more complicated the computations, the more complicated math you need to understand to implement them efficiently. But there are plenty of useful things you can build that don’t require you to implement complicated computations.
My top 5. 1.) Basic logic and binary representation of numbers. (Bool, De Morgan, Int, float) 2.) Basic linear algebra. (What is linear, what are even/odd functions, sine cos and exponential, really basic what is a derivative and an integral) 3.) Statistics, some combinatorics maybe not even BigO as you can just learn them, but something else. And a view basic distribution and what the most important values of a statistic mean. 4.) Some geometry and maybe look if he finds the connections between geometry and other math. 5.) Some discrete math and what problems number representation can have. If we talk about a full engineer with a degree and so on i would dig much deeper: - full on integrals and derivative if relevant for the job multivariable calculus ( anything with ML this is like basic logic a must have) - statistics would be a view distribution, how to work with real data that does not follow a distribution, hypothesis and test - if ML or more engineer than programmer classification on hypothesis etc. - more discrete math like galois field. - Fourier, Lagrange, Hamiltonian if it's something with a real machine (car, robot) or if we get into game dev. You don't need to do these things a lot at work, like you do at university, but you need to understand what others are doing with them, you might need to implement some of the math, or somebody else needs to implement it into your codebase, and yeah in some disciplines it is your bread and butter and you code only a little bit. (Most control engineering algorithms are one or a handfull lines of code, but these are hard lines to write)
everthing you learned in mid school should be enough.... depends on what you want to do,you could say pyschics is required,if your programm is based on pyschics...
Im working as sw eng In the MedTec industry, specializing in Geometry modelling/mesh and Image processing. Most advanced algorithms require math. Its super important. Maybe not as Web dev.
To me, math as a programmer is almost more a communication skill than a hard skill. That's why we ignore the details when using big O notation, for example - we just don't need the amount of exactness an actual mathematician will need. But having all of these tools math folks came up with, to describe how our stuff works, makes it so much easier for everyone involved. You can very quickly hone in on why a solution is good or bad, it's just useful vocabulary to have every day.
I'm definitely not good at math but I'm good at programming, and understand stuff like exponents and trigonometry and vectors (and even quaternions to some extent)
I've taken a bunch of college math, most of it was in the calculus realm (continuous mathematics). I was pretty burnt out on it by the time I started serious statistics and discrete mathematics. It's sad because that is way more useful and should absolutely be prioritized over calculus which are rarely used in the real world in most jobs.
I get that it's not a fresh video but if someone could explain to me the primeagen question about a promise factory? I think I have a decent understanding of how they work(event loop and stuff) but I think I don't even understand what is he asking to build. So it should be a queue of promises and there also should be a promiseFactory function and if I call promiseFactory(promise) then the promise gets executed? Wouldn't promises start executing the moment I put them into queue? Or am I supposed to implement something like a lazy promise(like in Prisma) where they start executing only after await/.then? Or should it work in a such a manner that when I put a promise into a queue if it's first then it gets executed, if it's second or later then it should start executing after the first one is done? But then what is promiseFactory is supposed to do here? I think I missed the question entirely and I would greatly appreciate if someone could explain it to me better.
Statistics is the most userful thing to know, but it has quite a lot of prerequisites. To make a good use of stats you need to know some calculus, combinatorics, probability and algebra. To put your data together you'll probably need some LA. Also statistics itself is HUGE. So many different stuff in there, and everything might be userful. But it's totally worth it
I didn't get too far into the video, but I'm still going to put my take here first: You don't need to be good at math for programming. You don't need advanced maths at all. You do need good logic and the ability to use a lot of basic maths very often, but that's about as far as it goes most of the time. Out of 100 000 lines of code written, you could have 1 or 2 advanced maths concepts used, and whether or not you googled it doesn't matter much. EDIT after watching: pretty much what I said, you'll pretty much never see a factorial problem, everything else was really basic. I do agree statistics are something you must know. I overlooked it. It does count as advanced in that it's rarely explored much in lower education, but it's not that complicated. I'd add, that even for gamedev, maths is all about quantity and not depth. There are really only a select few specialties as a gamedev that require high level algebra. You do need geometry and trigonometry but it's not that hard honestly, you just do a shitton of easy stuff, that's the brain-busting part.
During my career I've never really needed any significant math skills. I am highly interested in math and I always check all kind of algorithms and math related videos (of which 50% goes over my head most of the time). I'd wager my math skills are pretty average or slightly above when compared to a "layman", but compared to most coders probably lower or the same.. which in my experience isn't that high. Knowing how arrays, dimensional matrixes, pathfinding and other concepts work in the very superficial level is enough, as proper mathematicians have figured out the algorithms for us ages ago. There is no need for us to know them, unless we personally want to. We can just take a proper library or algorithm and use/implement it, test that it outputs what is expected and concentrate on something more relevant to your actual coding. I've programmed since 1993, never have I been in a situation where my math skills prevented me to create a solution or code that was needed. Good for you if you are skilled in math, but using it to filter out "bad coders" is absolutely ridiculous.
It really depends. - Web dev requires almost 0 math - Statistics requires statistical math like means - Algorhitms require math patterns for some optimization "tricks"
Math n programming depends on what ur programming, need beyond college algebra for science n game programming. What is it calc n diff equations for game engine programming, i imagine for web n something like Netflix basic math is good enough any rare special you can look up???
If generalized to all fields of programming, I'd agree there really isn't much math necessary other than some of the things this video is claiming. I think outside of that, it really depends on the problem space you are working on. Statistics are great to know in many cases but when you are in mechatronics you'll need integrals, derivatives, linear algebra and knowledge on feedback control etc. Games and CGI require different set of skills. Most of my carrier as programmer required very little math making 2D GPU drivers (most of it were pluming memory addresses from graphic library to the GPU registers). So I would advise to learn about the problem space you are working on and learn the necessary math skills as necessary.
Depends on what you're doing. Cryptography? Better be solid. Distributed systems? Please tell me you've used a model checker. Any kind of performance-oriented work? Stats and at least basic calculus. Being able to think "mathematically" is probably the most universal skill everyone could benefit from (and most people do it even if they wouldn't call it that).
Project Euler is a good resource. It’s kind of like leetcode but way cooler. I think people look at math all wrong. For a ton of programming, you don’t have to be a genius math wizard. However, math problems are a good way to strengthen your problem solving skills. Treat them like puzzles and gamify the process.
@ThePrimeTimeagen, I liked your interview prep question. It would be helpful if you could break down how you would answer such a question step by step.
The thing is that the current definition of being a good programmer doesn't fully align with what we've been taught being good at math is. Both are about recognizing patterns, giving problems a structure and solving them in a logical way. However there are more aspects to practical programming and school math that make them not have that much of an overlap.
i notice in Singapore in my work there.. a lot of interviews were gotcha interviews rather than the comprehensiveness and trainability of the programmer especially how well they could understand quickly a concept they dont understand at first. Gotcha questions are simply solve by practicing those trick questions but what you get are programmers that are just stupid technical evangelist.
Here's some of the lesser talked about mathematics that could be beneficial and even applicable to know, but this can vary on one's field. Game Theory Lambda Calculus Language Theory Graph Theory These are the kinds of math subjects that may be a bit niche yet learning their basics could be fundamental in helping one to develop better problem solving skills even if one never uses their applied properties directly. They might be worth looking into just to give you another tool in your tool box.
There really are different levels of programing dependent on what you wanna do, and you're going to need more or less math based off that... everything I wanna do requires me to learn the most complex mathematics, as it involves recreating complex real-life simulations. On the other hand, if you're just doing basic web design stuff, you can probably get away with basic algebra and just copy and pasting algorithms you don't understand.
Engineers are really good at making up maths, that get people to invest capital into projects, that everyone else has to figure out how to make work in real life. If I had a dollar for every time some engineer handed a CNC tech a blueprint that was physically impossible, I'd be a very rich man.
@9:40 What he said was actually completely wrong. K is itself a function of N. It doesn't run N*K times, it runs sum from n=1 to n=N of (K_n) times. This could be O(N*K) or it could be any number of other values.
I don't think you need certain hard math skills, but the soft math skills are useful. The ability to manipulate equations in your head, left side right side stuff, observing orders of operation, understanding a running count of numbers so you can design an iteration over a range to achieve some output, just the ability for your brain to store and process logical equations and numbers is useful when you come to the logical architecture of your code. So you don't need to be good in math, but you need to have a head for the logic underpinning math, if you want to be a good programmer. I mean you could be an average one just memorizing some rote tasks and repeating them in different contexts, but to standout the ability to think logically should matter somewhere. Arguably math trains this skillset, so in a lot of cases, being good in math could indicate you have a head for logical abstractions. But I could understand someone disputing this assumption, too.
I hope you enjoy, and here is the original author's Deets!!
TH-cam Video: th-cam.com/video/iF0I2SPk5JU/w-d-xo.html
TH-camr: www.youtube.com/@Power_Couple
"ggandor/leap.nvim" A motion plugin worth taking a peak!
stats are important for the job but what he's saying is math required to crack the fresher's coding interview
at 13:15 you went from Math to Statistics. 😄I remember my statistics professor never liked when people call statisticians mathematicians. He would proceed to explain the difference between sciences and applied sciences.
You called it correctly though. most developers need to be good at statistics to optimize their code or even invent custom algorithms for their cases. There are times where I spent days to derive my own correlations to either speed up my code or obscure performance parameters - something AI does not do yet btw.
That aside, normally we see advancements in computing in general when there is a breakthrough in natural sciences and that normally happens when there is a breakthrough in math. A topic for those deep in chipset design and probably low-level development - Not for programmers for sure. A very active example today is how tight is the work between scientists in physics, math and CS in quantum computing.
I would say the only time you need good math skills is when you are specialized programmer in a field where you're translating such equations/correlations into code. More of a specialization that is not really important for everyday developer.
I used to think you were master of programming (engineering) but today .......
I have both, a CS and a math degree. Even though it’s not directly related to programming for the day to day tasks, it helps you to think abstractly and trains you brain for problem solving.
My 5:
1. Normal algebra (regular formula-rearranging)
2. Boolean algebra (being able to write if statements efficiently)
3. Basic geometric transformations & trig (mostly for games/UIs)
4. Finding patterns/relationships between numbers you calculate a lot (why increment 2 counters when you can store 1 and add an offset?)
5. lerp(a, b, 0.1)
Though it's not math, I've seen one too many people not be able to follow 2 nested loops, so I'll put it down as an honorable mention
Lerp is good one 👍 Even for simple webdev
2 is not what boolean algebra is at all
@@colefrankenhoff1428 I meant it as being able to read/write logical expressions to put in ifs/loop conditions, which boolean algebra is all about
@@seanmeyer6436 I'd say unless you're doing straight up frontend stuff you're likely to run into linear algebra sooner or later. Take the pagerank algorithm for example, this stuff just shows up everywhere.
tbh I failed the 2 nested loops because a variable was incremented in the nested loop and I just forgot that happened, but I understood it better when I started writing out everything on a piece of paper
I am not a professional still, just a person who is interested in learning Java and still doesn't know too much yet.
From my experience the reason you “need” to be good at math for programming is because of the mathematical thought process of math and being able to apply that to development
I think basic logic skills are more important to the thought processes in coding.
@@redpillsatori3020 logic IS mathematics
I don't think it's "mathematical" process. Great software engineers have unique and fairly distinctive way of thinking that is fairly unique to this industry. Some overlap sure exists but this overlap exists between all fields of science. IMHO having philosophy degree is whole lot more useful in programming than a math degree. Most difficult problems in programming is not exactly writing code - anyone at this job is expected to be able to do it to some decent proficiency - and usually good highschool level math will take you everywhere what's necessary in programming . More difficult task is typically arriving at consensus of the solution. Thing about math in general is that it's more lone wolf kind of subject compared to programming. Not saying that mathematicians don't collaborate they do but not on as frequent and not to same extent that programmers need to sync. It's kind of rare that you'd have army of hundreds of mathematicians working together on single project. Philosophy degree really sets one up ahead of others as it may help you construct your thoughts better and make it easier to understand different takes on it. On other hand if you have math background and you started explaining problems through the perspective of mathematical approaches - it may be more difficult for others to understand what you're saying - because typically mathematical ways of explaining things in programming is not necessary the lowest common denominator approach towards explaining problems and ideas behind programs. Philosophy on other hand really helps to separate the wheat from the chaff. That's in essence why all the gurus telling why you should use monads are never able to escape their small circle of irrelevancy in grand scope of software engineering - there are just more simple ways how to explain same concepts that don't require mathematical concepts that don't really serve important purpose in software systems. In essence sure math degree is helpful to get a job in software engineering and be the average engineer. Philosophy degree on other hand is much more likely to help you go above the average engineer than the math degree is. And computer science degree in good university probably is still the best. Problem though with software engineering degrees is that it's much harder to find good ones - in many areas it may be easy to find decent philosophy studies as it's been for centuries. However software engineering most of available degrees are time wasting rubbish only few universities have really good programs.
@@sk-sm9sh formal logic is generally a different branch of mathematics to highschool mathematics, it is mathematics but it is different mathematics. That is the thing, you can learn the rest where needed and unless it is specific applicable fields (writing a ray tracing engine, avionics of an aircraft...) it isn't a lot of the more advanced highschool mathematics even.
To describe how I see it, most important thing is being good enough at mathematical thinking, rather then being good at math.
This may sound weird, but the my point here is that math study also comes with a lot of terminology and symbols which are different from the terminology and symbols used in programming.
I mean, to me it's more important that I understand how long functions or loops are going to take and the how and why behind that, than also being good at finding the right mathematical terms (like exponential, logarithmic, factorial, etc) for all that.
And not everything here is all just mathematical, but technical understanding around memory and CPU usage also matters, as well as other considerations like understandability, safety and security of my written code, etc.
Programming for me is creative discovery. As soon as the puzzle is solved, I lose interest and it becomes a chore to tie up loose ends.
I'm especially like this getting into programming with coding in p5js as part of a design degree. I didn't expect to be drawn to math at all but it's satisfying when you're using it to realise a creative idea.
- Vector Math - we use vectors all the time (array). Good to make animations, measure correlations.
- Linear Interpolation - Useful to mix colors, remap scales, etc
- Binary math
- Sets
- Basic statistics
As a professional programmer of +30 years I programmed in C, C++, Java, Python, Javascript, Go, and Rust. The one thing I've learned is that it's the same old shite just repackaged as the net new thing. My first job is 1992 was writing client/server TCP/IP socket communication protocols in C. Today 30 years later I'm doing the EXACT same thing in Rust lang. Did I need maths in my 30 year career. NO. Oh BTW I forgot to mention, I invested my career earnings into investments and now I program for fun, because I love it and I've loved it since I was 13 years old. The moral of the story - Love what you do, and you'll be OK. Maths is useful, know a bit of it, but as a programmer you can learn what you need to learn on the job - THAT IS WHY YOUR ARE A PROGRAMMER - we figure it out as we go along!
Ironically if you are making a living off of investments just as a side hobby, then I would expect you to have a pretty reasonable affinity for math.
@@Blaisem You don't need an advanced level of mathematical understanding - a basic high-school level of maths is fine. The ability to understand percentages, understanding how leverage works, i.e. to amplify gains (and losses!) Understanding risk - i.e. volatility of an asset - you could use standard deviation as a simplistic measure of risk. Understanding simple linear regression. It's all high-school stuff. The key is to ensure you can invest in assets using a bit of leverage, which you can manage and maintain in times of stress in order to maximise your gains, whilst ensuring your money is working hard to generate gains.
How do you get a first job in software. I'm stumped!
@@gickygackers You need to study it at collage. Or at least get some practical experience, create some open source software and show your experience on your resume.
Absolute Chad
Another set of skills he didn't mention, modulo, and logic. Knowing what mod is and how to use it is extremely useful. For logic, ANDs and ORs are nice, but knowing that (A || B) = !(!A && !B) or that (A && B) = !(!A || !B) (De Morgan's Law) is really useful for simplifying conditions. As for the rest of the maths, definitely does depend on the application and field you're going for. I am making a game as a personal project, and work in the aero space industry, and you need to know trig, differential equations, control system's theory, signals and system theory, as well as linear algebra for some of that work.
This is just Boolean Algebra
Though I've learnt this eventually in Boolean Algebra, De Morgan's Law is extremely intuitive and I ended up using it without ever knowing about it, so atleast you don't need to study De-Morgan's, it'll just come to you naturally.
Carno maps are useful for optimising your if’s
Usually I do my conditions without thinking about them. If you write clean code, I don't think you will ever have a condition that complicated like !(!A && !B) in the first place, so there is nothing to simplify. I think this is useless for 95% of developers.
Usually using guard clauses is superior to having big scary conditional statements.
@@twothreeoneoneseventwoonefour5 in the aerospace world, when having to write code for embedded hardware, you will find very big and scary conditionals that need to take into account very specific sets of conditions, and you can’t just “clean code” them away without first knowing how to simplify them. You can’t just trial and error until you think you’ve got it right. Instead you use techniques such as K-maps, truth tables, and De Morgan’s to know you got it right.
I'm like a 6502 microcontroller running at 0.2Mhz and that guy at 1.25 speed is like the serial bus trying to send me something at 115000 baud rate and all that while my dog is causing a hardware interrupt every 3 seconds
The kinds of maths you need will vary a lot with the kind of programming you're doing. The guy programming a missile to be able to blow a different missile out of the sky and the guy programming some frontend to be nice and comfortable to use are both programmers. Ask the missile guy to make you a nice UI, though, and you might be left wanting.
This is the only correct answer - people act like programming is just one monolithic thing and I don't get it! Programming is just a tool, a means to an end. How much math you need depends on your end goal.
13:45 the median and the average are related in statistics, because a median is a type of averaging. In fact, the ”average” is used as a word to talk with people who have no idea about statistics. There are 3 averages, known as “mean median mode”. Which one you use will depend on the distribution. For example, in a non bell-shaped distribution, you don’t wanna use the mean, because it will be skewed towards the tail. The mode for example, is the most frequent value ( say you have a dist of 1,2,3,4,4,4,5,6,7,100) the mode is 4 because that’s the most frequent. One could say that, since you have a higher chance of encountering a 4, you will encounter a 4 more frequently *on average*
16:37 you say stats are great but then you say you are not gonna run inti linear algebra. Linear algebra is used in statistics and data analysis. What do you mean you wont run into it? You cannot do statistics / data analytics without calculus, linear algebra and integrals.
There is another important skill that all programmers should have and is not necessarily connected to math: understand a requirement and translate that to code. That alone is much more important than most math skills the guy here is proclaiming to be absolutely necessary. It doesn't really matter that you are a little math genious if you are not able to talk with the back-office/business analyst and automatically translate what they are saying into data structures and conditions.
Say it louder for the people in the back
Completely agree
>understand a requirement and translate that to code
This is a narrower version of step 0 of mathematics called formalization, you have a specification of ideas, you want to understand what it means in formal statements. (all codes are formal statements)
People who say "communication is more important than math" often don't understand math or communication. Mathematics is clarified communication.
You assume "the back-office/business analyst" people have a clear idea of what they want, that is rarely the case.
The deeper reason is because people think in natural language, natural languages are inevitably ambiguous. Words are ambiguous, pictures are ambiguous, only logical forms aren't. This is the reason why you can't program computers by writing in English, you need a formal language that comes from some context free grammar.
The point of Mathematics is it guides people to a clearer idea of what concepts they want to capture, and give them precise forms. From there they solve their problems. It's not simply about solving equations (or whatever silly images lay people have about mathematicians).
That’s literally the job tho
An even more important skill would be to know how to get out of your bed in the morning without smashing your face on the floor, since you can't function effectively as a human without that skill, let alone as a programmer, but that's not what the video is about.
Me: already watching the video in 2X speed.
Primeagen: let's increase the speed a bit.
The video: starts sounding like rap god
yeah, i had to though, it was too slow for me
@@ThePrimeTimeagen Yeh I was in when you said they do a lot of foreplay, and we wanna know fast what the video has to share, Time wasting.
makes me wish they had a 4x built in
@@blarghblargh you can use extensions (like ~video speed controller)
@@hawkingradiation3774 my paranoia and lack of time to audit the code kinda limit me on that. But maybe someday. Thanks for the recommendation!
Love how Prime reasonably reacts and calls out the original video. There's definitely no way that knowing factorial is a major factor for a programmer outside of a school project or interview question, and even if it was, it's literally just basic multiplication from 1 to n. I'm like 99.9999% sure you're never going to be solving an issue and realize that you need to loop x factorial or use x factorial in a formula.
I think it's completely depends on the type of project you are doing
If it's just a small project like a landing page, or just a small simple application, you don't need math at all
But in large complex projects, there are so many areas were math could be very useful
In general math is a very good skill to have as a Software Engineer, especially if you know how to leverage your math skills in solving real world problems
I 100% agree with this take. Math is important but I've never used more than basic arithmetic operations or logarithms for time complexity while programming. Maybe if you wanna get into machine learning and AI you should know more math like derivatives, integrals, matrix multiplication and differential equations, but that really only applies to machine learning. I had to take a bunch of statistics classes during my biomedical studies (way to many if you ask me) but it helped me so much when I got into programming. As prime says, understanding distributions or knowing why median is better than average in some cases is so extremely useful to know. Even some more advanced stuff like probability, hypothesis testing, regression and classification are very useful to understand when getting into programming.
It was almost like you were reading my mind. Statistics is by far the most useful math skill I learned for software engineering. Bit manipulation math comes in handy occasionally. Boolean logic comes in handy, but I've found if I'm applying that skill at any non-trivial depth it usually means I need to clean my code instead.
Of all of the things the original video mentioned, I'm usually considering Big O but in a more general "How can I make this more efficient?" context. I used logarithms to solve a problem one time in the last 20 years.
depends on what you do, for the AoC challenges i used a lot of maths. For web dev i never think about it.
1:24 If you want to get to the point of the video fast there's a browser extension "sponsor block". The main feature is to skip sponsored segments, but also it gives you option to "highlight" the most important thing, which is typically the answer to the title of the video
I like watching the sponsored content to support the TH-camr. This is usually at most min(1 minute, 5-10% of the video). It's the fluff content such as introductions or entertaining segues to pad out the video length that take up like 50%+ of the video and is useless that I want to avoid.
@@Blaisem Sponsors either pay youtubers up front, how many people click the link, or how many people use the promo code. You are wasting your time lol. No sponsor pays influencers based on watch time you are out of your mind.
@@Blaisempoor fellow ...you only get this one live you know ...wouldnt waste it watching crap
I know my way around 3D vectors, because I made things in Unity. It's really not complicated if you can see it play out before you. Ultimately I made a script for a camera, which moves it smoothly, ahead, allows soft focus on enemies, can have boundaries, etc. It all required quite some vector calculation.
You gotta love the stream chat. They same people are typing 1, than 69, than 420.
My five answers:
1. Functions
2. Very basic graph theory
3. Type theory
4. Elementary school arithmetic
5. Abstraction
i think you are missing stats in there. gotta have some basic stats knowledge
Why the heck would the average programmer need type theory? While some concepts might be useful, I'd say unless you work on a compiler you most probably won't ever need to bother with that.
@@moonythm I mean enough type theory to recognize that stringly-typed interfaces are not the way. Even dynamic languages, people need to understand very simple type theory. Like a 101 first day of class amount of info.
+1 for graph theory (e.g. to linearize dependency graphs you do a topological sort), but I'd also add boolean logic and some set logic (union, intersection, etc., especially useful when your language has a built-in set type)
I think at the very least, a programmer needs to know enough to know what to google.
"Being good at math" is an ambiguous statement because there's a distinction between undergrad math and big boy math.
What is "big boy math"? And how is it distinct from undergrad math?
@@JoFSa bayes inference, confidence interval, p-value, heteroskedasticity - all that good stuff
@@egor.okhterov Ah yes, good stuff, but surely these are undergrad level?
@@egor.okhterov are you saying that is "big boy math"? that is also undergrad math(first 3 or 2 semesters). Big boy math is stuff like functional analysis, algebraic topology and so on, however, I don't see how "big boy math" could be even remotely useful to a programmer.
I'm a math graduate and I don't think 95% of what I learned is directly relevant to software engineering profession on a daily basis.
You need some basic math, sure, but not to the level most people think. Unless the domain/project you're working on is directly related to math, I don't think it ever comes up.
In the decade that i became one, the only time I really vividly remembered I used some math was for generating an amortization graph on a webpage for a loan company.
To cite a former colleague.
"You are at a bank. You need addition, subtraction and multiplication. If you divide, you are doing something wrong"
Multiplication and division are fundamentally the same thing. And even if you consider them different, in fact, most multiplication in banking is impossible without division. For example, if you want to know, what 50% interest rate would give you over your 100 dollars, you would have to multiply 100 by 1,5. And when you multiply 100 by 1,5, you have to know what multiplying 100 by 0,5 is, because you can't just magically multiply by 1,5, you first multiply by 1 and then multiply by 5 that was divided by 10 (0,5) and then add the results together. 100 * 1,5 = 100 * (1 + (5/10)) = 150.
Also, multiplying by 3/2 is the same as dividing by 2/3. 100 * 1,5 = 100 * 3 / 2 = 100 / 2 * 3 = 150
@@awesomebearaudiobooks What about (100(.5))+100 or especially ((2^-1)(100))+100
No exponentiation? I would have thought that compound interest would eventually come up in a bank.
Your former colleague was not smart
He created extra foreplay to discuss the fact the video has too much foreplay.
In my current job the technical interview was just: implement fizzbuzz with these characteristics and write a unit test for it. I was even told at which multiple of a number it should be fizz or buzz or fizzbuzz.
It was less a test to check my coding skill and more to test my ability to learn and pick up new dev environments and add-ons Ive never used, because i did never use what they are using.
I was done after 3 minutes and the rest of the 45min interview was just the boss showing me simulations and telling me about what the system they develop does :).
I hate interviews where I have to regurgitate some obscure algorithm which I may have learned in some university lecture... If an algorithm/solution for a problem already exists in a library, I use the library and don't bother with implementing it myself, I got better things to do. But if it does not, then I'm happy to implement my own.
Oh and one of the interview questions was: We require that you are able to use google properly and research/lookup docus for things we are using.
I've used combinatorics in programming, for example when looping through all possible combinations in tests (e.g. OS & version), when trying to create a Wordle bot, and so many other things.
This just needs the first lecture of a combinatorics class (or just reading python's itertools docs), but not as niche as other math
If you’re in scientific computing, linear algebra is the single most important piece of mathematics you need to know. Almost every physics problem turns into an eigenvalue problem if you look at it long enough.
Linear algebra, some basic curve fitting and some basic statistics.
@@arvidlindberg3603 Numerical analysis is quite important too
Everything’s an eigenvalue if you’re brave enough
Well a little bit of Calculus would be applicable here too... Vector Calculus to be more precise... Rates of Change, Integration by Parts, limits of a system... etc... As well as Analytical Geometry... You kind of need to be able to the various geometrical shapes, their properties especially when applied to certain materials in certain configurations and even some cases various manifolds which then leads into number and group theory... If you want to go that far down the rabbit hole, then even Quantum Mechanics / Quantum Physics has its own set of applied mathematics to it... which brings you into probabilities and statistics.
@@skilz8098 Basically every mathematical operation you describe become a linear algebra problem when you implement them in a computer. So while you are correct that all those other fields of mathematics are important, if you want to use them in a computational setting you better also know your linear algebra. Besides, computational quantum mechanics is nothing more than applied complex linear algebra.
I think what skill you learn by being extremely good at maths is the ability to visualise problems and solutions mentally which directly translates to implementing complex algorithms in programming.
Also, DSA is one of the most difficult topics according to every programmer. So, a passive ability that helps you be good at that and gives you an edge over the competition is definitely worth acquiring.
Thank you for listening to my ted talk.
yeah, memorizing math is not needed, understanding math is needed. one can solve an equation using its cheat sheet, but, if you were to understand how to arrive to that solution to the equation itself, thats more important in programming. I think similar thought process is in numerical analysis and linear algebra subjects.
The reason why top companies would consider someone who is good (deep understanding of math concepts) in math before others is not because of the math skills, but mainly about the fact that they're good at solving problems and abstract thinking.
I have been in the business for over 20 years. It has only been in the last 10 (or maybe less) that companies have even been asking questions like these... it's a FAANG thing. "Interview Questions" has literally become a subculture in our industry.
I started coding a few years ago. I have a PhD in economics and before coding I was mainly doing applied game theory (research).
I do not consider myself a math chad, however I started coding with a lisp dialect (clojure) and in this case I really enjoyed having some math skills even though I do not think that they are directly useful per se. I take what they guy said in the first minutes, I think it's a matter of being trained to abstraction and abstract stuff
forgot to say that that i pressed the subscribe button :D I always learn something nice while also having fun, thanks
I would love stream where prime tries to relearn quaternions. Would be interesting to see how much he remembers
I don’t like quaternions. It would be great to derive a simple 2D rotation matrix from zero- that is fun :)
I despise trick questions on both interviews and on tests. Those ones that are architected to make you fail. I’m a very black and white get to the point kind of guy. If an interviewer asked my a trick question like that, I would say, “Bye bye, don’t want to work for you anyway.” …..
The irony is that talking about how there was "too much foreplay" in the video increased the level of foreplay in this video.
Thanks for shout out for fellow game developers! Yep, math is our bread and butter.
Boolean logic, bitwise operations and practical use thereof, beyond 1
he really said you should understand "basic stats" right after struggling with basic combinatorics lmaooo
1- Logic
2- Algebra (matrix & vectors)
3- Statistics & Probability
4- Discrete mathematics (number theory, graph theory, combinatorics)
5- Calculus (usual funcions, infinitesimal calculus)
I’ve had to re-learn a lot of math concepts on the fly for different projects and I always soon forget them after. Usually when I learn a “new” concept I’m like “oh I’ve used that, I just didn’t know it had a formal name!”
Timing. Statistics / inferential stuff has helped me greatly. Great point at the end 🙏🏼.
I think that "Oh you need **THIS** Math" is not great way to put it
I personally see Math just as a pure subject that teaches you to start from basic stuffs and build powerful results and notice patterns and shiz
Learn what you think is useful, and if you wanna get into more involved stuff like cryptography, cybernetics, graphic engines, etc, you may need to go through Algebra, Statistics and Information Theory, Grassman/Lie Algebra etc
I think most important skill for a CS student can be also to develop mathematical maturity
In my experience, the bread & butter of programming "math" is figuring out that correct little algebra formulas based on the variables in your FOR loops, i.e. just Algebra 1.
Example: In a view port that's height H and width W, place a columns and b rows of rectangles, each of which is height h and width w, with uniform spacing both horizontally and vertically, except that the four outer-most borders get double spacing. The placement call for each rectangle places it by its center point.
In my experience, that kind of trivial-but-ya-gotta-write-it-down algebra is "the math" of programming, regardless of any more sophisticated math that might be needed for particular situations. Any kind of coding inevitably will include stuff like that.
I find the ability to read advanced math to be far more important than the ability to do advanced math. The computer can do the math, I just need to tell it what I need. Integrals once confused me, their special symbol made any formula using this operation impossible for me to read, now I can just look up a library or function that does it for me.
if i'm watching prime at 1.25x, and prime is watching the video at 1.25x, what speed am i watching the video at
1.56x
That's 1.25 times 1.25.
I dunno, I'm bad at math😂
I realize, as my first year in my compiter science in university (3 years total) was entirely maths courses.
I also realize that me procrastinating the entire year and cramming at the end to barely pass was pretty damaging yo me as I will be wasting time to learn that crap again
Sometimes I like the foreplay, but when they hook you in with a list I don't want foreplay, I want the list!
what I took away from the vid was that the guy looked late 30's early 40's and still sounded like he was 16
1 Basic Infinite Category Theory
2 Basic infinite Ramsey Theory
3 Basic Stochastic Partial Differential Equations with regularity structures
4 Basic Derived Algebraic Geometry
5 Basic Inter-universal Teichmuller Theory
once u get the basics of these 5 topics, then you can start thinking making websites.
That is the absolute minimum to print "hello world"
16:45 Audio Programming is also a shit ton of math. We use Fourier series all the time.
It's so funny with "gotcha" code. Basically that's what code certificates does (my experience is Java). They jumble together a bunch of logic so tightly and badly named that even a junior dev wouldn't end up with it in their first ever PR. Totally against clean code principles and readability. It just a game of "can you find all the details in this complex shit I made to scare you with, that technically represent about half of the logic this language supports at the same time in an unreadable piece of code?" Pedagogy isn't the IT industries strong suit lol.
As someone who failed all subjects at school and maths, i can confirm you really don't need maths to have any form of success. I've been working as a hybrid of Engineering & Design for many startups the past couple years, including during my university years.
All the maths I do is just adding, substracting, multiplication, and division.
Math is useful in the sense that most math is deriving short cuts and formulas for computation, and as a programmer you are frequently implementing computations. The more complicated the computations, the more complicated math you need to understand to implement them efficiently. But there are plenty of useful things you can build that don’t require you to implement complicated computations.
My top 5.
1.) Basic logic and binary representation of numbers. (Bool, De Morgan, Int, float)
2.) Basic linear algebra. (What is linear, what are even/odd functions, sine cos and exponential, really basic what is a derivative and an integral)
3.) Statistics, some combinatorics maybe not even BigO as you can just learn them, but something else. And a view basic distribution and what the most important values of a statistic mean.
4.) Some geometry and maybe look if he finds the connections between geometry and other math.
5.) Some discrete math and what problems number representation can have.
If we talk about a full engineer with a degree and so on i would dig much deeper:
- full on integrals and derivative if relevant for the job multivariable calculus ( anything with ML this is like basic logic a must have)
- statistics would be a view distribution, how to work with real data that does not follow a distribution, hypothesis and test - if ML or more engineer than programmer classification on hypothesis etc.
- more discrete math like galois field.
- Fourier, Lagrange, Hamiltonian if it's something with a real machine (car, robot) or if we get into game dev.
You don't need to do these things a lot at work, like you do at university, but you need to understand what others are doing with them, you might need to implement some of the math, or somebody else needs to implement it into your codebase, and yeah in some disciplines it is your bread and butter and you code only a little bit. (Most control engineering algorithms are one or a handfull lines of code, but these are hard lines to write)
It's all about discrete math, boy!
I wish everyone was on the same page with us! So many calculus fanatics out there…
everthing you learned in mid school should be enough....
depends on what you want to do,you could say pyschics is required,if your programm is based on pyschics...
Im working as sw eng In the MedTec industry, specializing in Geometry modelling/mesh and Image processing. Most advanced algorithms require math. Its super important. Maybe not as Web dev.
To me, math as a programmer is almost more a communication skill than a hard skill. That's why we ignore the details when using big O notation, for example - we just don't need the amount of exactness an actual mathematician will need. But having all of these tools math folks came up with, to describe how our stuff works, makes it so much easier for everyone involved. You can very quickly hone in on why a solution is good or bad, it's just useful vocabulary to have every day.
I'm definitely not good at math but I'm good at programming, and understand stuff like exponents and trigonometry and vectors (and even quaternions to some extent)
i think the most important thing is be able to get the intuition of math concepts. The details you can always automate or research.
Programmers: "I'm bad at math". Also programmers: *Blindly reinvents recursion schemes*
I think you have a mistake in the word Ponzo
as a c# dev, the hardest problems i ran into:
- graph drawing stuff (not fun)
- custom controls and shapes
- silly UI effects, animations, physics
I enjoy the idea that Prime hates 'foreplay' in videos while making videos that are mostly foreplay.
I've taken a bunch of college math, most of it was in the calculus realm (continuous mathematics). I was pretty burnt out on it by the time I started serious statistics and discrete mathematics. It's sad because that is way more useful and should absolutely be prioritized over calculus which are rarely used in the real world in most jobs.
I get that it's not a fresh video but if someone could explain to me the primeagen question about a promise factory? I think I have a decent understanding of how they work(event loop and stuff) but I think I don't even understand what is he asking to build.
So it should be a queue of promises and there also should be a promiseFactory function and if I call promiseFactory(promise) then the promise gets executed? Wouldn't promises start executing the moment I put them into queue? Or am I supposed to implement something like a lazy promise(like in Prisma) where they start executing only after await/.then? Or should it work in a such a manner that when I put a promise into a queue if it's first then it gets executed, if it's second or later then it should start executing after the first one is done? But then what is promiseFactory is supposed to do here?
I think I missed the question entirely and I would greatly appreciate if someone could explain it to me better.
Statistics is the most userful thing to know, but it has quite a lot of prerequisites. To make a good use of stats you need to know some calculus, combinatorics, probability and algebra. To put your data together you'll probably need some LA. Also statistics itself is HUGE. So many different stuff in there, and everything might be userful. But it's totally worth it
I didn't get too far into the video, but I'm still going to put my take here first:
You don't need to be good at math for programming. You don't need advanced maths at all. You do need good logic and the ability to use a lot of basic maths very often, but that's about as far as it goes most of the time.
Out of 100 000 lines of code written, you could have 1 or 2 advanced maths concepts used, and whether or not you googled it doesn't matter much.
EDIT after watching:
pretty much what I said, you'll pretty much never see a factorial problem, everything else was really basic. I do agree statistics are something you must know. I overlooked it. It does count as advanced in that it's rarely explored much in lower education, but it's not that complicated.
I'd add, that even for gamedev, maths is all about quantity and not depth. There are really only a select few specialties as a gamedev that require high level algebra. You do need geometry and trigonometry but it's not that hard honestly, you just do a shitton of easy stuff, that's the brain-busting part.
I don't get the async request queue, can somebody give me an example/briefly explain how it works?
During my career I've never really needed any significant math skills. I am highly interested in math and I always check all kind of algorithms and math related videos (of which 50% goes over my head most of the time). I'd wager my math skills are pretty average or slightly above when compared to a "layman", but compared to most coders probably lower or the same.. which in my experience isn't that high. Knowing how arrays, dimensional matrixes, pathfinding and other concepts work in the very superficial level is enough, as proper mathematicians have figured out the algorithms for us ages ago. There is no need for us to know them, unless we personally want to. We can just take a proper library or algorithm and use/implement it, test that it outputs what is expected and concentrate on something more relevant to your actual coding. I've programmed since 1993, never have I been in a situation where my math skills prevented me to create a solution or code that was needed. Good for you if you are skilled in math, but using it to filter out "bad coders" is absolutely ridiculous.
I am a self taught developer but I was graduated in Finance and accounting. In Finance we learned a lot of Statistics and it helped me in learning DSA
I'm not gonna lie to you, I want things to be fast... blazingly fast.
It really depends.
- Web dev requires almost 0 math
- Statistics requires statistical math like means
- Algorhitms require math patterns for some optimization "tricks"
Dude, I'm already at 1.75 from you. You going 1.25 with this freaking fast talking guy even faster breaks my brain :D
If you're doing business data, set theory and combinatorics, statistics. If you're game programming, harmonics, calculus
The irony that you learned a lot of important stat math ‘on the job’ while focusing on interview questions the first half of the video
Math n programming depends on what ur programming, need beyond college algebra for science n game programming. What is it calc n diff equations for game engine programming, i imagine for web n something like Netflix basic math is good enough any rare special you can look up???
If generalized to all fields of programming, I'd agree there really isn't much math necessary other than some of the things this video is claiming. I think outside of that, it really depends on the problem space you are working on. Statistics are great to know in many cases but when you are in mechatronics you'll need integrals, derivatives, linear algebra and knowledge on feedback control etc. Games and CGI require different set of skills. Most of my carrier as programmer required very little math making 2D GPU drivers (most of it were pluming memory addresses from graphic library to the GPU registers). So I would advise to learn about the problem space you are working on and learn the necessary math skills as necessary.
Me: *watches primeagen videos at 1.25 to 1.5 speed*
ThePrimeagen: *speeds up the video he's watching*
HOLD ON TO YOUR SEATS BOYS!!!
Depends on what you're doing. Cryptography? Better be solid. Distributed systems? Please tell me you've used a model checker. Any kind of performance-oriented work? Stats and at least basic calculus. Being able to think "mathematically" is probably the most universal skill everyone could benefit from (and most people do it even if they wouldn't call it that).
Project Euler is a good resource. It’s kind of like leetcode but way cooler. I think people look at math all wrong. For a ton of programming, you don’t have to be a genius math wizard. However, math problems are a good way to strengthen your problem solving skills. Treat them like puzzles and gamify the process.
@ThePrimeTimeagen, I liked your interview prep question. It would be helpful if you could break down how you would answer such a question step by step.
Game dev here - yeah, it's a lot of math. Linear algebra, trig, geometry, algebra and some calculus.
I’m really bad at math, but I’m a developer..I just learned the technology and I understand many things
Very interesting video, especially your explanations. You should create course "Math for programmers".
The thing is that the current definition of being a good programmer doesn't fully align with what we've been taught being good at math is. Both are about recognizing patterns, giving problems a structure and solving them in a logical way. However there are more aspects to practical programming and school math that make them not have that much of an overlap.
I like stats and probability in ML, probably reignited my passion for math again
Fastest videos I've ever seen, royal skies blender tutorials.
The first one is being able to count on your fingers, as demonstrated by the thumbnail (Prime's got this one down).
I might have failed every math exam at university so far, but I understood most of the things in the video, so I feel pretty good about it !
i notice in Singapore in my work there.. a lot of interviews were gotcha interviews rather than the comprehensiveness and trainability of the programmer especially how well they could understand quickly a concept they dont understand at first. Gotcha questions are simply solve by practicing those trick questions but what you get are programmers that are just stupid technical evangelist.
Unless you are making engines, cutting edge ai or similar, basic algebra is more than enough.
Here's some of the lesser talked about mathematics that could be beneficial and even applicable to know, but this can vary on one's field.
Game Theory
Lambda Calculus
Language Theory
Graph Theory
These are the kinds of math subjects that may be a bit niche yet learning their basics could be fundamental in helping one to develop better problem solving skills even if one never uses their applied properties directly. They might be worth looking into just to give you another tool in your tool box.
"Let's skip this because it is not very exciting" NO... The subject my brazilian school skipped over!
There really are different levels of programing dependent on what you wanna do, and you're going to need more or less math based off that... everything I wanna do requires me to learn the most complex mathematics, as it involves recreating complex real-life simulations. On the other hand, if you're just doing basic web design stuff, you can probably get away with basic algebra and just copy and pasting algorithms you don't understand.
Engineers are really good at making up maths, that get people to invest capital into projects, that everyone else has to figure out how to make work in real life.
If I had a dollar for every time some engineer handed a CNC tech a blueprint that was physically impossible, I'd be a very rich man.
@9:40 What he said was actually completely wrong. K is itself a function of N. It doesn't run N*K times, it runs sum from n=1 to n=N of (K_n) times. This could be O(N*K) or it could be any number of other values.
I don't think you need certain hard math skills, but the soft math skills are useful. The ability to manipulate equations in your head, left side right side stuff, observing orders of operation, understanding a running count of numbers so you can design an iteration over a range to achieve some output, just the ability for your brain to store and process logical equations and numbers is useful when you come to the logical architecture of your code.
So you don't need to be good in math, but you need to have a head for the logic underpinning math, if you want to be a good programmer. I mean you could be an average one just memorizing some rote tasks and repeating them in different contexts, but to standout the ability to think logically should matter somewhere. Arguably math trains this skillset, so in a lot of cases, being good in math could indicate you have a head for logical abstractions. But I could understand someone disputing this assumption, too.
IMO basic stats used on financial data is a great way to learn like stock market indicators or something
7:05 That second loop could turn out to be infinite if _N_ is big enough due to wrap-around.
"9 digit numbers using digits one to 9 without repetition"
Who on Earth just has 9 factorial stored in an array in their head?