views:

671

answers:

7

If you think there is, do you see it as a real problem affecting organizations? If the answer to both question is yes:

  • What are the root causes?
  • Is the problem not just a lack of knowledge but obliviousness as well?
  • Who has the ability to effectively address this issue?
  • What are possible solutions?
+2  A: 

Javaschools and because math is hard. In my CS classes I was always amazed at the cool matrix transformations that the physics and engineering majors could do. On the other hand their code was all written in main.

minty
Thanks, haven't seen that article of Joel's before.
Andrew from NZSG
+3  A: 

Yes, there is. The so-called "Java Schools" are part of the problem. As well, there are many in the IT industry that do not even have any training in formal CS departments. Many do coursework in MIS or Business or something else unrelated, perhaps not going do college at all. Of course, one does not have to go to college to know CS but if you know CS (fundamentals, mathematics, etc) then you do not fit this category anyway.

There is also a bit of an anti-intellectual backlash. There is this view out there that CS is useless and the only thing worth knowing is Agile propaganda and Ruby On Rail or something like that.

As for possible solutions, that all depends on what you mean by that. I don't think you can issue a law that states all working programmers must perform reasonably well on some particular cannon of CS coursework. I think from the perspective you are coming from, the problem is likely to get "worse" not better. But, from a competitive standpoint, if you are versed in CS then perhaps this "bad" situation is actually good for you. =)

BobbyShaftoe
I don't know where you got the idea that agile and CS don't go together. I've never experienced this at any of the Agile conferences that I've gone to and I've heard most of the Agile thought-leaders speak at them. The Agile 200X conferences even have a research track where CS papers are presented.
tvanfosson
Yea, I also never got the feeling that agile and CS didn't go together. In fact I always found it was those who were more advanced in their CS that pushed the agile developments.
Simucal
Well, that's not really what I'm talking about. If you read many of the bloggers who are strong proponents of agile and eschew anything "traditional," there is a tendency to not think very highly of traditional CS training.
BobbyShaftoe
@BobbyShaftoe, I see your point and could see how some people think agile methodologies could be used in place of true computer science knowledge.
Simucal
+3  A: 

The knowledge is there, what is not well spread is how to apply it to solve the problems programmers need to solve.
Many people asked me: what was the most useful class from the CS school that you attended? Answer: ALGEBRA.
Too bad math teachers don't use concrete and practical problem examples when they teach a solution.

Ovidiu Pacurar
Algebra is a given, though I didn't take that at college. I think the most "useful" courses were proofs courses.
BobbyShaftoe
Discrete Mathematics was the best math class for me in regards to programming. Also, Graph Theory taken through the Math department
Simucal
'Concrete' and 'practical' are not an end in themselves. Too many students fixate on a perceived lack of 'real-world' applicability because they're unwilling to think deductively and work out how to apply theory for themselves.
Derrick Turk
+1  A: 

The amount of math and true CS in the IT industry is a function of so many things. I haven't necessarily felt a huge downward trend as many people suggest.

The truth of the matter is, most of the worlds programming can be completed without a great depth of knowledge in Computer Science or in mathematics. That is just plain fact. All the CRUD-business apps simply require a basic proficiency in the language and some time to solve the problems.

So that opens up a large, large market for programmers without those skills discussed in the question. The truth is, not all applications have to be super effecient. Not all of them have to be written in the latest functional language utilizing the latest agile development strategies.

The people who have a better understanding of computer science often scoff at the feeble minded attempts at "programming" these people produce but they are making a large mistake themselves. They lack the ability/perspective to understand that sometimes "just ok" is good enough for many applications. Could they do it better? Possibly. Is it required? No!

There is a place for those who have a much more refined CS background. These people are highly sought after for those public-facing, core-to-the-business applications that have a higher degree of difficulty and a smaller degree of error allowed. Usually they can demand a higher salary than the average programmer as well. However, it is a mistake to assume that they are the last word in programming and we are doomed if everyone doesn't have their elite mathematics and cs theory.

People who suggest that lack the business sense to know that most things simply don't require it.

Simucal
Well, but this seems to assume that the vast majority of software is simply CRUD based applications. Arguably, there is a lot of that; however, think about how much software is really out there. Clearly, it seems there is a greater majority of software that is not database-driven, generated CRUD.
BobbyShaftoe
@BobbyShaftoe, I just disagree. I just think more ~public~ software is non-crud based and because it gets more exposure we only see a tip of the iceberg. Think about every large company, now think about all their internal developers with CRUD apps. Multiply that out. It is huge.
Simucal
@Simucal, I do agree that a majority of applications consist of mainly CRUD, but most applications I've worked with are not pure CRUD and that's people start getting out of their league and are not even aware of it.It's a good point though, I'm starting another thread.
Andrew from NZSG
+5  A: 

Different people in the development foodchain need different degrees of technical education.

For example, people directly taking business requirements and turning them into business rule code don't necessarily need a very deep understanding of e.g. OS and database internal algorithm design. Interpersonal communication and plodding yet correct code is the order of the day, assuming an appropriate architecture for entering said business logic.

Lower down in the abstraction stack, you need people with deeper knowledge of the mechanics and sufficient knowledge of the problem domain so that they can let the business developers above get their job done.

And you can go lower again, where deep knowledge of a particular OS, a particular DB, a particular piece of hardware etc., is needed to tune things or write device drivers etc.

The thing is, this economy of people is shaped like an inverted pyramid. There are more problems in the business domain that need solving than there are new pieces of hardware that need drivers, or new middleware architectures that need designing and building.

So yes, there is a "widespread" lack of CS & engineering fundamentals in the IT industry (IT specifically is over-broad for development), but it's not the problem that a lot of hard-core CS people think it is. Frankly, most CS / engineer experts would be bored stiff by a lot of the mundane work that goes on, and wouldn't put up with the lower wages paid because of the lower requirements of those jobs.

Barry Kelly
I think you and I have similar sentiments.
Simucal
+1  A: 

The IT industry has more positions than the number of people who are willing to get the formal rigorous training. Luckily, 80% (not a real statistic!) of the jobs don't require advanced maths, so its ok that 80% of the IT guys don't have such training. I remember talking to this guy who was flipping burgers at a fast-food restaurant, and he barely knew anything about computers but was getting an IT degree "because IT jobs pay well."

Jimmy
A: 

Isn't it a given that if you want to be a good software engineer then you have to be good at mathematics as the number of ending up with a number 2 out of 1 to 10 are more than 1 an d so is the logic of achieving the same result in programming ? I thought 3-1=2 and so is 5-3 and therefore, if you are good that way then you can think more logically... Just an opinion...I have seen some software engineers / programmers struggling with mathematics too.. Regards, Andy

Andy