I'm a self-taught Software Engineer who struggled with basic Math. It's my goal now to go back and learn Mathematics on a deeper level. I'm reading the Book "A Mind for Numbers" by Barbara Oakley. In one of the chapters she goes into detail about how using your minds visual senses can help with grasping abstract mathematical concepts on a deeper level. Your experimentation with Math and Design, to me, is a perfect example of what Barbara was talking about.
If you're still on your quest (as I am), may I suggest a few books:
- "A Course of Higher Mathematics", V. I. Smirnov.
- "Differential and Integral Calculus", N. Piskunov.
- "Problems in Mathematical Analysis", B. Demidovich.
These are amazing, great, books. Demidovich's book is a collection of more than 3000 exercises. Smirnov's book is a course that takes you from what a value means, to advanced topics (5 volumes, in 7 books). Piskunov's book is in-between (course and exercises).
These are the books we've used and went to during the first two years of Engineering.
Chris, are you familiar with Soviet books? If not: I urge you to consider taking a look at these (library, maybe) to get a taste.
Side note: the first few pages of Landau & Lifschitz (vol I) made me cry and feel weak in the knees so much that I had to sit down. I'm being literal in my description: tears in my eyes, and unable to stand.
I don't know what these guys did, but they certainly did something right.
mirtitles.org offers a collection of such books. You could also look on archive.org. "MIR Publishers" is the name you're looking for.
These may be (and in fact they are) excellent books, but they do not necessarily answer the needs of a designer (rather, an engineer), nor they may be suitable for people why are just learning elementary geometry and trigonometry.
Also, there are topics in mathematics that may be more relevant to a software engineer or a designer, such as algebra (in general, and linear algebra in particular).
In my experience yes, linear algebra, graph theory, a little topology, category theory are pretty good. If you do raymarching rendering of scalar distance fields, a new form of rendering I'm currently interested in, there are forms of math different from traditional forward rendering that gives you superpowers: http://iquilezles.org/www/articles/distfunctions/distfunctio...
I'm reading that too. Really enjoying it. It's kind of a bad title for what the book is really about, which is general learning and productivity strategies.
Designer here. I took programming in collage as part of my education and remember for the first time in my life, Math made sense. From then on, I was at the top of every math class I took. I started to see that math was logic and also that it had real application in my life. I wish I had that realization earlier in life but like you (and the author) I want to go back and take them again with that renewed perspective and purpose.
Not to diminish your accomplishments, and I applaud your efforts to educate yourself. I was just thinking how odd it would sound if someone were to say that they were a self taught civil engineer or a self taught chemical engineer. This is just because I'm used to the word "engineer" being regulated, as it is in the countries I have lived in.
There have been and are plenty of “self-taught” civil engineers. We can start with, say, Archimedes, Vitruvius, Simon Stevin, Leonardo da Vinci, or Bucky Fuller.
There are (for good reasons) particular modern jobs which require licensure, but plenty of production engineering work of all types, even today, is done by folks who don’t have a history of school study or certifications in the field.
It’s not like college lecture halls are the uniquely best learning environment in the world.
Some countries, such as Canada, regulate the usage of the term as jordigh mentioned. If you have not passed the rigors of educational requirements and licensure you cannot call yourself that. It is similar to claiming to be an MD in the US.
A quick search turned up multiple job postings with Engineering titles (Software, Test, QA) in Canada. These companies list requirements being a CS/Engineering degree or equivalent experience. Apparently, these companies value production over title semantics.
I'm interested in knowing what you consider the meaning of Engineer to be.
I'm not Canadian, upon looking up the actual rules it is provincial laws. The most well know restriction is in Ontaria and is restricted to the title of "professional engineer". They still frown on it and actually fought Microsoft over their certification titles.
Top result when searching was Quora [1].
My personal view, is it doesn't matter much. I often choose to refer to myself as a Developer, just because of the confusing discussions Canadian Engineers have presented in the past.
Ifind software titles to be unnecessarily inflated, both in seniority and position. The title of Developer or Programmer would be fine in many cases, unless your looking for Architectural roles (can also have similar titular restricitions). Also, many roles could easily drop Senior, often it is just used for mid-level roles requiring some degree of experience over junior roles.
The whole of title structure in the industry is very ego-driven rather than role driven. I often break my titles down to specify my focus area, e.g. Lead API Developer, which includes everything from speccing to infrastructure and tooling (which some generally use as claims of engineering).
These companies should be careful. Are they Canadian companies? Microsoft was famously fined in Canada for advertising an engineering certification when it legally was not an engineering certification:
It's not about "value production over semantics", but about legally designated professions.
Regulating engineering is more than just about the knowledge or value production associated, but it comes with an associated order you belong to and a code of ethics. There's the famous iron ring ceremony for Canadian engineers that is supposed to remind an engineer of the duties of their profession.
If people in Silicon Valley calling themselves "software engineers" actually behaved according to the engineers' code of ethics instead of running towards the self-interested libertarian utopia at all costs, perhaps our current technological landscape wouldn't have enacted all of the abuses it currently does upon the users.
In the U.S., becoming a licensed Professional Engineer in the field of software is fairly rare (I think it may only be a requirement in Texas). "Software Engineer" is a term without the same weight as "Professional Software Engineer".
Having looked into it, I have a 4-year degree from an ABET-accredited institution. There's an exam I'd have to take, 4 years of "relevant experience", another exam, and to be signed off by people who are already licensed PEs. That last one might be the hardest to fulfill. As far as I know, none of the "Software Engineers" who I know are "Licensed Professional Software Engineers".
From another perspective (picking an occupation that is widely licensed), I could pass out business cards that say "Doctor Khedoros", and I think that I'd be fine (legally) as long as I didn't claim to be "Doctor Khedoros, MD", and didn't fraudulently present myself as a medical doctor.
If you can reliably pass an engineering exam then I don't really care how you acquired that knowledge. I'm very much in favor of standards but not credentialism designed to limit the paths to knowledge.
It is an accomplishment. I, too, am self-taught. It means being self-motivated, even more committed and thorough. I think it sounds awesome and so do the recruiters that I hear from.
Maker of Framer (http://framer.com) here. Cool to see this popping up on HN. We are a code based interactive design tool, and see many designers use/learn code to experiment with math, real data and physics.
Kudos to Koen and to the whole Framer Team. They are a passionate and outstandingly competent and available crew, which is constantly giving back to the design/coding/makers community. ps> I use your open source tool cactus on a daily basis: https://github.com/eudicots/Cactus!
I love Framer and Cactus. Framer really made me fall for CoffeeScript. Cactus inspired me to build https://github.com/themejuice/tj for WP dev and the corresponding Mac app.
I used to think that being a software engineer meant you were intelligent, and worked hard to earn the title, but after working in the industry for 6 years, I decided that, large-scale software project management problems aside, industrial computing just isn't that hard relative to math and the sciences.
Once you know a dozen languages and understand the running themes of computing, it's all sort of old-hat. Ironically, as the field has been flooded with young, inexperienced devs to satisfy market demand, the titles of "software developer" or "nerd" have become social badges to indicate one's intelligence and cutting-edge-ness. We use 50-year-old operating systems and call ourselves innovators.
Maybe, like Groucho Marx, I just don't want to belong to any club that would accept me as a member, but I think that if you're looking to level-up intellectually, studying math and science, but especially math, is the way to do it. I was never good at math, but I've spent the past year teaching myself calculus and the struggle has been well worth the expansion in my world-view.
I think "industrial computing just isn't that hard relative to math and the sciences" is only true if you are working on a limited set of applications.
In my job as a software engineer, I've had to: Invent new algorithms and prove their correctness. Formalize datatypes as CRDTs. Design (and model check) a specialized distributed consensus algorithm. Read and implement _many_ algorithms from academic papers, including motion vector estimation. And build complex statistical models.
All of the above require either formal use or the actual practice of mathematics. Sometimes very advanced mathematics including multivariate calculus, statistics, graph theory, number theory, category theory, and so on.
I guess what I'm saying is, software engineering can be as easily as challenging as math and science. Because at its "peak", it is math and science. Not all mathematicians and scientist work on hard problems. Not all software engineers do either. But don't be to quick to judge the field based on a limited sample size.
Can you elaborate on what you worked on? Was it part of academics or industry? I guess it was embedded systems, as these domain seems pretty open to formalization (as they are pretty low-level), as they often demand high reliability.
Most of my formal work was for distributed systems. Some of it was for video transcode and packaging work. All of it was for industry.
For example, I implemented a distributed adaptive bitrate video packager whose core synchronization algorithm I needed to both develop, and then for my own comfort, formally prove. I did a proof of correctness via exhaustion and a proof that it achieved consensus in a minimal number of steps by induction.
This is pretty typical for any "distributed" algorithm because intuiting correctness for concurrent and distributed stuff is ... really hard. That's why people prove garbage collection algorithms.
When designing large distributed systems a thorough understanding of statistics is required to understand workloads. How many transactions per second should this micro service support? Better pull out that Poisson distribution. What cache size do I need? Better grab a zipf distribution, some sample data, and R. Want to understand the interplay of several factors on workload? I hope you are comfortable with multivariable calculus.
I don't face problems like these daily, but when I do I'm fucking glad for every inch of math I know. Which to be honest is still probably not enough.
I'm mildly surprised you didn't know calculus before becoming a software engineer. I suddenly realized that I falsely assumed calculus would be common knowledge to all programmers and now I'm wondering what else would not be that I've been assuming.
I taught myself programming after graduating from art school. I never took calculus or trigonometry even in high school, so my math skills are as basic as you can get as an adult.
Still, I'm currently trying to teach myself math because it seems like it will help me improve as a developer. It's very hard, though, to learn this stuff when you're 32.
It could be age related cognitive decline, real or imagined, but it could also be prioritizing any of the following over learning largely irrelevant mathematics: children and family, exercise, bills/finances/health care, social obligations, politics.
Plus, it's much more likely for a 22 year old to be able to go to college / grad school and be required to learn math.
I can assume 8/10 web developers aren't proficient in calculus, especially the ones who switched careers from non-STEM fields or those who graduated from coding bootcamps.
Depends on what you're doing. My current work project is an embedded device that collects various sensor data. It does a lot of math. The data needs to be filtered, unit converted, averaged, and integrated all in real-time. I don't have the luxury of a fast processor and have to employ efficient numeric algorithms that can save clock cycles. I use regression analysis to approximate curves from datasheets and statistical methods to check my results.
Some people actually do need to use math for their professional work. Is this capital-H hard? No. But you do need an education in the fundamentals to know what you're doing.
You can combine software engineering and math. Try formal methods. Beautiful abstract algebra, like Galois connections, and super-useful. An appetizer:
Geometry and art are definitely related, and you need to know the equations to generate the drawings. It's amazing how much possibilities are open once you know some basic high school math (see my book https://gum.co/noBSmath).
This article is also a nice example of just-in-time learning: learning new material is so much more fun when you have a concrete goal in mind, rather than relying on a "you'll use this later"-promise.
Love your book, it was a very concise, to the point refresher of mathematics for me.
Also, the progression of topics felt very comfortable to me, almost like my school experience back in the Soviet days (and I mean it in a very positive way).
What I'd love and would gladly pay for is an additional exercise book with answers to accompany your book, just like in the spirit of the old textbooks.
I hear you. What would you call that, решебник/сборник? I'm planning to make an exercise generator framework with print(.tex) and web(.html) backends. The early khan-academy exercise framework was pretty awesome since it could generate random problem instances.
BTW, which edition of the book do you have? I've been adding exercises and problem sets progressively over the years. Currently there are 55 exercises (mostly Chapter 1) and 284 problems:
I'd just call it Exercise Book (Сборник упражнений с ответами) - nothing fancy and to the point.
I have a dead tree version of the book, purchased from Canadian Amazon. Not sure which printing (if you had multiple), it's at home now and I'm in the office.
Thank you for the offer - will email you in a moment.
Hi all', I am graduated in mathematics. I studied a lot and also teached sometimes, but I am working as a programmer, I am not a teached, I teached to gain some money while I was studying.
I love math and I Can explain It to everyoneishappy, I have this superpotere I Can male people under stand also deeply advanced mathematics.
I noticed that a lot of people "hates" math but they like It, they have a bad Memory about Who teached them when they were young, so they say "i hate math" but they actually hate their first teacher.
As soon as somebody explain them math with Joy and without humiliation if they don't know, they really like It.
The point is that even the highest mathematician does not know, cause in math there Will Always bè misteriose.
It took me a while to get over "math" meaning "understanding geometry", but I appreciate the main theme of the article anyway. Some of my art friends could use a little bit of "math" as well.
I'm an artist and professor of digital art so I know right where this writer is coming from. You can't underestimate the importance of Processing in forging this pathway for artists and designers to connect with computer science and mathematics. By sandboxing full featured languages into development environments geared for immediate visual output you open up the possibilities of computation to a whole new class of people.
When teaching I can appeal to their experiences in High School math, but now ideas that were very abstract and remote have an immediate, visual presence. It really works. Trig is usually the first big break through (because who wants the animations to just move in a straight line?) but most eventually get to simple linear algebra as they merge and combine elements from multiple arrays of pixel data. It's empowering.
In my teaching I've moved from Processing (which is Java-based) to p5js and other tools (like framer) based on html5 and open web standards. I've recently introduced aframe. We'll see what new math skills emerge in art students from working with real-time 3d engines.
That's really cool. Your comment reminded me a bit of how kids can go from disinterest to total fixation if something involves minecraft. (and I mean that in the best way possible).
Reminds me of making my TI-83 draw a bunch of patterns in high school with TI-BASIC. It had functions to lines, circles, and some others. Some pretty interesting shapes emerged from just trying out various combinations of LINE TAN(X),SIN(X),COS(X),ABS(X) and such, with X being a variable that I'd make the main loop increment between 0 and 359, or sometimes multiple variables, or it being incremented differently than linearly. I wish I'd have cataloged them.
I played around with my graphing calculator in the same way, just trying out different equations to see what they looked like, and even made some simple games out of them. I kind of miss that, because I had a much better idea of what different functions looked like on a graph than I do now, when I could actually use them for animations in games (I mostly just use sines and cosines for oscillating animations and log functions for easing).
Being mad at people like this is what makes them shy away from math. This works in any discipline. Let's be helpful and loving, I promise it feels nice, even though high horses are nice too.
"Mindstorms" by Seymour Papert is a good book regarding such issues.
I'm still in university and I can say firsthand that the most difficult thing about being incorrect in regard to a math problem isn't so much about the problem itself—you can always fix it—it's in the shame associated with your peers seeing you do it incorrectly. It's terrible when a student goes up to do a practice problem from a class exercise and the rest of the students make an audible noise if they're off by the end of it. I had a professor who refused to refer to anyone by their name when they worked out a problem on the board, only the pronoun "they", because he felt like it decoupled the personal feelings the volunteer and the class had of the student and the work itself. The point, he said, was analyzing the work and why it was wrong or right, but not the student.
In the UK, many people will happily say, "I can't do maths" or, "I'm no good with numbers". They're almost proud of it.
I've occasionally had shopkeepers be surprised when I've handed over coins so I get a round £5 back in change, yet it's expected that seven year old children can do this. What goes wrong?
Consider a clothes shop, with a sign: "20% off all marked prices!". I wonder how many people could say what the £50 jacket costs, or the £30 jeans.
You might be interested to hear another point of view. I am one of the people who tells others I'm bad at math, but it is because I struggle with mental arithmetic due to working memory deficits. For example, I struggle to keep two two-digit numbers in my head while I compute their sum. It's embarrassing, so the natural reaction is to try to make it funny.
This bigger issue is that this article has nothing to do with math. It is offensive to see people make such large claims about some understanding. OP has conquered nothing at all, just come to an understanding of trigonometry.
It is offensive to people who have spent a large amount of their time studying the field. This would be like me saying "I conquered design" after learning about CSS floats.
Nobody who has truly studied mathematics would ever say they "conquered" it. The more you study math, you realize truly how little you know.
Using such words as "conquering X" can happen in euphoric moments where you make small progress. It can be taken as how you take things not literally in poetry.
I would guess that if you were to ask the author, they wouldn't trivialize what one does in math grad school. The blogpost is probs best read as a personal story than a statement about math as a "discipline" at large.
I'm sorry that you were offended, math as a discipline is definitely misunderstood and the people working in it maybe moreso. They make contributions that allow truly cognition-breaking changes in other fields, and of course looked at independently the pure elegance and fun of it is beautiful...
If you have seen this beauty, why would you be mad at someone that dares to come check out your space? They are in awe at the art in your hallway (trigonometry) and exclaim "your home is beautiful." (discipline) Sure they haven't seen your pool and kitchen and everything else, but their compliment can still be met with gratitude.
In the space of eventually consistent communication among asynchronously thought-processing agents (aka. "Humans"), allowing for error induces less anger in general.
As I recall, most math majors don't even appreciate math in the deep, comprehensive way until the second half of undergrad. It wasn't 'til Complex Analysis my sophomore year that I really began to understand that I was studying something so awe-inspiring - before then it was all "yay derivatives yay matrices".
I was a liberal arts major who lived with a math major. I remember him telling me (while he was battling through Complex Analysis) that he never realized that his math degree would really begin when he stopped seeing numbers (or something to that effect).
I'd say the fifth semester of calculus is the usual time for an "oh wow" moment. It's one of the reasons why not a lot of people experience it. Four semesters of calculus is a heavy price to pay.
For me it was when I took proof-based Linear Algebra and probability. I went from having a decent mathematical intuition but struggling in practice to actually getting how to do it and succeeding with it.
Eh, it's not Fields medal material, but we're getting to the point we should be glad people don't go and embrace Sharia law.
I didn't have a easy time (or a hard time; I had an okay, average time) with maths in high school and went for a degree in the humanities. Soon I was watching roommates study calculus, then studying calculus with them, and then applying for a new major. I went directly to the workforce after graduating, but always kept studying and now I'm doing my masters (which is kind of a-third-to-a-half of the way towards a PhD) in mathematics.
So, uh, I agree that the calculus is super important but yeah, people are turned off maths for many different reasons. Let be.