Fog Creek Software
Discussion Board




Coding and Mathmatics


I've noticed that a lot of people on this board are opposed to education because "it doesn't really teach you to solve problems."

I earned a BS in Mathmatics (with a concentration in CS).  Literally, all I _DID_ was solve problems.  I learned to take a certain input set, and apply a rigourous series of transformations to it to produce an output.  (In other words, I learned to write a function.)

Then I learned proofs (Number Theory; Math 420) where you break a problem down into a desired states, and then apply transformations to get to those states.  (In other words, I learned to write a program.)

I think my education was _GREAT_.  I have to agree about actual IT degrees ... nowadays, many of them consist of:

(1) 9 Business Credits:  Accounting I, II, and Mgt
(2) 9 Networking Credits: LAN, WAN, and Interneet
(3) 9 Programming Credits: Intro to CS, VB, and Java
(4) 3 OS Credits: Winders.  (UNIX if you're lucky)
(5) 3 Database Credits (If you're lucky)
(6) 3 Sys Admin Credits (If you're lucky)
(7) The 300 and 400 level courses are all things like "Information Systems Policy" "Capstone Course" or "Systems Analysis"

... The End Result is a Jack-of-All trades who is a master of none.  Many professors go "low and slow" for 100 and sometimes 200 level courses, because many of the students aren't majoring in the area and only taking the courses for elective credit.  So the courses provide a brief, short overview of topic X.

  Your IS major might know a bit about accounting ... mostly worthless to a coder on non-financial systems.  He might know a bit about networking - not enough to be a sys admin, though.  And, as someone else pointed out, he might have a head-knowledge of specific programming languages, but he probably doesn't understand algorithms, oops, or big-o notation.

  Instead of writing sort routines, he just knows how to call object.sort();  As joel http://www.joelonsoftware.com/articles/fog0000000319.html pointed out - to code well, you gota _GET_IT_.

  And that is why, for coders, I have come to agree that the IT degrees at some schools are so compromised they are an intellectual cop-out.  BUT THAT DOES NOT MEAN THAT HIGHER EDUCATION, IN GENERAL, IS "BAD".

comments?

Matt H.
Thursday, June 20, 2002

Whelp - since I'm very vocal about this...

I do not believe that *most* educational systems provide the proper education in critical thinking. I think that's largely because most people don't understand how to do it. I've seen engineering (not necessarily Computer Science) students unable to step back and truly look at the problem in a logical fashion due to the "rules of problem solving" that they were taught in college.

There may be some really good programs out there that teach that, but largely I think it's something that is sorely lacking from our society in general - not just our educational system.

Let me give you an example - We had a challenge where a large number of our pages "suddenly" started giving Page Cannot Be Displayed Errors. I wanted to go back and chart out what changed (using one of those logic puzzle formats, you know, the ones with the + and - and Georgie does not walk the Blue Dog, The red dog does not pee on the lawn sort of things). I kept getting the answer "well, it couldn't be *that* - try *this* etc. etc.". After lengthy packet examinations etc. we finally discovered that the engineers had changed from one version of the compiler to another and it wasn't compatible with IIS 5 (but IIS 4 had no problem with it).

If we had charted this from the beginning we would have figured out the problem in 3 days (or less).

Doing it the way all the "educated" people were taught it took several months and countless frustrated hours to fix it - largely because they were "applying" those functions without taking the step of examining all the pieces surrounding the problem *first*.

Ok - so given that example - I don't think higher education is completely useless - lots of people use it to get the "well roundedness" that they might not have had the chance to get to learn in high school/at home. That, I think, is valid. But until Colleges learn how to teach problem solving well - I don't think a degree will mean a whole heck of a lot (at least in my opinion - I hope not to offend anyone).

Bevin Valentine
Thursday, June 20, 2002

THere is a difference between getting an education and getting an educated mind. One can go to college and still not have an educated mind or vice-versa.

The blame lies mostly on the person( for not doing enough to develop his mind/ thinking); secondary factors would be below-par univs and profs.

Prakash S
Thursday, June 20, 2002

Matt,

it was not my impression that the people on this board were opposed to education. It rather seemed to me that the main opposition was against taking a specific degree as an indicator that a person is able to do a good job as a programmer (or, what is even worse IMO to take the lack of that degree as an indicator that he or she is not). Good education in what field soever is surely not useless. It might be that the specific content of your classes does not help you much with a future job, but other, namely problem solving, skills will help you with every thing you do. Maybe CS or mathematics are areas of study that let you develop especially good problem solving skills. But there are surely also other ways to obtain those skills. Therefore I think it is short sighted of an employer to rule out people applying for a job just because a certain degree is missing. 

jm2c,

Jutta Jordans
Thursday, June 20, 2002

Matt,

I completely agree.  When hiring folks, we look for the ability to grasp fundamentals.  Both fundamentals of
1. Can they and have they written code for products?
2. Do they have a grasp of math and can they apply fundamentals to new problems?

The requirements of a rigorous BS in Engineering, Math, Science should sufficiently equip and test the candidates ability to think:  Linear Algebra, Differential Equations, Calculus.  These 2 years of math are a very good foundation for most engineering problems.

When an engineer needs to get from point A to point B in a project, and they have 4 solid years of problem solving under their belt, they can "get there from here".

Certainly, in the "real world" some adaptation is required.  In the classroom, problem solving is from a direct appproach.  That is all the data you require is available and likely, the problem is "set up" and a there is a known solution.  In the field, well, you have to make inferences based on very incomplete data sets.  Deduction is the rule, whereas in a classroom, induction is taught (at least in my experiences).

Regardless, reasoning skills and physical laws are taught and applied.  From there, given enough time and effort, you can solve any problem - regardless of the "technology du jour".

Nat Ersoz
Thursday, June 20, 2002

As for Benjamin and his example.  I have never, in my 20 years of engineering, been hindered from debugging a problem in a way I saw fit.  Ever.  It has never happened. 

If I thought that XYZ was the best approach, then I went off tracking down bugs, glitches, violations, using XYZ method.  I have never been second guessed as to my methods, nor have I ever known anyone who was debugging a problem to be second guessed and told not to approach a problem in a specific way.  Often we may have more than 1 person tracking down a bug with different approaches, but that has never negated a method for doing so.

So, I find it a bit incredible that you were hindered or blocked from debugging a specific problem in a way that you saw fit.

Nat Ersoz
Thursday, June 20, 2002

I'm assuming you're referring to me :-)

It happens. Quite a bit. Particularly when the people you encounter who are educated are in a more "senior" position (due to that education) and have been solidly indoctrinated in "a" methodology.

Just think of how many followers you've seen and how many leaders - as indicated elsewhere, often education turns out followers.

Not all the time :-) Please don't think I'm saying that - and I'm not saying we need to go anti-education. I'm just saying that we need to be cautious of adopting a strict methodology just because expert x at y university said so :-)

Bevin Valentine
Thursday, June 20, 2002

I agree: it's possible to get a CS degree without really learning much.  It's highly likely you'll get an IT degree without learning anything.  By contrast, it is *really* hard to get a Math degree without learning.

Technically, all programming can be reduced to a concept from some branch of mathematics.  I'm of the opinion that's all programming is: recognizing the idempotent problem.

Of course, with a math degree, I'm probably a tad bit biased.

Jason McCullough
Thursday, June 20, 2002

>I agree: it's possible to get a CS degree without really learning much. It's highly likely you'll get an IT degree without learning anything. By contrast, it is *really* hard to get a Math degree without learning.
>Technically, all programming can be reduced to a concept from some branch of mathematics. I'm of the opinion that's all programming is: recognizing the idempotent problem.
>Of course, with a math degree, I'm probably a tad bit biased.

I beg to differ. I don't think the possibility of a CS grad learning a little is higher than that of a Math grad. I don't even think the comparison is meaningful. So many variables are there.

You can generalize programming into one statement, but that statement will be so vague that it's almost useless.

I don't think an average math student writes more code, fixes more bugs, learns more about UI, OOP, software engineering, etc. than an average CS student.

Sam Wong
Friday, June 21, 2002

Matt, I think every pro/con education argument has been along the lines of ...

I don't have a degree [implied] and XX% the people I work with who have degrees are inefficient morons.  Therefore, getting a degree doesn't teach you how to be a good SW Engr.

-- or --

I have a CS degree and XX% the people I work with who don't have a degree are inefficient morons.  Therefore, a degree is really critical for learning the fundamentals required to be a good SW Engr.

So basically, people are usually proponents of of their own skill sets and backgrounds.  And, XX% of people are going to be idiots (not limited to SW Engr's).

P.S. How the hell did you get a degree in mathematics and not learn how to spell it?  Is 'Mathmatics' the Joel on Software Dutch translation?

Nick Hebb
Friday, June 21, 2002

Nat>>> I completely agree. When hiring folks, we look for the ability to grasp fundamentals. Both fundamentals of          1. Can they and have they written code for products?
2. Do they have a grasp of math and can they apply fundamentals to new problems? <<<

Nat, a lot of griping about hiring practices are complaints that companies want experience with specific facilities (i.e., Java, Windows, SQL, etc.) rather than good capabilities with the ability to adapt.  A couple of questions, if you would care to respond:

- How does your company find people?  If you advertise, how do you put in this kind of a requirement?

- What is the nature of your company?  Big or small?  Type of work done (contract software development, developing products, support for other departments)?  (Name, if you want to mention it).  (In Indianapolis area?)

mackinac
Friday, June 21, 2002

Good point mackinac... the ability to adapt is often overlooked for "specific skills".  When the current tech buzzword skill is obsolete, a permanent employee type must be able to adapt. 

Perhaps buzzword skills are easily extracted with resume skimming - the other might require some serious thought.

Joe AA.
Friday, June 21, 2002

Matt,

I was really interested in the typical "IT degree" you posted including:

(3) 9 Programming Credits: Intro to CS, VB, and Java
(4) 3 OS Credits

The way you mentioned it sounded like this is a common thing. The classes posted look like for an AA degree, or a 'sham BS' from a Coleman College like place. Is this correct? Or is this a degree now offered by actualy universities (say it ain't so) & if so, could you post some examples?

I'm feeling suddenly like I'm out of the loop - I'm not aware of this being a typical degree, but it's been five years since I've thought much about such a thing.

The list of classes you gave seems self-evident to me that a person so trained would not really be qualified to do anything much. What do the universities offering these things claim they are useful for? Do people with such credentials expect to get paid much more than $10/hr? Do they get it?

I am more familiar with CS and CE programs from schools like MIT, which didn't look anything like what you've described last time I looked.

Any pointers appreciated. Thanks.

X. J. Scott
Friday, June 21, 2002

mackinac & Joe:

Complete agreement.

As for our company: www.myrio.com, located in Kirkland, WA.  We've got a very good group of developers.  Unfortuantely for us, we're not hiring at the moment.  If we can land one of several large telcos in the next 6 months, we'll be hiring.

We have a group of testers which positively suck.  This is a bone of contention, along with some other dead wood.  Don't even get me started...  The point of working for a startup is doing it damn near perfect with only the best.  No margin for error.  We have way too much margin.

We use Monster.com as the source of most of our developer contacts.  That's how I got hired, and several others.  Our interview process is very similar to any technical interview process.  I like to use stuff from the person's resume as a start.  I just keep asking questions until I see how something was implemented or until they get sick of me.

I worked for Thomson for 16 years until 1998, then worked for MSFT for 2 years.  MSFT?  That was miserable (as I've mentioned before).

Nat

Nat Ersoz
Friday, June 21, 2002

'I beg to differ. I don't think the possibility of a CS grad learning a little is higher than that of a Math grad. I don't even think the comparison is meaningful. So many variables are there.'

Ok, ok, I oversold.  To be more specific: I think the average math major working in development will be somewhat better at problem solving than a given computer science major, and much, much better than a given IT major.

Why?  The various degree requirements for accreditation.  I have difficulty imagining someone getting a substantially inferior education in the process of earning a math degree, but the quality variations between the various CS schools are pretty large.  The variance between IT degrees, which is what I really want to beat on here, is such that it's a complete crapshoot.  Good lord, only 15 hours of technically rigorous coursework?

I don't really have an opinion on the degree/non-degree thing at anything, other than the observation that it's a lot easier to pick up theory when you're forced to do it, as opposed to your free time.

Jason McCullough
Friday, June 21, 2002

People with mathematical leanings are often very good at programming.  But it's not obvious how to separate those from who simply have the degree.  Try to get a sense of those who are adept at mathematical topics without being aware of it.

Sammy
Monday, June 24, 2002

I certainly have to agree that programming requires some aptitude.  I wouldn't go as far to say that aptitude is automatically associated with mathematics.  One of the best newbie programmers I ever had was a frustrated ex-teacher with a PHD in Greek and Latin.

Joe AA.
Monday, June 24, 2002

There are a lot of subjects besides mathematics that would give you experience in solving problems. I think linguistics, for example, could be as relevant to programming as mathematics. And experience with any kind of scientific research is helpful.
I suspect the connection between math and CS is mostly tradition, since mathematicians were the first to use computers. Now of course computers are used for many other things.
A background in the humanities might not be very useful to a programmer. But any subject where logic is important, such as philosophy or the natural and social sciences, might be just as good as math.

PC
Monday, June 24, 2002

hmmm...

Social Sciences in the world of computers...

I don't know.  When I start asking my computer "and how did you feel about that?", I think I will have outlived my usefulness.

Nat Ersoz
Tuesday, June 25, 2002

I think the average Mathmatics graduate would be superior to the average CS student for one important reason. 

Computer Science is seen as the qualification to get to make money.  Lots of people take CS wether they are suited or not regardless of their suitability.

I've been in a classroom where the mechanics or a linked list are painfully described, and yet the majority of the class still cannot get it.  By the end of the course they still struggle to compile 'Hello World.'  They have no aptitude for the subject, and yet they dilligently gain their degree, and then hide behind methodoligies for the rest of their career.

On the whole, people who study mathematics do so because they like it.  Mathematics is not seen as a cash cow subject.  If they find the going tough, they drop out.  The pace of a Mathematics class is in stark contrast to the CS.  The student is bombarded with advanced subjects, and yet they keep up (or drop out).

For this reason, I would expect a Mathmatics graduate to have a better aptitude.  Of course, you'd be a fool to make a decision on that alone.

Ged Byrne
Tuesday, June 25, 2002

Dear boys and girls, let me serve you this tiny blast frfom the past. Back in the days when JustMe was getting his CS degree, there was't the grand separation between Maths and CS that exists today. CS students were just lumped in with the Maths students, and got a few hours of CS instead of some advanced Maths subject. The whole difference was less than 20% of the courses. Now there was this particular boy, let's call him JustHim, that was realy a Maths Wiz. He sailed through all the subjects exept for ... programming 101. For one reason or another, he just didn't "get" it, and flunked this course majorly. We all thought this quite strange since compared to the other stuff we had to digest the Programming 101 was peanuts. Even the greatest bozos managed to pass programming 101, so what was up. We spent quite some time trying to help JustHim, but somehow, we couldn'tmake him see the light. He switched towards pure Maths and sailed through college with top grades, but never tried computing again.
To this day I still find this extremely weird. I have met lots of people who couldn't "get" programming, and in fact tend to believe that its just one of those things that is difficult to learn. You either "have" it, and then it's all natural and easy to you, or you don't "have" it, and then it almost impossible to get the hang of. However, before meeting JustHim I always had assumed that the people who "got" Maths would also "get" programming. Guess I was wrong.

Just me (Sir to you)
Tuesday, June 25, 2002

Sir,

Interesting.  One of my assumptions is also overturned.

Perhaps JustHim would have had success with a declarative language, like Lisp?

If only we could make a study.

Ged Byrne
Tuesday, June 25, 2002

Math and programming use different parts of the brain, in general, so a person can find one easy and the other hard. Programming seems natural to me because I'm good at language and verbal reasoning. Math is not easy for me, unless in the context of a computer program.
The social sciences don't involve asking people how they feel. The are like the natural sciences and involve logic and statistics and the scientific method. And the social sciences that are now called cognitive sciences are even more relevant to computer programming.

PC
Tuesday, June 25, 2002

Did I say declarative - I meant functional.

Ged Byrne
Tuesday, June 25, 2002

*  Recent Topics

*  Fog Creek Home