Educating ... Jon (among others)
This week we want to cover two topics related to education. The first relates to education in the formal sense, the second to that gained in the school of hard-knocks.
Back in our Oct. 25 blog post ("IT Must Be Magic") we continued a discussion on the shortage of young people entering the IT field. Those of you interested in the topic should check out part of an InfoWorld article titled, "11 programming trends to watch." The whole article is well worth reading, but the section headed "Programming trend No. 8: Traditional education fades from relevance" really grabbed our attention. Until we read this we had thought that hijacking talented high schoolers en route to university was something that only happened in the sporting world. Apparently not. It seems that some high-tech firms are actively pursuing the same approach. Interesting.
The article also references a Fast Company piece titled, "Silicon Valley's New Hiring Strategy." Has this approach been triggered by the shortage of IT grads or has experience simply shown that a degree in IT doesn't really prove that you can program in today's fast moving world?
This weekend Jon was doing some work with embedded SQL and had an "interesting" time debugging problems with one particular program. It hasn't done anything to improve his love/hate relationship with SQL, but he can explain why himself:
Susan has always been our in-house SQL person, but I've been doing more and more of it lately, particularly in PHP. I've also been using more and more of it in my RPG code. I want to like SQL--I really do. I have long been convinced that it's the right way to go--not for everything, but certainly for set retrieval and processing. I still have a gag reflex when faced by some of its more arcane syntax, but I am fighting that. Then just when SQL was starting to win me over ...
The embedded SQL query I was building was a simple one. Just a straight SELECT with a simple WHERE clause. In the past I've often done such trivial retrievals with a SELECT * into a DS defined by referencing the external file definition. But while I was building this particular one I found myself hearing the voice of IBM's Mike Cain telling me not to waste time retrieving data I didn't need. OK, I thought, I'll be a good boy and SELECT just the columns I need and specify them in the DS--how hard can it be?
Problem was I didn't get the DS right. I was tired and simply reversed a couple of fields. As a result the values I was seeing made no sense. Now I could swear that when I've done something foolish like that in the past the SQL pre-compiler berated me and told me that the structure was not usable. Not this time. Not a word--even though one of the fields was alpha and the other numeric. It seems to me that changes made in SQL in general, and the pre-compiler in particular, in recent years have allowed it to do a lot of implicit casting between different data types. I can only conclude that in that light IBM has relaxed the validation rules. Either that or my brain has gone completely to mush and I am mismembering the "olden days."
I was clearly having a bad day as I also accidentaly discovered that the pre-compiler doesn't issue an error if you specify a column name in a SELECT clause that doesn't even exist in the table in question. The result is an SQL 42703 error at runtime. At least the error message was explicit about the cause of the problem. Maybe I've never made that mistake before, but it really surprised me that the pre-compiler didn't catch it, particularly since earlier it had failed a compile because the table in question was not found in the library list.
What's the point of all this? Other than to demonstrate my own apparent incompetence? Basically I want to warn others not to make too many assumptions about what potential problems the pre-compiler will or will not diagnose. Sometimes our dear old RPG compiler spoils us and lulls us into a false sense of security!






Recent Comments