A story of a designer learning math
blog.framer.com
blog.framer.com
- "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.
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).
As great as practice is wrt math, that there are over 3k is not attractive to me. I'd sooner a single difficult climb, than many small steps.
Yikes, nearly $100
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.
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 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.
I'm interested in knowing what you consider the meaning of Engineer to be.
http://www.canadianconsultingengineer.com/engineering/quebec...
The Professional Engineers of Ontario have this to say about "software engineer":
http://www.peo.on.ca/index.php/ci_id/2266/la_id/1.htm
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.
https://en.wikipedia.org/wiki/Iron_Ring
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.
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).
[1] : https://www.quora.com/Only-Professional-Engineers-can-be-cal...
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.
I ask this because it seems that Framer was previously called FramerJS but the code looks like Python.
PS. I recently rewrote Cactus as a Gulp script. It's called Moonbase: https://github.com/motif/moonbase
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.
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.
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.
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.
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.
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.
I couldn’t agree more.
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.
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.
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:
~/P/M/M/problems> grep "\\\begin{exercise}" *tex | wc
55 112 2768
~/P/M/M/problems> grep "\\\begin{problem}" *tex | wc
284 579 12065
In the meantime, you can email me and I can send you the latest version of the book or a standalone document with just the exercises and problem sets.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.
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.
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.
(edit=fixed typos)