Archive for the ‘education’ Category

What I should have already known about OO…

Monday, September 3rd, 2007

I recently had the opportunity to partake in a course on Object Orientated Analysis and Design. Over the course of 5 days, I managed to get a clearer understanding of OOD than I had in 4 years of University. The key? The obliteration of buzzwords, and the abstracting away from the technical implementations of OO. With what seems in hindsight a logical choice, our presenter seperated OO into two parts: Abstract OO and Concrete OO. The Concrete part of course deals with the language-specific features of OOP; Encapsulation, Dynamic Binding, Inheritance, and so on. Abstract OO on the other hand deals with the three foundations of the concept, as opposed to the implementation of it. These are Classification, Specialisation, and Polymorphism.

Now when I went to university, OO was taught hand-in-hand with a language. I’m starting to think that this should not be the case. The risk here is that the student, as I did, forms definitions for terms like Polymorphism in a Java/C++/C#/etc-only context. In reality, no language is the same and there are subtle differences in the way that each implements OO concepts. By splitting OOP into concrete and abstract concepts, the idea of Object Orientation itself is also much easier to grasp. I can now explain, without using buzzwords or just repeating the question, what terms like Specialisation actually mean. The same could not be said of me while I was at University- and the worrying thing there is the fact that I still scored quite highly.

What that means for the students who didn’t score quite as high as me is worrying- especially those who didn’t bother to learn things like UML- have they just spent <insert ridiculous amount of money here> on a 3 or 4 year degree without actually learning anything?

Teaching People About People

Tuesday, April 10th, 2007

One of the more common problems you think you’d encounter in the software/IT industry is the need to interact with workmates with little people skills. Indeed; the stereotypical image of a software engineer or programmer is one of a sad little man stuck in a cubicle away from the outside world, with only his compiler for company and a big mug of coffee. His most frequent interaction with people would be his boss quickly telling him how he needs to work harder, or perhaps a discussion with another, equally reclusive geek around the coffee machine.

Reality is a lot further from the this image than a lot of people think. That said, there are those among us who are quite happy playing dungeons and dragons and not really talking to people- and good for them. But there is an underlying problem with our workforce and its people- and it is one that most likely affects many other industries.

University can teach a graduate about many things. It can teach you about compilers, coding style, design, and the theory of programming and software engineering. It can teach you about how to drink quickly and have a myriad of adventures with the opposite (or perhaps same) sex. What university does not teach students is what to expect in the real world; how to behave in a professional environment, how to deal with a difficult workmate in a professional manner, or overbearing boss with unrealistic deadlines.

Work experience is often touted as a solution to this problem; it is not. Even work experience struggles to assist; often, the work experience “kid” is given menial tasks, not taken seriously, or treated as someone who brings youth to an organisation but no real talent or ideas. Part time jobs can’t hold a candle to a full-time position for much the same reason; and besides, there’s nothing like the day-in-day-out grind of the real world to shatter the ideals and expectations of a recent graduate.

What graduates and new starters need in this position is a scheme that allows them to settle into their environment. Not just a mentor who shows them the water cooler, parking bay and stationary bin, but a friend and experienced hand who can guide them through what is expected of them in their position, how much time they have to strive towards that, what they are and are not doing right, how to behave in a professional manner, and most of all someone a newbie can trust.

The unfortunate thing is that this doesn’t happen nearly enough, or with enough quality or care, in the industry. As a result, mistakes aren’t highlighted and corrected at an early stage in your career. Graduates are faced with people that have no time for them, or their mistakes, and certainly don’t have the time or care to talk to them about things. These graduates often have no way of knowing how to deal with these people; they were taught how to talk to a computer, but not necessarily a customer.

So how do we solve this dilemma? Universities would argue they’re there to help students learn how to ask better questions, and not to train them in the ways of the workforce. Organisations would argue that universities are sending them graduates who have little practical knowledge and no idea of how to act as a professional. And graduates will just sit there confused, wishing someone would take responsibility (while perhaps taking none of it themselves).

My best guess is probably that there has to be a coming together of all three elements. Universities have to start taking responsibility for the production of graduates with little practical knowledge or qualifications- some do this more than others- and look at ways to produce graduates with an ability to adapt to changing situations and technologies, and an ability to communicate well with others. A recent discussion with an academic member of the University of Western Australia’s Arts faculty yielded the interesting information that companies in the business of journalism don’t actually want journalism graduates. They prefer intelligent, politically-savvy students with a good understanding of a wide range of social issues as opposed to a student who has been ingrained into a particular style of writing and editing.

It is more than likely that the same applies to other industries. Industry has its role to play too, however. The onus is on companies to provide good graduate programs or mentoring schemes to help students adapt to professional life, and fill any gaps that university education may have not quite have had the time or resources to cover. Until this happens on a regular basis and with good results in large companies, I simply have to recommend graduates start small, where they may have more opportunities to learn quickly in a more intimate, people-driven environment.

Finally, there is also an onus on us, the graduates, to look out for what companies want in their new starters, and to learn at university what we need to be able to freely adapt in an ever-changing environment. Finally, we need to realise that there are some people who just have really, really crappy attitudes and/or unrealistic expectations of you out there; and that these people are the ones that we’ll have the most trouble with, not the quiet, socially-maladjusted geek in the corner. The key is to try and not let it affect you to much, and then one day, when you’ve coded enough, studied enough, and just done enough hard work, you might just be able to spring a suprise on them.