That is not a Computer science problem. That is a management problem.
I said SOME of the better ones. I guess I have been lucky to work with a lot of good developers. Some had CS degrees, some EE's, some others (including Biology and philosophy). The problem may not be due to the developers. Management is the place to start looking! Haven't you worked for a pointy haired manager sometime in your experience? Ed
What Computer Science should do is figure out how to get a group of people to produce good code in a predictable manner.
[..]"
Ed Prochak has responded:
"[..]
That is not a Computer science problem. That is a management problem. [..]"
I am not convinced that it is fair to blame those involved in management: even if they intend well and are good, if they are not the implementers and if they are not competent to be the implementers, they might not be able to manage perfectly.
In news: snipped-for-privacy@4ax.com timestamped Sun, 11 Mar 2007 21:16:51 -0800, John Larkin replied to Ed Prochak's news: snipped-for-privacy@4ax.com :"So who is teaching Programming Management?"
I am not certain, but I suspect that the discipline called Information Systems is more managerial than other degrees related to computers. However, I was acquainted with someone who deliberately selected courses with as little programming content as possible and who as a result of that, graduated with a first class honors degree in Information Systems.
Ain't that nice to occasionally see a gadget and knowing "Ah, I designed this". Sometimes happens to me when I visit at a hospital. Those machines have an amazing service life. The front bezel paint might be completely gone but they still use the thing.
Then we need a new level, the technical programming manager. This person would have to be a good programmer, but his main function would be to make sure modules are correct and that their interfaces are fully and accurately documented. And to make sure modules call each other correctly. They would have to actually *read* the code their people produce, and enforce standards. Hell, most code is never read by anybody, including the author.
Programmers wouldn't generally like this. Herding cats and such.
How could you describe so exactly what I did for years?
You end up dealing with the most difficult bugs that nobody wants to be bothered about. Once I found a defect in a module and since it involved interface and not internal behaviour, the programmer said it was a realtime bug meaning that was not his business.
They only liked the part where I found the bugs and corrected them without telling anybody.
Appropos to this topic, an article just appeared in the online version of EETimes bemoaning the lack of PhD computer scientists to attack the problems of effectively using multicore computers. The title of the article: "Where are the programmers"
formatting link
Part of the problem with the article is that it is really about the problems of finding PhD-level people for theoretical CS research. It isn't really about the difficulties of finding undergrads for the CS departments or programmers for the forestry or chemistry departments, or for businesses small and large. The problem with CS is that the jobs for BSc grads in CS are just not very attractive to students. Perhaps those kids have been reading Dilbert and aren't thrilled with the idea of a cubicle and a PHB.
I have worked for such good managers. One did not read the code (though he could), but made sure the development process was followed. Beyond that he made a point of saying his job was to remove obstacles from the way of developers. This included finding out what the requirements really were (not just the market-speak features list), getting the right people doing the right assignments, getting training for people as needed, and a lot more. Of course that was in an engineering company where we build products, not just business applications.
If you try to herd cats the same way you do cattle, you are doomed to fail. That doesn't prove cats cannot be herded. If you try to manage programmers the same way you do assembly line workers, ...
Not those, at least most of them don't. Often you need to buy sterile disposables such as single-use catheters and that will become a minor inconvenience when you aren't registered.
I have only met one or two, Physicists, EE's, and Chemists that can program are so common that you can hardly swing a cat without hitting one. I have even met a draftsman that was a good programmer.
--
JosephKK
Gegen dummheit kampfen die Gotter Selbst, vergebens.
--Schiller
Isn't it ridiculous to think about the old and trivial crap like that as of great achievements or a pieces of art?
When I see a piece of equipment that I designed long ago, I feel a shame for the crooked solutions and a pity for the amount of time that it took me to make it to work.
Nope. For some of them there has not been a single competitor in a decade, despite numerous attempts to give us a good market whooping.
Sure, hindsight is easy. But what counts is whether it worked for mankind. Or in the case of medical equipment how many lives it has ultimately helped saving.
Are you an Ayn Rand fan? Do you think that bosses must (and do) have the skills of all their employees? No really, do you think a manager that manages programmers MUST be a programmer first? It might help but it is analogous to saying that to manage a truck stop you first must be a truck mechanic. Sorry but I do not buy it as an absolute required prerequisite for being a manager in IT. It might help but I'd rather have a manager that understands his limits and no programming experience than one that has programm experience but little organizational skills.
I'm sure we'd both prefer to work for one that has both solid progamming skills and good organizational skills. But we know there are few of those.
Prochak'snews: snipped-for-privacy@4ax.com
So on the basis of one anecdotal data point you condemn an entire degree program? Or just that person?
To get back to the nominal topic of this thread:
Computer Science is not directly about programming. In my experience CS should include programming AND hardware (small, as in cpu architecture and large as in systems architecture) and networking/ communications, theoritical mathematics (boolean logic, relational algebra, information theory). It has more of a theoretical leaning (it is Computer SCIENCE after all). Many of teh assignments would be individual not team projects. A noticable percentage of assignments would produce research papers rather than working code. I would not expect to see a management class in a CS program.
Software Engineering also deals with about the same areas, but the emphasis is more practical in putting the CS theory into practice. The Engineering part comes from balancing the need to find the optimal solution and meeting the requirements. Mathematical courses might cover things like Numeric analysis or control theory. Architecture courses would lean more toward issues of how to select the right CPU to meet the performance requirements. More of the assignments would be team projects than in a CS degree. More of the assignments would be to produce working systems rather than just theoritical models. I would not be surprised to see a management related course in a SE degree program. (I would not expect it to be a core course for the degree.) If a school offers both SE and EE, I would expect a close relationship between the two departments on some classes.
And in my mind Information systems is like Software engineering in that it leans more toward practical solutions. But I would expect it to have a heavy emphasis on business type applications. I would not expect a Process Control or Robotics class in an IT degree program. There might be a Numeric analysis class, but a a shallower depth than covered in SE curriculum. Both IT and SE might share a Human Factors course (covers design of Human-Machine interfaces). That might be one course that many developers should find useful, but few if any ever take it (AFAIK). Team assignments would also form a significant percentage of the IT degree program.
This was all kind of off-the-cuff thoughts, but I am actually surprised how much I must have thought about it over the years. They seem to make sense to me at the moment. I hope they make sense to others. Ed
In news: snipped-for-privacy@n76g2000hsh.googlegroups.com timestamped 15 Mar 2007 13:45:00 -0700, "Ed Prochak" posted: "On Mar 12, 6:17 am, Colin Paul Gloster wrote: [..]
Are you an Ayn Rand fan?"
I am not familiar with the term "Ayn Rand".
Ed Prochak wrote:
" Do you think that bosses must (and do) have the skills of all their employees? No really, do you think a manager that manages programmers MUST be a programmer first? It might help but it is analogous to saying that to manage a truck stop you first must be a truck mechanic. Sorry but I do not buy it as an absolute required prerequisite for being a manager in IT. It might help but I'd rather have a manager that understands his limits and no programming experience than one that has programm experience but little organizational skills.
I'm sure we'd both prefer to work for one that has both solid progamming skills and good organizational skills. But we know there are few of those."
I accept your point. However, it is not merely a case of a manager knowing his limits: it would be good for a manager to appreciate that practical limitations may restrict what can be computed. I had been managed by people (one of who had actually learnt a little bit of programming) who wanted the Byzantine generals problem solved for strictly two processors. I quoted from two textbooks for them that this is impossible so they complained that I still had not shown clearly how I was going to guarantee with strictly two processors that I have solved the Byzantine generals problem.
">
Prochak'snews: snipped-for-privacy@4ax.com
So on the basis of one anecdotal data point you condemn an entire degree program? Or just that person?"
I have more detailed insights to that degree program and that person than I mentioned: we did attend the same faculty for four years and I took some of the same classes at the same time as that person.
"To get back to the nominal topic of this thread:
Computer Science [..] It has more of a theoretical leaning (it is Computer SCIENCE after all). [..] A noticable percentage of assignments would produce research papers"
Where I did my computer science degree, research was discouraged for undergraduates.
" rather than working code. [..]"
Theory without practice is useless.
" Software Engineering also deals with about the same areas, but the emphasis is more practical in putting the CS theory into practice. The Engineering part comes from balancing the need to find the optimal solution and meeting the requirements. Mathematical courses might cover things like Numeric analysis or control theory."
I am unaware of any software engineering degree which contained control theory.
" Architecture courses would lean more toward issues of how to select the right CPU to meet the performance requirements."
Is a CPU a piece of software?
" More of the assignments would be team projects than in a CS degree. [..]"
Maybe, but is it fair for one's marks to be adversely affected by lazy teammates?
"And in my mind Information systems is like Software engineering in that it leans more toward practical solutions. But I would expect it to have a heavy emphasis on business type applications. I would not expect a Process Control or Robotics class in an IT degree program. There might be a Numeric analysis class, but a a shallower depth than covered in SE curriculum. Both IT and SE might share [..] Team assignments would also form a significant percentage of the IT degree program.
[..]"
"IT" in that quotation seems to have been used as an abbreviation for "Information systems". When and where I was a computer science undergraduate, I believe that numerics was optional for the computer science; software engineering; and information systems streams and that it was not dumbed down just for information systems students if they enrolled for it.
"[..] They seem to make sense to me at the moment. I hope they make sense to others. Ed"
I do not completely agree with everything you said, but it all makes sense.
I can't see what is wrong with that? I know several IT people who work in information system who never need to write source code.
The do need to set up servers, networks, distributed systems, back up systems and software, power control, system configuration (both Os and apps) many other things but never do they have top write a program as such.
When I have problems with my Pc's (plural) the network or the back up systems the person I call is an Information Systems specialist but as he says he would not know where to start writing C code.
A computing and IT/IS is a VERY wide subject. As we have discussed here many many times the average computer graduate can program in C#' or VC++ but has no idea of programming an 8 bit embedded system. So why should an IS person be able to program?
--
\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\
\\/\\/\\/\\/\\ Chris Hills Staffs England /\\/\\/\\/\\/
/\\/\\/ chris@phaedsys.org www.phaedsys.org \\/\\/\\
\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/
I can't see what is wrong with that? I know several IT people who work in information system who never need to write source code."
Fair enough for them then. I think that the following quotation from page 93 of Gerald's and Wheatley's sixth edition of "Applied Numerical Analysis", Addison Wesley, 1999 does not entirely go astray here: "[..]
Computer Programs
Beginning with this chapter, we conclude each chapter with example programs that imple-ment algorithms of the chapter. We do not attempt to include code for every algorithm; this allows students to gain experience in writing their own programs. That skill is essential to the budding numerical analyst, even though prewritten programs will most often be used when doing numerical analysis professionally. Although these professional packages can supply the most useful algorithms, one cannot read these or decide which is best suited for the task at hand without some background in creating at least simple programs. [..]"
Chris Hills wrote re "several IT people who work in information system":
"The do need to set up servers, networks, distributed systems, back up systems and software, power control, system configuration (both Os and apps) many other things but never do they have top write a program as such.
When I have problems with my Pc's (plural) the network or the back up systems the person I call is an Information Systems specialist but as he says he would not know where to start writing C code."
Administration of information technology resources could be classified as being within the domain of information systems, but it is not what I believe the term was used as a distinguishing term for these degrees. Things change and inaccuracies were published re the differences of these degrees, but I will quote from the current website anyway. From
formatting link
:"[..]
TWO DEGREE SPECIALISMS TO CHOOSE FROM
[..]
Software Engineering. This will equip you with the necessary skills to create software [..] Software engineers are technically-oriented and inventive. They typically find work in computing and electronics companies [..]
Information Systems. This is concerned with how organisations can best use computing technology to allow people to work together, and to enable the company to compete effectively in the marketplace. Information Systems graduates are people-oriented and business-oriented problem-solvers. Most work outside the IT sector in banks and insurance companies, manufacturing firms, TV companies, the health industry, and logistics companies.
[..]"
I do not see many items from Chris Hills's list "servers, networks, distributed systems, back up systems and software, power control, system configuration (both Os and apps)" for the final year on
formatting link
:"[..] Programme Academic Structure for 2006 - 2007, BSc in Computer Applications (Inf.Sys.) This information is provisional and subject to change.
[..]
Year 4 Core Modules: Code Title Credit Semester CA400 Project 15 Year long CA465 Technical Communication Skills 5 Semester 1
"[..] the average computer graduate can program in C#' or VC++"
Really?
"but has no idea of programming an 8 bit embedded system. So why should an IS person be able to program?"
Practical compulsory coursework in programming is documented for the first three years of a four year IS course. It also seems that it would be difficult to manage to get modules for the fourth year such that no programming whatsoever for the fourth year would be sufficient.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.