4 ms·
I agree, cs needs a split in roles kinda like nurse and doctor.
by username90 7y ago
I agree, cs needs a split in roles kinda like nurse and doctor.
- soulofmischief 7y agoI would say there are many kinds of computer scientists, and not all programmers are computer scientists and vice versa.
- abalone 7y ago“Code Practitioner” :-)
- reaperducer 7y agoFree-range artisan software enabler.
- yomly 7y agoI liken it to research scientists vs technicians. A technician at CERN maintaining the accelerators is probably pretty damn smart, they probably also understand some particle physics. They may not be the ones driving/designing the experiments and they probably aren't getting their names on those physics papers but that doesn't mean they didn't contribute any value...
- azhenley 7y agoBS in CS versus PhD in CS?
- ken 7y agoFred Brooks said this back in 1975. He called it a surgical team. Of course, no manager reads The Mythical Man Month, and those that do don’t follow it.
- 171243 7y agoCorrect me if I am wrong but isn't the central premise of the book that if you take a late project and add more people to the team it takes the project longer??? I've literally never met a manager that practiced this. Is the book still relevant? Not disagreeing, just curious.
- sanderjd 7y ago> I've literally never met a manager that practiced this. Yeah it's a pretty universal idea. > Is the book still relevant? Yes, precisely because that idea is so universal. Its advice has been relevant, insightful, and mostly ignored ever since it was written.
- ergothus 7y agoYou've never been on a project that was behind and management decided to add resources to it? Impressive! The book is worthwhile, not just for the central lesson, but WHY (TL;DR: communication overhead between different individuals increase as you add "nodes" - interestingly, you can make analogies to L2 cache expiration problems and others) and also a nice view at IBM of the past. And it was written in an era where there wasn't the need to make every book 300 pages long, so it's generally a lot more meat/page, though hardly perfect.
- mikekchar 7y agoIt's been ages since I read that book, but there is more to it that just the tag line you mention. It is very common to take a plan for work and to say, "This would take 10 people 1 year to developer, but we need it in 1-2 months. So let's put 100 programmers on the team". This is very much more obvious in Enterprise space and government contracting, but you see the reasoning everywhere. Here's quite a famous example: https://www.statista.com/statistics/272140/employees-of-twitter/ https://www.statista.com/statistics/272140/employees-of-twit... It shows a graph of the number of employees at Twitter over time. In Jan '08, there are 8. In Jan '09 there are 29. In Jan '10 there are 130. In Jan '11 there are 350. In Dec '13 there are 2712. Although a lot of that staff are going to be sales and marketing (and probably the growth is justified), the development team is also growing exponentially during that time. The Mythical Man Month would say that probably they are spending a lot more money than they need to to get the growth they needed. I used to work for a manufacturer of telephony equipment. On one of the products I worked on they had 5000 developers! (A single piece of code!!!). The average amount of code deployed was 1 line of code per day per developer. As much as we can argue that KLOC is a bad measure of productivity, if your average developer is only producing considerably less than 1 KLOC in an entire year, you know you have really, terrible, terrible problems. One of the questions you might want to ask is, if you want to write about 5000 lines of code a day, where is the sweet spot, actually? I think we can agree it's not at 5000 programmers. However, it's often really, really difficult to talk to non-technical management and get them to understand that more programmers does not usually equal more productivity. I could regale you with literally hundreds more examples, but I think it's sufficient to say that, yes, the Mythical Man Month is still really relevant these days.
- colechristensen 7y agoIowa State has separate degrees for Software Engineering and Computer Science Which isn't the difference between doctor and nurse, more like an MD and PhD in medicine, one focused on practice, the other research.
- abalone 7y agoI would think the engineers take algorithm and data structure courses so that’s not quite the distinction we’re talking about here.
- freeone3000 7y agoRight, but theoretical computer science also deals with provability and goes into various areas of topology, reasoning, and proofs. These are not useful to engineers, or are only slightly useful, while a course on systems programming isn't useful to a theoretician, because a universal turing machine doesn't have hardware interrupts. Different specializations for different roles.
- abalone 7y agoI agree. However I think it is not the distinction we’re talking about here, which is about not having a firm grasp of fundamental algorithms and data structures and big O scalability. In school terms it would be more like a technician or vocational training around coding for particular types of projects.
- Sharlin 7y agoIn Finland, we have a two-tiered system where "proper" research universities primarily offer master's degrees, with a bachelor's just an intermediate step for most, even if they do not intend to pursue an academic career. So, a programmer with a CS degree likely has an MSc. In parallel, there are "applied science universities" that are typically not research-oriented, and by default offer bachelor-level degrees in more practical fields of study such as nursing and engineering (including software engineering).
- EpicBlackCrayon 7y agoI think there should be 3 different roles. Computer Scientists - Come up with the foundational algorithms etc. Software Engineers - Translate and map those foundational algorithms into more readily available tooling, occasionally directly building a complex system using engineering principles. Software Developers - Use the tooling created by software engineers to create user friendly solutions for the masses, aka developing apps or websites.