Some time ago I had a discussion with a younger friend that goes to university. The argument of the discussion is “what university misses to taughtâ€, this question arise because a lot of persons that comes out of university are not immediately productive in a company. Except people that had previously experiences while studying, quite often freshly graduated programmer needs some time to be really productive at work.
These days I was thinking about this specific discussion, and I realized that probably the reason is related to this post. I think that university misses the concept of Production (Wikipedia: Production(information technology). software or hardware in active use). When I was at university I did very interesting projects, but none of them was really gone in production. When a software does not go in production it does not become “aliveâ€, is like an unborn children, full of possibility, but still not alive.
Most of the projects in university are really interesting, but quite often the final goal of the student is to pass an exam taking the higher result possible, and this goal is really different from making good software. Major problem is that all those software that are build in university have not a target user, never go in production, so you can never know if you had build good or bad product.
This means that when you begin to work in a real company , the perspective of “making software†changes a lot, now you are writing software for real users, while you are used to write software for noone or at least for your teacher or colleagues.. Writing software for programmers or teachers can lead to some problems, I suggest you to read this book. Software must be written for real users, not for other programmers.
If there is only one thing I could suggest to a university teacher, I’ll suggest him/her to force students to write real software, put it in production, letting real users to work with it; in the meanwhile students must correct blocking bugs, planning next release, maintain database, doing backup, etc etc. I strongly thing that only software in production is Real software, maybe this can sound harsh, but I think that is really true.
Having some software in production makes you change the perspective you have on software.
alk.
Tags: Programming






May 18th, 2009 at 1:37 pm
Just one question. What will ‘real user’ do with this software after student graduates? Will he pay exorbitant amount of money to hire him to privide on-going support?
May 18th, 2009 at 5:01 pm
For real user I do not mean paying one, just one example, in the library of my university there was a little program to search for titles. The program did not perform well, but noone cares about bugfixing. Sometimes people creates programs for other person inside university, but program are not meant to “be used by others” but only to take an exam.
Sometimes we need to use programs written by previous students, and it was quite impossible to do a simple setup because there are no documents etc. Manteniance was simply impossible…
In these situation, these software were not put in production, noone excepts people who write them, used that program… and when the studend gone… that work was simply lost.
Putting in production does not mean that you must make money, just be sure that real user uses the program, or it is only an academic excercise with little value in real word.
alk.
May 19th, 2009 at 8:24 am
I didn’t mean that student should be paid for the development of the software, it is his/her assignment. However, he/she also not assumed to provide free support for the software after graduation. Also student is not supposed to be a jack of all trades i.e. in addition to the software development skills that are evaluated, be a UX analyst, UI designer, technical writer, trainer, and support engineer.
May 19th, 2009 at 11:26 am
Yes, but usually students creates little projects, so you can take two team composed of five person, assign a different project to each one, and tells them that each team is the “user” of the other team.
The goal is writing two little project, that will never be used in the future, but each team should “put project in production for other team”. They should make little interview with people from other group, they should use a bug tracker to signal problems, they should react to change request of other group etc, etc.
The project could be as simple as “build a telephone number management system”. The aim is to cover all ALM of the project, and finally put it in production to make it usable by the other team, even if it is only a single form.
alk.