Why Math is Important for Software Engineering (Even if You Never Use it Again)

Math is important.  No, really!  I’m not just talking about that 2+2=4 stuff.  I’m talking about the big stuff.  The Cal III type stuff.  The problems that keep you up all night long.  The problems where the professor gives you 5 problems on Monday to do in a week and you say “Oh, shoot, 5 problems?  That’s it?  Pfft.  I’ll start next Sunday night at 9PM because Halo 3 just came out!”  Then you pull an

math in software

all nighter on Sunday and barely get four of the problems done.  Yea, I may or may not know about that first hand.  But really, I ask, why are you learning all this?  Are you really going to need all these crazy formulas for programming and software development?  Can’t just pull them out of a math book later?  It’s just a formula, right?  To be honest, there’s probably a 2% chance you will ever need this kind of math as a software developer.  Unless you go into graphics programming or something like that, you’ll likely never need it, and even then you’ll have references in the real world.  So why do I still think (really) hard math as absolutely essential to being a great developer?  Allow me to explain…

From a broad and practical point of view, math IS software development.  Math problems are solved exactly like you have to solve software problems in the real world, and there are direct parallels between math and programming.  Let’s go over them:

  • The Analysis
    • Ok, so maybe requirements gathering and figuring out a problem aren’t EXACTLY the same, but they’re pretty close.  Word problems (as much as you hate them) are almost identical to what you do in everyday life.  In software development, you listen to someone, or get an idea (say, I need to automatically figure out music listening trends and then adjust the playlist for the user accordingly).  You then need to be able to break down that paragraph into smaller pieces that you can tackle and then be able to ask insightful questions, and ability that comes with practice.  Trends?  What kind of trends?  What is important?  Do I need to start with writing a music player to gather data?  Do I need to start working on the trend analyzer and just mock up?  What is unimportant or irrelevant?  Analyze.
  • The Formulas
    • Formulas are the sword rack of Math, just like technology is the sword rack of software development.  Ninjas need weapons to get the job done, but they don’t always use a katana.  Sometimes they use daggers, or nunchuks, or a bo-staff…you get the idea.   Math is the same way.  Once you figure out what you need to figure out, you go to your handy bag of formulas.  Do you use the quadratic equation?  y=mx+b?  One of those things with the sqiggly S?  In software, technology is similar to formulas.  You could use .NET, Sharepoint, ASP.NET.  You could use Java, JBOSS, and JSP.  Different combination are better suited for different problems, and knowing the differences, again, only comes with practice.  Math helps you understand that solving problems are about standing on the shoulders of giants and using the best tools for the job, even if two different tools will technically “work”.
  • The Journey
    • The thing that we all underestimate about math problems is how long they will take.  We procrastinate.  We don’t start until the last minute and then stay up all night trying to finish.  Ok, so maybe that’s been just me.  Math, though, teaches you discipline and persistence.
  • The Solution
    • Coming to a solution in math gives you that same great feeling as shipping a product in software development.  I would suspect this is the same as building a house, or doing some other long, drawn-out task.  You worked hard and finally you’ve finished with something you can be proud of.  All that work payed off.  If you came to an answer that is the correct one, or that the users accept with cheers and pizza parties and love letters to the developers, then you get a great feeling inside.  If you come out with an incorrect answer, or, something that the users hate or can’t use well because they’re really confused trying to even log in, then you have gained something even more valuable.  Experience.  From now on, you will never forget what you did wrong, because it sucked lots of time away from you.  From now on, you will know exactly what to look for and be 5 times faster than the other guy when you come to a similar problem.  Why?  Because you put the time in, did the hard work, and it paid off.

Have there been subjects that you thought would be irrelevant, but you ended up using somehow, either directly or indirectly?