Back to school

19 September 2007

I've noticed since I got back from my vacation how quiet it now is during the day. All the kids are back at school and in my neighborhood a welcome silence envelops the street during the heat of the day. Mind you, the traffic during the early morning and late afternoon is a sight to behold as parents drop their kids off at school or collect them, but during my productive daytime hours, it's quiet.

So the little blighters are back in classrooms learning English and Mathematics and Civics ready to become the adults of tomorrow. What about us adults? Especially those in professional employment; not just doctors and lawyers, mind you, but also software developers and designers and architects. Shouldn't we be learning still?

My wife, who is a prosecutor, has to pick up Continuing Education credits in various aspects of Law, including the important ethics credits. To maintain her right to practice law she has to get so many credits per year, and they expire after three years. To get a credit you have to attend a lecture or seminar of some aspect of the law. In fact, she's just come back from a conference where she picked up the remaining credits for this year.

Ditto for professionals in the medical field as far as I understand. But we software people? There's no (real) professional body, no (real) requirement to stay on top of your profession. In fact, I would venture to say that the only reason some people keep up with new technology and ideas is to put them down on their resume (cynical, moi?). I still feel that the Microsoft certifications are more about learning stuff by rote and getting the initialisms on your Curriculum Vitae than any real connection with what you may see or do in your job (man, I'm being really cynical today).

And I'm staggered at some of the emails I get where the writer hasn't the foggiest about some standard computer science-y topic. No, I'm not talking about the pros or cons of B-trees, say (a subject still dear to my heart), but about people who discover regularly every now and then that fractional decimals generally aren't exact in an IEEE floating point variable. And that's even before you consider those people who have highly incorrect assumptions about Windows; topics that Raymond Chen does so well at debunking and explaining. Case in point: I was talking to a friend who was saying that an architect at his company was trying to convince him that many threads in a single process could lock the same mutex at the same time.

Look, this stuff isn't rocket science. It may have been at one stage, but that was an awfully long time ago when computers occupied entire buildings and you had to wear a white lab coat to program them. The basics of computer science just aren't that hard to learn. You certainly don't have to learn the concrete mathematics needed to prove some of the assertions; just accept the conclusions and move on. Ditto for Windows concepts and CLR concepts. There are any number of good books that talk about these things.

We, as a group, must not only learn about WCF, WPF, Silverlight and any other fabby-dabby technologies coming down the line, but learn about the basics of our business. That includes not only algorithms (my favorite subject), but also things like why they're called lambda expressions (what's lambda got to do with it? And what's this about a church?), why they're called regular expressions (what's regular about them?), why C# is moving to a functional programming paradigm (it is? and what's curry got to do with it all?), why multithreaded programming is hard (bwhahahaha!), what is the difference between latency and throughput and why is matters in our AJAX applications, and any number of other interesting basic questions.

So go on. Think of something that's puzzled you for a while, do some research on it, learn about it, so that you understand it enough to even write a blog post about it. And then do exactly that and let me know. Let's learn!

1 comment(s)
John Botibol

XAF !!! How's that then?

I found many years ago that developers are not expert in all things. You tend to know your primary language/environment well but only dabble in others.

A good example might be a Cobol programmer working on legacy mainframe stuff. What opportunity (within his working environment) does he have to develop skills in new technologies?

I have worked with PowerBuilder on a very large application used by my customers for some 12 years. Keeping up with new developments is very hard when 100% of your working time is spent with a single environment and product.

So now (for about 18 months) I have started with .Net and find it totally absorbing. We are using our experience and knowledge gained from 10 years of development and implementation of our application to build a brand spanking new version (of a significant part of it) using XAF which of course as a new unfinished product is quite a challenge and surely deserves a goodly chunk of CE credits (we call it CPD over here).

I think that in our case XAF will be severely tested since I have a target of 6 months to develop a commercial application with it. The concept of XAF as a tool for lazy programmers is most appropriate - especially for me!

As for the basics, I could not agree more. Hiring PowerBuilder programmers was a very disppointing excercise when one considered how little most of these individuals knew - use of OO was completely alien to many but this is what makes it so powerful!).

So, yes. I subscribe to your concept and have even started sharing a little of what  have learned in the XAF forum.

8 October, 2007

Please login or register to post comments.