# Is Programming and Software Engineering more of a mathematical or language based activity?

**URL:** https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468
**Category:** Factual Questions
**Created:** [August 5, 2012, 12:28am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468 "2012-08-05T00:28:16Z")
**Posts on this page:** 17
**Page:** 3

<div class="post-metadata">

### Author: ![TriPolar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tripolar/32/3008_2.png) [@TriPolar](https://boards.straightdope.com/u/TriPolar)
#### Post date: [August 6, 2012, 2:31pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/41 "2012-08-06T14:31:17Z")

</div>

A lot of the posts here are correct, even the contradictory ones, because the field is so broad.

I’m wondering if there’s any difference in the underyling abilities of people who are good at ‘computer stuff’. Grammar isn’t non-mathematical, it’s based on rules, and logic, just as the basic math used in the development of software is. Perhaps there aren’t different types of people in this field, but people who have developed the same core skills in different ways.

But clearly people who can’t think logically, and can’t apply logic, can’t develop software, but they have management as a fallback career.

---

<div class="post-metadata">

### Author: ![Wendell\_Wagner](https://avatars.discourse-cdn.com/v4/letter/w/8491ac/32.png) [@Wendell\_Wagner](https://boards.straightdope.com/u/Wendell_Wagner)
#### Post date: [August 6, 2012, 3:42pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/42 "2012-08-06T15:42:41Z")

</div>

It’s certainly possible to be a good at math and terrible at programming, since that’s true of me.

---

<div class="post-metadata">

### Author: ![Blakeyrat](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Blakeyrat](https://boards.straightdope.com/u/Blakeyrat)
#### Post date: [August 6, 2012, 6:04pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/43 "2012-08-06T18:04:05Z")

</div>

> [@Jragon](#):
>
> There’s also some important stuff that’s not really math or language, like systems design. I’m not sure that fits in anywhere, but a person who can design a good system or interface has a very useful, and often rare skill.

I think the absolutely most important part of making software (not necessarily “programming”, but making a finished software product) is interaction design. That’s more psychology than anything else, IMO.

---

<div class="post-metadata">

### Author: ![Tim\_T-Bonham.net](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@Tim\_T-Bonham.net](https://boards.straightdope.com/u/Tim_T-Bonham.net)
#### Post date: [August 6, 2012, 6:24pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/44 "2012-08-06T18:24:40Z")

</div>

> [@TriPolar](#):
>
> But clearly people who can’t think logically, and can’t apply logic, can’t develop software, but they have management as a fallback career.

Ain’t that the truth!

---

<div class="post-metadata">

### Author: ![notsoheavyd3](https://avatars.discourse-cdn.com/v4/letter/n/85e7bf/32.png) [@notsoheavyd3](https://boards.straightdope.com/u/notsoheavyd3)
#### Post date: [August 7, 2012, 4:11am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/45 "2012-08-07T04:11:57Z")

</div>

> [@ftg](#):
>
> E.g., I had a student come by who got hired by a chemical processing company: refinery type plants and all that. He was interested in method for scheduling the movement of goo thru pipes. (The same pipes would be used for routing different goo thru the plant at different times.)
> 
> So I started talking about graphs with edge weights and all that and he kept stopping me. “No, there are no graphs. These are pipes.” Just impossible to pass on any information.

Oh god. Let me guess, he’s probably one of those software engineers that doesn’t have time for little things like thinking through what he’s going to do and prefers to go on a multi-day coding bender. You know, where he thinks he’s doing the right thing banging out code hour after hour days on end and all you can think to yourself is “It would have taken you less time to do it the right way.” or “Why didn’t you think about it first?” (I say bender because the way some people go at it, it strikes me as a junkie that needs to get his “fix” of coding and not somebody that’s actually trying to solve a problem.)

---

<div class="post-metadata">

### Author: ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)
#### Post date: [August 7, 2012, 4:34am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/46 "2012-08-07T04:34:10Z")

</div>

> [@Blakeyrat](#):
>
> I think the absolutely most important part of making software (not necessarily “programming”, but making a finished software product) is interaction design. That’s more psychology than anything else, IMO.

Yes. Entirely true. And there are a lot of programmers who are at least competent at the more problem-solving (that is, mathematical) aspects of programming, such as algorithm design, finding the best trade-offs, and so on, but who shouldn’t be trusted to design a UI for the average person. (Creating a UI for another programmer is another matter entirely; suffice it to say, anyone who thinks [standard vi](http://en.wikipedia.org/wiki/Vi) is friendly isn’t going to have much overlap in tastes in UI design with the average person.)

---

<div class="post-metadata">

### Author: ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)
#### Post date: [August 7, 2012, 4:35am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/47 "2012-08-07T04:35:57Z")

</div>

> [@notsoheavyd3](#):
>
> Oh god. Let me guess, he’s probably one of those software engineers that doesn’t have time for little things like thinking through what he’s going to do and prefers to go on a multi-day coding bender. You know, where he thinks he’s doing the right thing banging out code hour after hour days on end and all you can think to yourself is “It would have taken you less time to do it the right way.” or “Why didn’t you think about it first?” (I say bender because the way some people go at it, it strikes me as a junkie that needs to get his “fix” of coding and not somebody that’s actually trying to solve a problem.)

Hey, programming a giant system doomed to fail because you haven’t thought it through can be fun and edifying.

Okay, you shouldn’t do it on company time. But I’ve learned a lot by playing “code some stitched together abomination of a system with no planning” at home for fun.

---

<div class="post-metadata">

### Author: ![tellyworth](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@tellyworth](https://boards.straightdope.com/u/tellyworth)
#### Post date: [August 7, 2012, 4:42am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/48 "2012-08-07T04:42:01Z")

</div>

> [@Jragon](#):
>
> Hey, programming a giant system doomed to fail because you haven’t thought it through can be fun and edifying.
> 
> Okay, you shouldn’t do it on company time.

By coincidence, I just proposed doing precisely that on company time. It’ll be quicker to build something quick and dirty, that probably won’t work, and measure how it fails, than to try to plan an ideal solution up front.

---

<div class="post-metadata">

### Author: ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)
#### Post date: [August 7, 2012, 4:45am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/49 "2012-08-07T04:45:12Z")

</div>

> [@tellyworth](#):
>
> By coincidence, I just proposed doing precisely that on company time. It’ll be quicker to build something quick and dirty, that probably won’t work, and measure how it fails, than to try to plan an ideal solution up front.

There **is** merit to that method. I think it really depends on the application. When I’m making an application or something for a specific purpose I usually plan it out. It’s never perfect, but I find it saves time.

For research, or programs where you’re trying to break new ground, it’s going to go through so many rewrites and prototypes anyway that there’s basically no point planning out the suite aside from a few steps in advance. In those cases I usually just sit down and let it burn, then rebuild it from the ashes.

---

<div class="post-metadata">

### Author: ![notsoheavyd3](https://avatars.discourse-cdn.com/v4/letter/n/85e7bf/32.png) [@notsoheavyd3](https://boards.straightdope.com/u/notsoheavyd3)
#### Post date: [August 7, 2012, 4:53am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/50 "2012-08-07T04:53:23Z")

</div>

> [@Jragon](#):
>
> Hey, programming a giant system doomed to fail because you haven’t thought it through can be fun and edifying.
> 
> Okay, you shouldn’t do it on company time. But I’ve learned a lot by playing “code some stitched together abomination of a system with no planning” at home for fun.

Maybe but like you say, you shouldn’t be doing it on company time. Also I’m also complaining about people who literally won’t stop coding for even 5 or 10 minutes and think about what they’ve seen. (IE They literally produce a stream of code for hours on end. It’s so bad at times my teeth itch.)

---

<div class="post-metadata">

### Author: ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)
#### Post date: [August 7, 2012, 4:55am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/51 "2012-08-07T04:55:26Z")

</div>

> [@notsoheavyd3](#):
>
> Maybe but like you say, you shouldn’t be doing it on company time. Also I’m also complaining about people who literally won’t stop coding for even 5 or 10 minutes and think about what they’ve seen. (IE They literally produce a stream of code for hours on end. It’s so bad at times my teeth itch.)

H… how do you even **do** that? Even at my most stream-of-consciousness code ramblings I’m sitting there staring at the screen mulling something over for 15 minutes.

---

<div class="post-metadata">

### Author: ![notsoheavyd3](https://avatars.discourse-cdn.com/v4/letter/n/85e7bf/32.png) [@notsoheavyd3](https://boards.straightdope.com/u/notsoheavyd3)
#### Post date: [August 7, 2012, 5:08am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/52 "2012-08-07T05:08:03Z")

</div>

> [@Jragon](#):
>
> H… how do you even **do** that? Even at my most stream-of-consciousness code ramblings I’m sitting there staring at the screen mulling something over for 15 minutes.

I don’t even know how they can do it either. But when you see code where the person literally wrote the same 10 lines of code 60+ times instead of a writing a function once you know they weren’t thinking about what they were doing.

---

<div class="post-metadata">

### Author: ![TriPolar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tripolar/32/3008_2.png) [@TriPolar](https://boards.straightdope.com/u/TriPolar)
#### Post date: [August 7, 2012, 9:43am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/53 "2012-08-07T09:43:53Z")

</div>

> [@notsoheavyd3](#):
>
> I don’t even know how they can do it either. But when you see code where the person literally wrote the same 10 lines of code 60+ times instead of a writing a function once you know they weren’t thinking about what they were doing.

Someone is getting on your nerves.

It’s kind of funny. Runaway, aimless programming is the first step on the way to becoming a great programmer. It’s also the second step on the way to becoming a useless one. You have to learn something the first time you code yourself into a corner.

---

<div class="post-metadata">

### Author: ![bump](https://avatars.discourse-cdn.com/v4/letter/b/7c8e57/32.png) [@bump](https://boards.straightdope.com/u/bump)
#### Post date: [August 7, 2012, 7:48pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/54 "2012-08-07T19:48:38Z")

</div>

> [@Rysto](#):
>
> Well, “Computer Science” is a pretty ill-defined discipline, which I think is the source of your confusion. You seem to be equating CS with programming, which I agree is several steps removed from mathematics. When I did my CS degree, the courses I took ranged from Real Time, which was a hard-core programming course with very little math, to Formal Languages and Parsing, which was just a subfield of set theory and had absolutely no programming whatsoever. It’s the latter kind of “Computer Science” that has lead CS to often be treated as a branch of Mathematics.

I always saw the divide as really being “Computer Science” vs. “Software Engineering/Development”, where “Computer science” is the part of it involving algorithm development and proving, and all that business, and the Software Engineering side is the part that deals with taking a problem and solving it with a software program.

They’re more or less lumped together in academia, but in the real world, they’re not often together. Computer scientists typically work at universities and big technology companies, while software engineers are more common and their skills are more broadly applicable in many IT departments and programming shops.

---

<div class="post-metadata">

### Author: ![notsoheavyd3](https://avatars.discourse-cdn.com/v4/letter/n/85e7bf/32.png) [@notsoheavyd3](https://boards.straightdope.com/u/notsoheavyd3)
#### Post date: [August 8, 2012, 4:42am UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/55 "2012-08-08T04:42:38Z")

</div>

> [@TriPolar](#):
>
> Someone is getting on your nerves.
> 
> It’s kind of funny. Runaway, aimless programming is the first step on the way to becoming a great programmer. It’s also the second step on the way to becoming a useless one. You have to learn something the first time you code yourself into a corner.

Yup, pretty much. Mostly it’s because one of the big things lately was the code dump they did lately and it was a dump in more ways than one.😃 Still when you’re working with code from a guy who doesn’t believe in source control you know what you’re going to be working on won’t be pleasant.(I could go on about not putting generic clean up code in the base class but I’d just be beating a dead horse.)

Actually what I’ve noticed in my time as a SE is that there’s always one guy like that at every company.(And it seems like there’s only 1, never 2 or 3. Just 1.) I guess the first thing to do when you get hired is figure out who it is and avoid him/her.

Anyway you’re right though, you need to play with your code. Still when you then turn around and do the real solution too many coders take their toy and use it instead of doing a proper solution.(And as you say, you need to learn from your play.)

---

<div class="post-metadata">

### Author: ![Capt.Ridley\_s\_Shooting\_Party](https://avatars.discourse-cdn.com/v4/letter/c/cc9497/32.png) [@Capt.Ridley\_s\_Shooting\_Party](https://boards.straightdope.com/u/Capt.Ridley_s_Shooting_Party)
#### Post date: [August 8, 2012, 12:57pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/56 "2012-08-08T12:57:34Z")

</div>

> [@ultrafilter](#):
>
> It’s also worth noting that even if writing programs doesn’t look mathy, it secretly is, and there are languages like Haskell and OCaml that don’t hide those details like most other languages do. There probably aren’t that many Haskell programmers without a strong math background.

Haskell and OCaml generally don’t push the Curry-Howard correspondence (which is what you’re alluding to mentioning the connection between programming and mathematics) that far. Coq, Matita and Agda on the other hand … languages where constructive proof and computation merge into essentially the same thing.

Though even for run-of-the-mill imperative languages there’s [extended Curry-Howard correspondences](http://opus.bath.ac.uk/25204/) where (total) imperative programs correspond to strategies in games.

---

<div class="post-metadata">

### Author: ![TriPolar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tripolar/32/3008_2.png) [@TriPolar](https://boards.straightdope.com/u/TriPolar)
#### Post date: [August 8, 2012, 1:40pm UTC](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468/57 "2012-08-08T13:40:32Z")

</div>

> [@ultrafilter](#):
>
> It’s also worth noting that even if writing programs doesn’t look mathy, it secretly is, and there are languages like Haskell and OCaml that don’t hide those details like most other languages do. There probably aren’t that many Haskell programmers without a strong math background.

That is simply a math-centric viewpoint, and incorrect. Math is secretly programmy. Mathematicians (and their cousins the physicists) just don’t realize it.

[Previous page](https://boards.straightdope.com/t/is-programming-and-software-engineering-more-of-a-mathematical-or-language-based-activity/630468.md?page=2)
