For the sake of interest translated the
last article by Joel Spolsky. Immediately I warn you that in some places translation may seem rather loose - this is done consciously for the sake of readability in Russian.
I also allowed myself to add to the article references to translations and descriptions of those words and terms that I thought would be incomprehensible to most Russian-speaking people, and also regarding which I strongly doubt the adequacy of my own translation.
Graduation projects and time management
It's amazing how easy it is to get an IT specialty at a top university without even learning the basic developer tools, never having worked in a team, and never having completed a course for which you won’t get the minimum grade just for participating.
Many IT departments were stuck in the 80s, teaching the same old, already divorced from the realities of modern soft building, course.
')
How do students learn about version control, bug tracking, team work, planning, evaluation, debugging, usability testing and documentation? Where do they learn to write programs longer than twenty lines?
Many universities have managed to convince themselves that the more the curriculum is at odds with the real world, the more elite they are. Humanitarian approach. Let us leave the training of real programmers of vocational schools,
red-brick universities and small schools endowed in the name with a bunch of points from a compass of the type “University of North Southwest Florida”. The World
Ivy League should give linear algebra, the theory of computation and Haskell, and all
trying IT departments try to raise their standards, throwing everything practical out of the curriculum in favor of more theory.
Don't get me wrong, this is
not necessarily bad . They at least replace Java with Scheme, though only because “they do this at MIT” (
Too late! ). And they teach students to think in a certain way. And, imagining how much the average IT professor knows about real programming, I would prefer the children to learn all this during the internship at Fog Creek.
Greg Wilson, a senior lecturer at the University of Toronto, gave a lecture at the StackOverflow DevDay conference in Toronto, which was fascinating, informative, and straight to the point. We got to talking and he told me about his last child -
UCOSP , which means All The Good Names Are Taken.
This is a consortium of fifteen universities, mainly Canadian, which organize joint graduation projects. They create teams of half a dozen future graduates to participate in open-source projects, credits and degrees. As soon as I heard about the program, I volunteered to sponsor a team that will contribute to Mercurial. Sponsorship is to pay a trip to Toronto for all participants and provide a programmer to patronize the team.
The
UCOSP blog reminded me why
student projects, although laudable, often do not provide anything useful . “One of the goals of this course is to give you a chance to find out what it is like to set tasks and then complete them,” Greg writes. “The clean exhaust is quite clear at the moment: in many cases, students do less this week than they could with a more ordered course of the same content.”
For their final year, college students have sixteen years of experience in short projects and postponing everything to the last moment. While you are not an undergrad, it is very likely that you have ever encountered a task that cannot be done in a night.
I have some experience with this - I worked with students from Rose-Hulman during their graduation project. We allowed them to choose their own schedule and, of course, they put off everything until the last minute and gave something incomplete. A typical IT assignment implies that a student will write an “interesting” part of the code (in the academic sense of the word). The remaining 90% of the work that is needed to bring the code to the “can be used in real life” level is never expected from undergraduates, because fixing bugs and dealing with real conditions is not “interesting”, and because most teachers never worked in The real world has no idea what it means to make programs that can survive a meeting with a user.
Time management is usually to blame. In a group of four students, even if one or two of them are active enough to start at the beginning of the semester, the rest are likely to slow down - there are always more urgent projects from other courses that need to be taken
tomorrow . Entrepreneurial students will be forced to choose between starting first and eventually doing more work than is fair and waiting for the rest until the last night. Guess what they choose.
Students have no long-term experience in team planning. Therefore, they almost always suck at semester projects, if they themselves plan a schedule.
When anything productive comes out of such projects, there’s probably weekly deadlines, and you’ve probably seen how all the work was done the night before the deadlines. It seems that long-term deadlines without intermediate milestones rarely come true, is an inseparable part of human nature.
Perhaps this is a great opportunity to try
Scrum . Once a week, the team gets together, personally or virtually, and examines the work over the past week. Then decide what features and tasks to do in the next week. FogBugz would be great for keeping track of all this. If you are doing a graduation project and need access to FogBugs - let us know and we will be happy to provide it for free. We can also arrange your access to klin, our hosting for Mercurial, which has code review.
I here accused students of lack of discipline in order to do a semester project during the semester instead of procrastinating, but, of course, the problem is also common among non-students. It took some time, but I finally realized that long deadlines (or no deadlines at all) are not suitable for professional programmers at all: long-term productivity requires a regular and frequent component release schedule. The only reason why in the real world it works is normal, but purely student teams fail, because in the real world there are managers who can set deadlines. A team of students, where everyone is equal, will not pull this off.