3 ms·
Much can be learned by looking at other fields which do complex "design based" work and are much older than Computer Science. In particular the various other e
by mdakin 18y ago
Much can be learned by looking at other fields which do complex "design based" work and are much older than Computer Science. In particular the various other engineering disciplines and the discipline of architecture. In these fields you go to school to get a broad-based exposure to the various facets of the field, learn the critical mathematics and language used in the field, get some in-depth information about some slices of the field which particularly interest you, and do some simulation of "real world" design work which involves the creative aspects, teamwork, etc.
When you come out of these programs you're neither an "Engineer" nor are you an "Architect" and using those titles next to your name is actually illegal. There is no expectation that the academic training produce a finished professional.
You then continue on another multi-year process of test-taking and working as an apprentice. Of learning the actual real world facets of the field. Facets which involve management, teamwork, business, people, design, how to deal with long, complex projects, scheduling, budgeting, etc. In short all the boring details which separate the dilettante from the professional.
Finally after you complete your state-mandated term as an apprentice you take some tests, submit a portfolio of your work to the government and assuming you are actually good enough you get your stamp, can use your title, and basically be counted on to do a professional job.
This system while cumbersome actually has a proven track record of working and producing capable professionals. Buildings often actually get built on time and budget and they rarely fall down onto people.
- fgimenez 18y agoDefinitely agree with apprenticeship. I've learned more through a couple hours of pair programming with an experienced coder than I did at the university. This isn't to say university is bad. Data structures, algorithms, etc.. should all come at an instructional level, but good design practices definitely come from coders. As a side note, is there any sort of organized apprenticeship program, or are we dependent on introductory training at a job/Open Source level?
- Dobbs 18y agoThe FreeBSD project has an institutionalized mentor program. So before/when you are raised from just an occasional contributor (someone sending in occasional patches) to a commiter (someone with commit access) you are given a mentor, who teaches you the culture/process/methods to commit changes. Not quite as good as a apprentice/mentor day-in day-out but it is supposed to work pretty well.