(Not logged on) | Register | Log On

You can subscribe to this discussion group using an RSS feed reader. The Joel on Software Discussion Group

A place to discuss Joel on Software

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Capstone projects and time management

http://www.joelonsoftware.com/items/2009/10/26.html

"Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation?"

On their first real job.
quant dev Send private email
Tuesday, October 27, 2009
 
 
I think the biggest problem is the mistake that is often made (and Joel makes it here) that a "Computer Science" degree should prepare you for a job in Software Engineering, i.e. that the two disciplines are the same thing. They're not.

Unfortunately, many colleges don't offer both programmes and so there's a Computer Science degree that offers a bit of programming and software design and these are the courses students take and then Joel complains about for not being engineering focussed, when really that's the same as saying "the problem with most engineering projects stems from the fact that Physics majors don't know enough about project management".

Once we can get over the "job in computing <-> Computer Science degree" problem which has developed simply because, historically, that was the only course with a heavy programming content, and establish proper Software Engineering degrees in parallel with the Comp Sci degrees, we can direct students down the correct path based on whether they want a job developing useful software at the end of it or whether they want to delve deeper into what a computer "means", possibly as a stepping stone towards futher research into, for example, artificial intelligence, algortihm design, computational approaches in other fields, etc., for which they won't need to know about deadlines source code control and these modules can be replaced (not that they exist now) with more appropriate ones such as how to get money out of funding committees.
Rob Gilliam Send private email
Tuesday, October 27, 2009
 
 
I think I take sort of a middle ground between Quant and Joel's stances.

Whilst I agree that a graduate developer is going to learn all the day to day tasks of bug tracking, version control and source control on their first job I do think it's a universities job to make sure their graduates have a basic understanding of what these things are.

The courses that Joel is talking about seem to have the right idea, if maybe taking it a bit far, and will give a perspective to the students of how these things should work. It does seem a bit like playing poker on the practice tables though, until you do it with some money/pressure riding on it then your not going to learn it properly.

All the graduate developers in my team came in with no understanding of the basics of version or source control yet a number of them were taught masses about PRINCE2, ISO9000, z-notation and all sorts of other things that are definitely not relevant to them now and probably won't be for a number of years if ever. Surely it would make more sense to prepare them for working life with more vocational teaching.

I'm not suggesting at all that you should wipe out huge parts of the syllabus to accomodate this but how about making teams of students submit their work into Subversion (free to the uni) and then just take the versions as they are on the deadline. A lot of uni projects start with some skeleton code anyway so setting each group up with that skeleton code in source control and letting them add to it there would make sense. You could even drip feed them some features to ensure they version control properly.
Oobertom Send private email
Tuesday, October 27, 2009
 
 
Rob's right in that Computer Science is more academic than say a Software Engineering degree. The graduates I mentioned in my previous post however mostly came from Software Engineering degrees and still didn't have these skills.
Oobertom Send private email
Tuesday, October 27, 2009
 
 
I *wish* they could learn topics like this on their first job, but experience tells me that they seldom do...

At least a theoretical understanding of all the "practicalities" (is that a word ?) of software development would be useful.

Topics like bug tracking, version control and source control are important to understand, so that students that begin their first job can ask WHY they don't use any of these if they don't...and maybe they can argue why they SHOULD !
Atle Iversen (iKnow) Send private email
Tuesday, October 27, 2009
 
 
Hasn't Joel posted repeatedly over the years about how great top CS schools are? It looks like he is having a change of heart.

I have a masters in software engineering. It was all group work. Even then it really did not re-create the work environment. You also have issues with group projects where certain people do nothing.

I think students should do a capstone project EVERY year they are in school. You only learn thoroughly by repetition. If they just do one project they won't have anything ingrained in their head. So buy your 4th lifecycle as a senior you already know quite alot of things that don't work and what to concentrate on. t is like someone with a few years of experience over a newbie. They have routines and patterns that they follow.

I think this is how schools should handle preparing people to work.

Freshman year.
1. Project assignments come as soon as school starts. Assign teams from across the department. OK you will get stuck with some losers who drop out of CS, but teams can be changed and combined.

2. Have weekly due dates. Start them out by looking at websites or other programs and discussing what it is like to be on a project to produce work.

3. Have people from the industry come in and talk about what it is like to be on a team (attendance is mandatory).

4. Give them more work than they can actually get done. This way they always feel like they are behind. This makes it harder to wait until the last minute.

5. Have requirements gathering classes, project management, time management related courses early in the curriculum.

6. Build #5 into the curriculum.

7. Use the projects in a way to build a portfolio that they can take with them on interviews when they graduate.

8. Every year the project gets harder and more intense.

9. Students grade each other. If people don't do anything, they get an F by their peers.

I think reputation is important. Instead fo 1 capstone project you do 4. So by your senior year you have already done 3 and you know the basics.

You do not learn much from doing something once. That is like a college quarterback learning how to manage the clock for the first time just before he goes into the NFL draft.

repetition is good.
Contractor Send private email
Tuesday, October 27, 2009
 
 
I didn't get my degree to make my first boss happy. I got a heavy-duty theory-based comp sci degree for myself and my career. Summer jobs were a great way to learn the other parts of the job if you can work for peanuts.

And if you can learn the complex stuff then version control can be learned in a day. We taught ourselves how to use the version control software while working on our class projects.

New graduates we hire typically don't know about the real world practices. With some quick lessons and a few horror stories about what has happened in the past when procedures weren't followed they are up to speed on it in a few days
jz Send private email
Tuesday, October 27, 2009
 
 
The problem with having one large project (or more work than a student can reasonably do) is that students aren't just taking your class. Back when I was in school CS students took 2-3 CS classes a semester, and 4-6 classes/semester in total. If they have two classes designed to overwork a student at the end of the grading period (during finals), it could easily cause them to fail their other classes. That's not a good thing.
Mike Swaim Send private email
Tuesday, October 27, 2009
 
 
I've always thought that a good solution to this problem would be to refuse to admit anyone to the CS grad school unless they had a couple of years of real world experience.  When I was in school none of my TAs and very few of my profs have any real world experience.

However, I also think that Joel's point probably applies to most professions.  Teachers, lawyers, doctors, engineers - they all learn a lot more in their first few years on the job than they probably did in college.
Jason Send private email
Tuesday, October 27, 2009
 
 
Contractor's comment was quite good.

I'm going to point out that his degree was in software engineering, not computer science.  The term "Computer Science" is misleading down to the core.  It blurs the distinction between an engineering discipline and a science discipline.  The term "Rocket Science" is similarly misleading.  People who specialize in "Rocket Science" get engineering degrees, unless they switch from other fields. 

The hard core science disciplines like physics, chemistry, and biology study the natural world, not human artifacts.  Soft sciences like psychology, sociology, anthropology and economics study human phenomena, but they still try to be a science rather than a branch of engineering.  It's significant that the only people who use the term "social engineering" use it as a pejorative, and not as something they promote.

It's probably decades too late for this, but I think we would do well to jettison the entire buzzword "Computer Science" as worse than meaningless.

Engineering is fundamentally different from science, even though scentists and engineers both learn the same language and learn how to use the same tools.  A person who graduates with a Computer Science degree is completely unprepared to be an engineer.  What do you expect?
Walter Mitty Send private email
Tuesday, October 27, 2009
 
 
What was rough for me wasn't the transition from college work to the first job. 

Rather, it was from when I could work through nights and weekends to get stuff done to where I had additional reponsibilities, both at work and at home, that made it impossible.

When I was 25 and nobody knew my phone number, and I was coming home to a one bedroom apartment with no children, I could knock out a whole lot of code in a few days.

Now that I'm the person people come to with questions, and constant requests for quick estimates, and dance classes to ferry people to, and gutters that need cleaning and a lawn that needs to be mowed, etc., I can't close the gap as quickly as I used to.

I'm still not sure I've completely made that adjustment.  Part of me still wants to believe I can just put my head down and forge through it in a few focussed days.
John McGuinness Send private email
Tuesday, October 27, 2009
 
 
I think /programming/ is a writing and mathematics discipline, and belongs in the liberal arts.  Likewise, figuring out what the customer wants and testing probably belong in the social sciences along with anthropology.

Those choices would have drawbacks as well, but I think, overall, it would help us avoid all the various failures we fall into with "computer science"

http://www.dreamsongs.com/MFASoftware.html
Matthew Heusser Send private email
Tuesday, October 27, 2009
 
 
I keep hearing from academics that computer science is not programming and is not engineering. So be it. Most people go to college in order to get an education AND help them get a better job.

Create a major that includes programming and is engineering. Computer Science as currently orchestrated is not properly suited for prepare people for the marketplace.

Most computer science majors are studying it so they can either get a job or build their own software. Either way they need to learn the development process.

I stand by my statement. One capstone project will not adequately prepare someone. You only get good at doing something by doing it repeatedly. They should have a capstone project every year with regular deadlines. It should get progressively harder. Students should get enough work so they always feel like they are behind.

you can even include students testing other students and/or project team's code. Creating test cases to test the code....

to make it just like the real world, you can grab a management major who knows nothing about programming process and make him their boss on the team (I am half joking).

You really need a project/year to prepare people. This way by the time of the senior project you will get an almost "been there and done that feel". This way they can focus more on the quality of the application. They also know what it takes.

Lets faces it. Learning new things is hard. Once you know how to code, its really not that hard. Once you know what to expect the days don't seem as long. If you have repeated projects you get students closer to that level.

They also will get a portfolio that they can show employers. Students can go "I have been on 4 full development life cycles. I have tested my code and other students code. I have been a project manager. I have analyzed user requirements and written requirements documents".

AND I have done it 4 times. So it is ingrained in my head.
Contractor Send private email
Tuesday, October 27, 2009
 
 
Several people have said that Computer Science is not programming.  I think this is the core of the issue.  For a long time Computers Science has been a single field of study at many universities.  Some schools had these classes grow out of their engineering departments and some had them grow out of their science departments (or Electric Engineering).  Because of this, different schools tend to mean different things by "Computer Science". 

However in the last decade (or two), I feel, that the field has become large enough to segment this field into multiple disciplines.  One is the Computer Scientist: someone interested in getting a PhD (or ScD) and learning to research some of the important questions in Computability Theory, Algorithm Analysis and Perhaps AI or Cryptology (and the like).  Networking and hardware design is clearly another area that frequently gets grouped in here that should be broken out (Electrical Engineering perhaps as it is in some schools?).  Many schools already make the destinction between Computer Science and IT Managment.  There is clearly another field, Software Engineering, concerned with creating software corporate environment, either to support the company or as the product of the company.  Even in this field, developing software for internal purposes is significantly different than developing software as a product.  Finally there is a whole set of people interested in Compiler design, OS design, Language design, which again is a different skill set than those mentioned above.

I agree that an undergradute degree should have introductions to all of these areas but for someone to graduate with a BS or even a Masters and not have developed a focus on one of these areas is ludicrous.  We need to accept that the field of Computer Science has grown substantially in the last 50+ years and it is no longer small enough for one person, with even a PhD, to be an expert at all of these areas.

Until we agree on separating out the sub-fields, adding the things that people mention above to the Computer Science degree will only result in pushing some other important things out for those pursuing a more "Scientific" path.
Scott Frye Send private email
Tuesday, October 27, 2009
 
 
I gradutaed in May with a CS degree from a liberal arts college (it's a B.A. instead of a B.S.) and I've since started a job as a software engineer.  From my experience, everything Joel has mentioned is spot on.  I wish I had projects like Mercurial during school.  Anything so I didn't feel so lost when I started.

@quant, It really sucks to learn all of those things on the job.  Seriously.  Even having done them once before would be a huge help.  Plus, most of those topics are fair game during technical interviews.  I'm sure you can see the catch-22 that is developing here.  It's very difficult to learn those things on the job if I can't get a job because I'm unable to answer the questions pertaining to them during the interview.

Echoing the idea of Contractor, repitition for projects would be much appreciated.  Being thrown into a semester-long, self-designed, senior project when you've done nothing like it before is awful.

The areas outlined by Scott Frye are fabulous.  It would be great for curriculums to build in intorductory classes for each of the topics so no matter where students end up, they've at least seen/heard of the topics before!
Erin 'Ed' Donahue Send private email
Tuesday, October 27, 2009
 
 
I couldn't relate to this article much. Where are these people coming from that can't schedule their time or deliver products? It sounds like the students and Joel's people are as organized as a bunch of chickens running around with their head's cut off.

Here's what works. Work on your product every day. Work on useful things. Don't prematurely optimize, for example.

Keep doing something every day and before you know it you have done a lot.

Alternatively, surf the net and look at pron, and play video games, and chat every day, and get nothing done.

You don't need a schedule. A schedule isn't going to do shit for your speed of coding.
Scott Send private email
Tuesday, October 27, 2009
 
 
For example, do you know when the moon landing's date was scheduled? It was scheduled once they were ready. When were they ready? On the day they landed. They had the option of aborting if things weren't going well. The final decision to land was made as Neil scoped out the landscape on the way down.
Scott Send private email
Tuesday, October 27, 2009
 
 
This dude has different concerns than myself, but he has an interesting rebuttal to Joel's essay:

http://stochasticgeometry.wordpress.com/2009/10/27/joel-spolsky-snake-oil-salesman/
Scott Send private email
Wednesday, October 28, 2009
 
 
Considering the price of college these days, colleges should create curriculums that better prepare people to work. Colleges should come up with new degrees that better prepare programmers.

I think a kid who has gone through 4 full development life cycle simulations like I describe above is alot more prepared to work and will have an edge in getting a job over a kid who spent 4 years writing linked lists and is killer at explaining recursion for an exam.

I also think degrees should be more focused. This need for "liberal arts" curriculum for a programmer is stupid. It is your money. This is not a free education. If you want to learn about history, go to the library and check out a book (I read alot of history). If you want to go to school to be a programmer, I don't see what wasting half my courses (and half my money) on classes unrelated to my future profession. If you want to do that fine, but I think it is a waste of money.

College is too expensive for this. If you really only think people need the courses related to computer science now required, how about cutting down how many courses you need for a degree and saving people money? I don't think it is worth it to know about western civilization if it requires adding to a kids debt load when they graduate. Most liberal arts courses can be learned from books. Just read the syllabus if you want to know it.

This is from someone with 2 masters degrees. All of my degrees (including undergrad) are in related fields. So I have been around the college campuses. I also worked on a PhD. I have degrees from 3 universities and worked on a PhD at a 4th.
Contractor Send private email
Wednesday, October 28, 2009
 
 
"I don't think it is worth it to know about western civilization if it requires adding to a kids debt load when they graduate. Most liberal arts courses can be learned from books."

Rubbish.
quant dev Send private email
Wednesday, October 28, 2009
 
 
Agree its rubbish, it's total crap. More of the same crap that doesn't work isn't the solution. You can spend 4 years training to a language and API that has a half life of 5 years. By the time ANY college figures out that C# or Python is the next big thing, it is already past its prime. Look at MIT and their dedication to Lisp for decades past the point where anyone cared or the language had any legitimate commercial use.

An average music, physics or linguistics major is going to be of more use to a tech firm that primarily produces software than a CS grad from ANY US university is. Most all of the music and physics grads know tow to program, and more importantly know how to think, have common sense and perspective that autistic CS majors lack.

The CS curriculum is mostly not useful as a job training degree? True but completely irrelevant.
Scott Send private email
Wednesday, October 28, 2009
 
 
"Considering the price of college these days, colleges should create curriculums that better prepare people to work. Colleges should come up with new degrees that better prepare programmers. "

Not necessarily.  A college education is not always high level voke ed.  A classical liberal arts degree taught students how to think about a broad range of subjects.  Voke ed is better at teaching people what to think.  I don't agree with getting rid of the classical liberal arts education entirely.  Of course, graduates in those fields are going to have to get jobs based on general intellectual capacity, rather than specific technical preparation. 
That pretty much rules out a career in IT, except to the extent that generalists are brought in to oversee the work of specialists.

Having said that, I think it's a bad idea to have a liberal arts major called "Computer Science".  The name suggests technical education not general thinking education.  It's also a bad idea to have an engineering major called "Computer Science".  As I said earlier, engineering is not science.  And there are aspects of engineering that have little to do with computers. 

In fact, the era of the computer as a single multifunction information tool or appliance is rapidly drawing to a close.  Tools like ipods and cell phones are so cheap that having just one tool for all your "computing" needs is needless overloading of one device. 

What's wrong with calling it "Software Engineering"?  We could have bachelor's degrees in SE just as easily as master's degrees in SE.  The word "software" implies that you're going to learn programming, and the word "engineering" implies that you're going to learn version control, teamwork, and project coordination.
Walter Mitty Send private email
Wednesday, October 28, 2009
 
 
+1000 quant dev.

I've actually noticed a correlation between the more "career-oriented" CS programs and the "programmer myopia" that can become a major issue.  Though in fairness, it's probably the case that such programs draw the single-minded among us, so the curriculum isn't necessarily the root cause.

Also, since every software organization does things a little differently, teaching development practices could actually prepare students wrongly, which I view as worse than being under-prepared.

The important thing to remember is this: universities are not trade schools.  The purpose of a college education is not job training, it is to become educated, learn how to think critically, and expand one's horizons.  I don't mean this as a bunch of Ivory Tower nonsense, but as an assessment of the current employment situation.  Plenty of jobs requiring a college degree (most white-collar jobs, for instance) don't really make use of specific skills of any specific skills learned.  Nonetheless, the employer wants you to have the degree because of what it represents (to them at least).  That's why you need a bachelor's to land a generic office job where you put together simple spreadsheets and make photocopies all day.
Justice Walker Send private email
Wednesday, October 28, 2009
 
 
" Not necessarily.  A college education is not always high level voke ed.  A classical liberal arts degree taught students how to think about a broad range of subjects.  Voke ed is better at teaching people what to think.  I don't agree with getting rid of the classical liberal arts education entirely.  Of course, graduates in those fields are going to have to get jobs based on general intellectual capacity, rather than specific technical preparation. 
That pretty much rules out a career in IT, except to the extent that generalists are brought in to oversee the work of specialists."

I have 3 degrees. The music class did nothing to help me code. I could have learned the history from a book (I read alot of history). Sociology. Ok, neat, but doesn't help me with my job.
Learning liberal arts material does not make you smarter. I don't see how any of this increased my intellectual capacity.

"
I've actually noticed a correlation between the more "career-oriented" CS programs and the "programmer myopia" that can become a major issue.  Though in fairness, it's probably the case that such programs draw the single-minded among us, so the curriculum isn't necessarily the root cause."

you are comparing apples to oranges. The career oriented programmers are from the garbage for profit "colleges" that let any one in and doesn't flunk anyone. As compared to a college that will flunk 50% of its computer science 3 students.

Also to the guy who wrote about languages and how they change. Uh ok, what does that have to do anything? I didn't say focus on a language. I didn't say dont learn computer concepts. However, there  needs to be more work focused on how to build software for the people who want to go out and do this for a living. Those courses should be added and alot of the garbage liberal arts courses should be removed. None of this focuses on languages.

Most liberal arts can be learned from a book. People who need a teacher to teach them history, etc... are just too lazy to do it themselves.

I didn't say eliminate it, but have a specialization or an option to focus more on career goals. College is just too expensive. Kids can pay $1500-2000 for 1 westeran civilization class at an American state college (and that is in state). $2000? For 15 lectures and someone to grade a few test and some papers?

Go get the professors syllabus
by the book
if you like certain parts of the books or certain areas of study, ask the professor for an extended reading list. You will have alot of money left over.

Plus alot of colleges like berkley put alot of the basic courses on the web. so if you care about this material you can watch those lectures (some of them are very good btw).
Contractor Send private email
Wednesday, October 28, 2009
 
 
I have a couple of comments.
First, I agree with the people that college isn't vocational school. Teaching people a language because it's currently popular isn't a winning proposition in the long run, because it's a running target. In most of the places that I've worked, I've been expected to pick up a new programming language. Expecting college grads to have the particular skills that you're looking for is like those job postings with insane requirements. I'd rather hire someone good, and teach them our tools, than hire someone who knows our tools, and hoe that they're good.
Second, I don't see 4 year long projects being doable. The students aren't going to know enough the first two years for the exercise to be worthwhile. At Rice, we had team programming during our Junior year, and that seemed about right. We had 3 projects of about a months duration, and the projects were about the right size that we were busy the whole month. (And there were presentations to the TAs to help keep the teems on track.)
That pretty much leaves senior year. You could do a class, but I'm not sure how popular and useful it'd be.
Mike Swaim Send private email
Wednesday, October 28, 2009
 
 
Contractor, you're assuming that the point of History classes is to learn History.  Sure, you could get it out of the book.  Assuming that a person were to pick up the book.  But you'd be choosing the book yourself, you wouldn't be exposed to differing points of view unless you chose to be.  You wouldn't be forced into those 10-20 page term papers which teach you how to present a cogent argument and how to express yourself well.  And ideally how to handle opposing viewpoints.  It really isn't about the subject matter.  Anyone can memorize dates, but by that token, most people given adequate motivation can self-educate, so why bother with college at all.
noodling Send private email
Wednesday, October 28, 2009
 
 
@Contractor

"Most liberal arts can be learned from a book. People who need a teacher to teach them history"

Studying history != learning from a book. It's much more than that.

@OP

I can teach a monkey to use Subversion. It's much harder to teach someone why abstract interfaces are a good idea.
quant dev Send private email
Wednesday, October 28, 2009
 
 
"@OP"

Oh-oh. The OP is me :D
quant dev Send private email
Wednesday, October 28, 2009
 
 
Contractor:
"you are comparing apples to oranges. The career oriented programmers are from the garbage for profit "colleges" that let any one in and doesn't flunk anyone. As compared to a college that will flunk 50% of its computer science 3 students."

This isn't apples and oranges at all, you just misunderstood my comparison.  I'm not talking about people from some place that gets advertised on late-night television; these are (reasonably) well-respected schools for computer science.  They will often have a strong career-oriented bias, to the point of requiring work experience to graduate, and having courses with substantial focus on process and practice (software engineering courses, usually).

This isn't necessarily a bad thing, mind you.  But in my own experience, I do see a correlation between a more career-oriented curriculum and the sort of narrow-mindedness that often exists in working programmers.  And as I said, I'm not sure the curriculum causes the lack of perspective, but I don't think it helps by any means.
Justice Walker Send private email
Wednesday, October 28, 2009
 
 
Joel has finally completed the journey from Ivy lague CS grad to manager and bean counter.  I don't mean that in a derogatory way.

Joel has a penchant for hiring young people - I don't know why, but if you look a the pics of his staff they are all young.  He also expects lots of experience - real word experience.  Well, if you hire kids out of college and expect them to have real world experience I would suggest that it is the hiring manager with the problem - not the graduates or the schools.

Joel wants things done his way, and to be fair, he does it - and he is more than willing to back up his views with what counts - time and money.  Apparently it works for them.

Most other companies dealt with it fine.  It does not take long for smart people from CS degree schools to learn how to use SVN or work with a team.  Frankly I think this is a non-issue.

It took all of a week for me to use the version control system we were using at my first job, have a code review and learn to be a part of a team.

There's really nothing to see here.
Tim J Send private email
Wednesday, October 28, 2009
 
 
+1  Rob Gilliam
+1  Scott

Computer science (CS) is not a programming discipline.  At its core, CS is a discipline that is focused on the research and design of computational automata.  Making the assertion that computer science = programming is analogous to claiming that all computational automata are von Neumann machines. 

For what it is worth, my undergraduate concentration in CS was in computer architecture and system software design.  The  research that I performed at the graduate level was focused on  the hidden-terminal problem in contention-based wireless networks.    Neither of these two areas of computer science have much to do with the development of industrial software.  In fact, industrial software development is to CS what medicine is to life science (i.e., practitioner versus researcher).
Bit Twiddler Send private email
Wednesday, October 28, 2009
 
 
"It took all of a week for me to use the version control system we were using at my first job, have a code review and learn to be a part of a team."

Good point.  I think that, for most people, it takes all of a week to learn how to use a version control system, once they realize that version control is a good thing.  It takes people anywhere from five minutes to five years to accept the idea of verion control and to acknowledge that it's worth some effort.

Most people begin to learn how to be part of a team in kindergarten, or  earlier.  People who reach graduate school completely unequipped for teamwork are not going to be changed by formal learning. 

In the trade off between depending on your team and depending on yourself,  the right balance depends wildly on the circumstances.  There a projects and roles in projects that call for a lot of individual effort, and relatively little teamwork.  There are other projects and roles that call for teamwork first.  People who can adapt well to many points along that trade off are rare.
Walter Mitty Send private email
Thursday, October 29, 2009
 
 
+Bit Twiddler

What you had to say about CS is more relevant than what I had to say, and it changes my thinking a little bit. Your explanation of what you did as a CS student clarified the topic somewhat.

Your answer raises several new questions:

What's the career path between CS studies and a career in industrial software development?  Is it to just get a job where one can learn engineering on the job?  Is there any formal path of study that can aid that transition?

How do we get colleges and universities to stop calling their SE major a CS major, so as to make this distinction crystal clear?  Should there be an undergraduate SE major?  Should there be a preparation track for SE in Community Colleges?  How about high schools? 

How do we get people like Joel to stop expecting people who graduated in CS to have the same skills as people who graduated in SE? 

What kind of career does a degree in CS prepare one for?  How many researchers are really needed in this field? 

On a more personal level,  when did you decided to leave the reasearch track and get into the industrial track, if you did?  Was it a conscious decision?  What happened after you made that decision?  (Feel free to ignore these questions, if there are too nosy).
Walter Mitty Send private email
Thursday, October 29, 2009
 
 
I did not leave the research track for the industrial track.  I was a software practitioner before I was college graduate.  I started out in the field thirtyyears ago as an enlisted computer programmer.  Because my active-duty service period fell between the discontinuation of the old G.I. Bill on 12/31/1976 and the institution of the Montgomery G.I. Bill on 7/1/1985, I was pretty much on my own for college (VEAP was a cruel joke).  Computer science (CS) is my passion, but industrial code has paid the bills for most of my career. 

In my humble opinion, the emphasis on producing coders for industry has destroyed the average CS program.  I do not believe that industrial software development is a degreed profession.  In my humble opinion, industrial software development is a highly skilled trade that would be better taught through a structured apprenticeship program.  Like many highly skilled apprenticeships (e.g., machinist), the apprentice would start by receiving a foundation-level education before entering the workforce.  Once in the workforce, he/she would have to work his/her way up through the ranks before reaching fully accredited status (a program lasting around ten years).  The uniformed services take this approach to personnel development, and it works very well.  In my case, I attended naval “A” and “C” schools as well the National Cryptologic School.  Had I remained a technical practitioner in the military, I would have probably reached the grade of “Chief Warrant Officer” (warrant officers are the top technicians in the U.S. military).
Bit Twiddler Send private email
Thursday, October 29, 2009
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz