6 ms·
One of the main differences I see on the road to learning to code has nothing to do with the tools; it’s the thought process. A major hurdle is trying to get t
by orev 5y ago
One of the main differences I see on the road to learning to code has nothing to do with the tools; it’s the thought process.
A major hurdle is trying to get the business people to coherently express what they want. They seem to have a general sense of how something should go, but can’t actually put it down on paper. Or when they do, it looks different than what they imagined (simply because the required logic doesn’t match the cloudy vision they have in their mind), and then scrap it because it doesn’t “feel” right. They fail to think about the corner cases because “that doesn’t happen very often”, ignoring the fact that a program needs to work in all cases, no matter how often they happen. Or they don’t get the concept that processing 10 or 10,000 records makes no difference (i.e. it’s not “more work”) because they don’t really follow the idea that they’re setting the rules for the computer to do the work, not doing it themselves.
Understanding math is so important because it’s often the first formal step in learning how to think this way. I think it’s a pretty good bet that business people who do well in math would probably do well in some level of programming, but everyone else probably just can’t, or at least are unwilling to go through the mental training required to think this way.
- burlesona 5y agoI don’t think that having a knack for math necessarily matters for making a good programmer. I’ve known many good engineers who were drawn to programming because math was hard for them and they wanted to learn how to get the computer to do it for them. Ironically, coming to understand programming can be a way to understand math better. One of the best programmers I know is a philosophy major, who thinks of code like poetry, with consistent readable concision as the goal. There are many paths. What programming does require is a vivid imagination, to form a mental picture of the machine you are building and what is happening as information flows through it and is transformed. Even more than that, it helps to be a systems-thinker, and to be able to zoom out and ask “what are we really trying to accomplish here.” Most of the time the elegant software solutions come not from writing brilliant code, but from reframing the problem so that simple code can solve it.
- gryn 5y agomath is not just about calculations and numbers that most people interact with during their education and seems to dislike or find hard. the part that would be useful in programming is a little bit of logical reasoning, the symbolic reasoning and modeling of problems through abstraction. coincidentally these are also the part of math that get thought and used in philosophy so I'm guessing that your colleague is somewhat familiar with them since their most probably are required core courses in getting a philosophy degree.
- analog31 5y agoI was exposed to this aspect of math through proofs, which are sadly given short shrift in K-12 math today. The schools in my hometown used a math curriculum that actually introduced basic set theory in first grade, and eased us into proofs. High school geometry was all about proofs. First of all, it was a good education. Second, proofs were what made math come alive for me. I have a lot of opinions about K-12 math education. ;-)
- orev 5y ago> it helps to be a systems-thinker, and to be able to zoom out and ask “what are we really trying to accomplish here.” Most of the time the elegant software solutions come not from writing brilliant code, but from reframing the problem so that simple code can solve it. This is exactly what math as a subject in school teaches you. Other subjects can too, but math seems to uniquely challenge people to really bend their mind around concepts, as opposed to many other subjects which often turn into memorization tasks. I’m talking about stuff like algebra, statistics, etc., not basic adding and multiplication. What is reducing a fraction or using the commutative property to break a problem into smaller chunks, if not “reframing the problem”?
- visarga 5y agoBoth are exact disciplines that rely on making tools and abstractions as a away to solve problems, knowing how to combine your skills to form new skills, because you are often in a novel situation that doesn't match experience.
- gryn 5y agoI agree with all what you said, except the part about 10 records vs 10 000, that I think need better clarification. depending on the amount of computation needed/task executed the number of record to update can make things very different. updating 1 million or 10 000 records that need very heavy computation and communication to other systems under some duration or latency constraints is very different from updating 10 of them. you may need to optimize and/or rewrite your whole systems to handle such things.
- orev 5y agoI was hesitant to include that example because I was concerned it would be nitpicked in this way. The vast majority of business records are not being sent through machine learning algorithms or being used to factor prime numbers, they’re simply lists of basic things like names, addresses, phone numbers, etc. In all of those cases, the difference between 10s or 1000s is trivial. These are the types of things people use Excel for daily. In cases where the data processing is actually significant, then sure, bring in your data scientist.
- gryn 5y agoyes I'm aware it's nitpicking, which is why I said I agree and that it just need more clarification. but you don't need machine learning to hit these cases just a mismatch between what want to do and how/where it's stored. examples: - a noSQL db that cant directly do what you want and now you need to download lots of document to string them together before updating that field. - a SQL data schema not matching your tasks where need lots and lots of joins and aggregations. - data scattered across multiple web APIs that may have rate limits, now you may have to use a batch API if it exists and find a new route. - data scraped from multiple places, going from 10 to 10 000s now will get you banned from most website, now you need to rewrite your code to circumvent that. none of these examples involve data science, heavy processing algorithms, just moving data and selecting from it. and they seems like the kind of things business/people with no coding experience might want to do. (I want to keep track of prices from competitor, department X,Y, and Z have these info in their databases and gave us read-only access since they don't have time to do things for us, etc ...)
- analog31 5y agoMy mom taught programming in the 80s, and the first thing she told students was: "Computers are stupid. They only do exactly what you tell them to do." People have to get over the misconception that computers can think. Maybe it was easier in the days of DOS, because merely using a computer required the same precision.
- Ericson2314 5y agoSo much of the ML hype is business people wanting something that everyone can operate equally poorly. The fact that so much of ML is inscrutable alchemy and a guessing game is a feature not bug.
- kthejoker2 5y agoBut ML (from a pure programming perspective) is just a lot of mathematical functions being strung together, usually as part of high level libraries. If you truly have good data, approximating a signal from noise is trivial. It's way less complicated code than, say, your bank's web app and payments system.
- amalcon 5y agoSo is everything else in software. Literally everything a computer can do is a form of math; it only seems like you're ever doing something not-math because we've made some very good abstractions over the math.
- bitwize 5y agoComputers do appear to think more and more these days, what with the tracking and targeted ads and so forth. To which your mom might say: Computers still aren't thinking; someone else -- someone at Google or Apple or Microsoft -- told them to do that. Maybe that would help bring the privacy implications into clearer focus.
- deleted 5y ago[deleted]
- 5y ago
- garren 5y agoThat's just it; the article focuses exclusively on low code/no-code solutions. The author cites examples describing business people putting together functional systems without writing a lick of code (let alone understanding the math underlying such systems.) The whole point of the article is /not/ having to learn to code. The idea is that these people are in the thick of a business problem, and given the right tools, they're likely to come up with a helpful solution. They don't need to express or communicate anything to anyone. They're able to provide a solution on their own. I agree with this somewhat, having built and maintained more than a handful of the kind of apps that these low / no-code solutions target, i.e., line-of-business apps. These tools have a place. I've worked with trainers and consultants that, I firmly believe, would have thrived with these kinds of tools had they been available at the time. Incidentally, I can't entirely agree that math is important because it encourages the appropriate thought process for constructing these systems. I've worked with more than enough technically inclined (if not remotely mathematically inclined) people who have managed to put together solid systems for themselves or their teams. I'm convinced that curious people excel in these cases, the ones that find a shortcut or an interesting path and just follow it.
- jacquesm 5y agoWe already have this distinction: engineers vs bricklayers and plumbers. And it also works that way in software. Plenty of CRUD programmers would not be able to implement quicksort. But they sure are able to use it.
- orev 5y ago> They don't need to express or communicate anything to anyone. My point about communication is not so much the need to actually tell something to someone, but that in order to be able to communicate something, they need to know how to break down a problem into all the various components. That’s what’s missing for many business people, so whether they are communicating the problem to a developer, or to a no-code platform, it won’t work. There will always be business people who can do this just fine, but there are far more who see themselves as the people who give commands that others just follow and have no interest in actually doing that type of thinking.
- globalise83 5y agoYou make some very good points. I think that one thing that is not at all obvious to most non-technical people is just how FAST computers can compute, even the most basic and low spec ones.
- BeFlatXIII 5y agoHow often have you found the metaphor that a computer is an extremely stupid employee with no common sense to be a useful prompt at getting business people to think of corner cases?