babellog

Monday, September 06, 2004

Technical Gap between Generations

Already in the hacking world people strongly feel that new generation of hacker are not skilled enough. However that’s not what I want to talk about. If you notice at Universities initially they taught C and then Pascal became popular as a teaching tool even though real programmers don’t use Pascal. I definitely think there was little knowledge loss when the transition from C to Pascal happened. Now universities are moving towards Java, as a teaching tool, to teach data structures and algorithms. Although Java might be a good tool to teach algorithms and data structures, I think it hides lot of low level details (concepts) from the programmer. Recently I saw someone writing a file handling program in C without actually understanding concept of file pointer which introduced a bug which he couldn’t fix it for two days. Like languages there is a transition on the operating system too, *nix to Windows (take any company in SL and the 90% of the development platform is Windows, and I guess (not sure) Unis too mostly using Windows platform). Again developers are loosing the needed skills. I have seen people trying to use Excel macros for hrs to do a job which can be done using awk in couple of lines. May be I am just seeing a technical gap which really doesn’t exist, or do we have a real problem t address here?

18 Comments:

  • At 7:14 PM, Anonymous Anonymous said…

    Excuse me? But do I hear someone saying that it would take hours to do a simple task in excel which you can do in a few minutes in awk. Ok, I don't know about awk (windows user... bleh) But still, a friend of mine (guru on awk) basically performed the same task in almost the same amount of time, one used excel formulas + filtering and another one using awk. I think it's all to do with Pattern matching and once you can identify the pattern, wonders are possible in Excel. Ok, maybe what you say about the lower level stuff not being taught to students etc might be true, but nowadays, being inventive is rather boring, as almost everything is already out there, if it weren't, would it be so difficult for us to recommend/suggest a project idea for a person/student that has been never done before?

     
  • At 10:03 PM, Blogger longdeparted said…

    well, does it not all depend on which details are being hidden and which are not ? To use an imperfect analogy, in the old days of cars and airplanes, everyone had to be a mechanic. It was in the nature of the machine to transport first, and be userfriendly later. That's hardly the case nowadays, is it ? Yes, understanding the arcane features of internal combustion engines helps you become a better ... something, maybe driver. But is it necessary ? No, not really.

    In every generation, you get the people in CS (probably everywhere) who want to know everything about computing, who want to know one specific area about computing, who are in it for the money, and who are doing it because their sibling/parent/neighbour/relative was doing it. At least some of those categories are content to be "adequate" rather than "godlike" in their CS skills :)

    In short, every year, there is a percentage of people who are interested, a percentage who will translate their Java/Pascal/whatever learning experience into general concepts for themselves. Universities can't (and IMNSHO, shouldn't) teach everything. Because there are a boatload of folks doing CS nowadays, the interested crowd are a ever dimnishing ratio among the people who just want to get by. This isn't a bad thing. Technical skills aren't the only thing that the marketplace needs.

     
  • At 10:25 PM, Blogger edg said…

    I agree with Thimal on the fact that uni's shouldn't teach everything. The university should impart enough knowledge to enable the individual to learn on their own after their uni life is over. Else they will be always dependant on someone to teach them. And in Sri Lanka there is this bad habit that students want to be spoon fed and most educators seem to oblige.

    As far as the basics are concerned, I think a good CS person should be aware of his environment. Now since there are no restrictions on the resources we have gottenn lazy and performance is not an issue. This is just one particular aspect.

    But aren't the CS people the car builders and not the users?

    As for using excel, I've seen it work, I guess as long as you are good at something and can solve your problem with what ever the tools at hand be it awk, sed or excel it doesn't matter as long as your job gets done within the time frame.

     
  • At 10:52 PM, Blogger longdeparted said…

    Hmm, it depends. There are those CS people who metaprogram, build tools for developers (the Visual Studio crowd, Guido van Rossum, Larry Wall, Dennis Ritchie etc etc). There are also those who use those tools to build products for end users.

    Ask yourself which category of CS person is more commonly found in the wild ? *grin*. Very few of us are car builders. We're just bus drivers with varying degrees of skill and specialization who take the teeming masses to some place they (hopefully) want to go (with software).

    About the Excel guy or the filehandle guy in the original post... well, I consider myself a programmer. But for some reason, I found functional programming incredibly hard to grasp at first. I spent literally weeks wrestling with it. (One day, something went click inside my head and things cleared a bit). But wrestling with something innocuous is something we all do. Everyone has their own personal technical demons. If you're smart and motivated, you'll find out what you did wrong and not make that mistake again. Maybe you'll find a better/faster way. It's the process of exploring alternatives that counts, I think. Not always how long you spent getting over a fence :)

     
  • At 11:39 PM, Blogger edg said…

    True, agreed depending on the time you have. But some times you have to get over that fence as fast as possible. But in the long run your method is the best its just the we don't seem to have that luxury.

     
  • At 11:46 PM, Anonymous Anonymous said…

    Nice comments, I must say. I know the topic has gone a bit haywire now, but what I was trying to point out was, as edg was saying, the real way of solving the problem was to solve it in the shortest time with the easiest (to get/use) resources available. I've heard that Linux is cool and that regular expressions are really powerful, but just imagine, a poor ol' developer (tea maker at office actually) needs to go grovel at people's feet to be given access to Linux on the "Servers" (Gods) with such limited access, that you need to spend more time grovelling than learning, that you finally end up trying to use something available a lot easier. And don't start the conversation about installing Linux at home, because that I'm not going to do, as I still need all the ease of use of Windows (without the having to learn for ages part).

     
  • At 12:16 AM, Blogger longdeparted said…

    *cough* discreetly points Anonymous towards Knoppix. No install or grovelling or painful partitioning required, I promise :) But yes, I see your point.

    Well, best method aside, I find that I spend a lot of time doing my own personal post mortem on jobs. Especially if they caught my attention with the sheer drudgery. Finish the job ASAP, by any means possible(my personal catchphrase for this is to "fling myself across the line"), but spend a little bit of time from somewhere to explore alternatives. It need not be in time for the next job, nor even this year.

    It's an investment the same as learning keyboard shortcuts for your favourite editor. It's not going to "seem" faster immediately, but over time the productivity does tend to add up.

     
  • At 9:12 AM, Blogger 88Pro said…

    I think the examples I gave took more priority than what I was trying to say.

    1) Is there a technical/skill/knowledge gap in the industry between generations?

    2) If we consider the programmers as the Car builders, aren't the car builders supposed to know all what the previous generation of Car builders knew and more?

    3) Does this knowledge gap happen in the other industry? e.g Aeronautical Engineering?

    4) If we answer the first question “NO GAP” then that concludes everything? If we agree there is a gap, and then is it a good or bad? Like gumz says may be it helps us think in abstract terms rather than low level details, or like thimal says who ever seek knowledge shall get it (not the masses that pass out from CS course) that’s enough for the industry to survive?

     
  • At 9:02 PM, Anonymous Anonymous said…

    Ah, the truth comes out. Well about your questions, firstly, I think that there is a gap between generations, but my next question is, is this gap good or bad? I mean, in those days, there were a few languages, skills to get, now there are so many out there, you have learn one and then you hear there's another one out there, that might be better. So what do you do? I would prefer to specialize in one? I know that, that's not a comment for a forum like this, but one thing I think is true that you can never have space up there among the noodles for everything.

    About the car builders, don't you think that a new mechanic would ever know how to fix an old mini or something? Or even more, a mechanic who has been fixing only minis, doesn't want to touch a computerized engine? Maybe it's the old programmers, low level guys who keep saying that the new tools, eg. excel, java, etc. are not what we should learn, the same way the old mechanics say that the new cars are too complicated and first you should learn the mechanics of an old car, before trying to create a new one, although there are newer and easier ways to build a new one.

    I think this knowledge gap appears in other fields as well, ask a new accountant to try to use the books to maintain accounts and he can't because he's so dependent on computers now. (My thinking... open to discussion)

    Well, if it's a problem is something that we all have to see as their own choice I guess. Some people might consider knowing the beginnings as a stepping stone towards knowledge of the new stuff, some people instead might think that if you know the end, you already know the beginning. My thoughts again.

     
  • At 9:36 PM, Blogger longdeparted said…

    Hmm, ok :) to answer point by point:
    Is there a technical/skill/knowledge gap ... Yes, there is. But this isn't because the new guys are uninformed/less inclined to learn, but rather because the expectations of the industry are different and also because there are larger numbers (thus a higher absolute number of average joes). That's just two reasons, I am sure there are many more.

    If we consider the programmers as the Car builders.. But how far back should they learn ? Should every programmer learn assembly, since they are, after all, programming for a specific architecture (or three) ? Isn't it (also) a matter of experience ? Even more specifically, does a Daimler Chrysler engineer know all about the design history of BMW cars ? I'm not sure they do, or even need to.

    Does this gap happen in other industries ... Well, I'm not sure software engineering is like any other industry; both in terms of diverse development practices and expectations of the finished product (areonautics are much less forgiving of crashing bugs, obviously *grin*)

    If there is a gap, I think it's not bound with generations. It is perfectly possible to have 20 years experience in COBOL and still be a worse programmer than a guy just out of school.

     
  • At 3:06 AM, Blogger edg said…

    To take the car analogy a step further,

    Its like comparing a racing car and a family saloon. Fine detail to weight, efficiency is not considered but comfort and driving easy is paramount with a family car which anybody can drive, however the racing car lacks all the comforts and its a more tedious and better takes more time consuming process and requires an expert to drive it.

    We need both of it. CS people with a broader back groud will always have an edge over the run of the mill CS guy. Furthermore advances made in racing cars will slowly come down to Family Cars as well. So we need both of these groups. We need the guys who are still involved at the lower level and others who are involved at much higher levels.

    An industry such as the computer industry is very dynamic and you might have to learn something totally new some day, but if we take accounting the basic priciples have remained the same for centuries. Same with doctors, new technology might come but the liver will always be in the same place. The knowledge that he/she has never becomes redundant.

    However the CS professional has to acquire totally new skills, for example the shift to Object Orientation.

    Key things for a CS guys are

    1. the ability to solve problems
    2. how you use your knowledge

    which I guess comes with experience and a creativity. Thats one way you can sperate a good CS guy from the hordes that are being churned out cause learning a lanuage is not the tough part.

     
  • At 8:51 AM, Blogger 88Pro said…

    This comment has been removed by a blog administrator.

     
  • At 11:36 AM, Anonymous Anonymous said…

    Very nicely said edg. I must say, that was exactly what was on my mind as well. But I think as most of you agree, the average "core" programmers think that all the "non-core" or rather "basic run-of-the-mill kind of guy" like me, are not competent enough. That's true, I agree with edg, that they are also needed in the industry, but (note the but) there should be some limit to the level of incompetency. I've seen people who say that they don't know how to use the basic functionalities of windows either. But (note the but again) where would computer admins or BOFHs be without those guys?

     
  • At 12:49 PM, Blogger 88Pro said…

    This comment has been removed by a blog administrator.

     
  • At 12:50 PM, Blogger 88Pro said…

    This comment has been removed by a blog administrator.

     
  • At 1:26 PM, Blogger edg said…

    test

     
  • At 7:15 AM, Blogger 88Pro said…

    The bloger looks healthy now:-) and I like the way the topic has evolved.

    The main reason why we can’t compare other disciplines and Software engineering is as edg correctly points out, “Maturity”. For example if we take accounting, it has been there for 100s of years and the practices have been perfected. However, we are still figuring out how to build software right. Still experimenting loads of methodologies, every now and then new methodologies are popping out. Still we are figuring out how to test the products we developed (One of the chapters on Testing off a Software engineering book couple of years back said testing is still in its infant stage). May be in 100 years (or more) time we would have figured out how to build correct, reliable, robust, efficient, easy to use, valid, maintainable, evolvable, reusable, and portable software without cost overruns and schedule overruns. May be then software engineers will be like today’s accountants and doctors. Just a thought.

     
  • At 7:24 AM, Blogger 88Pro said…

    Since my comments didn't get published properly, I have tried multiple times and there were same copies of multiple comments today, so I had to delete some. Looks like there were some hardware failures at blogger end yesterday. Here is what the blogger support said.

    "We had a simultaneous failure across multiple machines responsible for the publishing of Blog*Spot blogs, but this issue has now been fixed. To prevent this type of outage in the future, we are performing a full system audit to ensure that proper redundancies are in place."

    Something interesting to read
    The Secret Source of Google's Power

    Got that link from one of my friend's blog.

     

Post a Comment

<< Home