Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. No one teaches PROGRAMMING any more

No one teaches PROGRAMMING any more

Scheduled Pinned Locked Moved The Lounge
155 Posts 78 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Ray Cassick

    They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


    FFRF[^]


    K Offline
    K Offline
    keisal
    wrote on last edited by
    #56

    Well Im proud to say that the course I am taking is teaching programming. Our tests consist of solving problems by creating a program from scratch on paper.

    1 Reply Last reply
    0
    • R Ray Cassick

      RAD is not the problem really. I was seeing a downfall of education at the same time. I think RAD tools enabled people at a great degree. Unfortunately managers saw what they could do and suddenly many people found themselves with the title of developer even if they did not think they were. The quick 'wants' of business were as much at fault I think.


      FFRF[^]


      M Offline
      M Offline
      Member 4407942
      wrote on last edited by
      #57

      I think that most of the people reading this thread will agree with your premise. However, some of the things that were pointed out have a lot to do with the "lack of teaching/teachers": - Students aren't really interested in "learning", they just want to do the minimum to get by, and get a paycheck. Unfortunately, they don't take the time to consider what it takes to do a great job doing this stuff, especially if they have to "compete" with someone who is doing this because they love it. I consider myself fortunate that I have found something that I really like to do that I can get paid (fairly well) to do. [Thanks Dad for explaining this "fact of life" to me.] - People who "really" know how to program, and how to teach "good" programnming, are in short supply, and will continue to be so until the pay for teaching allows talented programmers, who think that they "might" want to teach are willing to try it out. However, I have a friend who tried teaching at a local university, and was appalled by the "tell me what I need to know to pass the class" mentality of the vast majority of the class. Many were only taking the class because of the prospect of getting a "decent" job was better for those with a "computer science" background. :-( Bob

      1 Reply Last reply
      0
      • A Anton Afanasyev

        As funny as it sounds, it really is a sad state that CS is in right now. I, personally, blame outsourcing.

        "impossible" is just an opinion.

        A Offline
        A Offline
        Atle Bjanes
        wrote on last edited by
        #58

        Hello folks, I'm de-lurking here to get some advice: I do have a formal CS background having taken a number of classes in CS while getting my BS and MS in EE and continued writing software for machine control for 15-20 years now. I will be teaching a class for our two home-schooled daughters and a handful of their classmates this fall using a text called "An introduction to Programming using MS VB 2005". The text book and accompanying teacher's handouts, class notes, work sheets etc are geared towards becoming proficient (at high-school level) in VB2005. My question to y'all is what would you do/teach/focus on to ensure that a proper foundation is laid for the kids to want to choose programming as a vocation later in life? Some thoughts I have would be to require to see pseudo code for each programming assignment prior to coding as a means to help them learn the abstract thinking required to become a programmer? Any thoughts? Thanks! Atle

        modified on Tuesday, May 13, 2008 8:46 AM

        C C 2 Replies Last reply
        0
        • R Ray Cassick

          They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


          FFRF[^]


          M Offline
          M Offline
          MRLacey
          wrote on last edited by
          #59

          My theory is that application development is taught because the world wants more than just programmers, it wants people who can do the myriad other tasks involved in software development as well. Yes, in an ideal world everyone would be able to do both/all. But we don't ....

          1 Reply Last reply
          0
          • L Leslie Sanford

            Chris Austin wrote:

            I had one guy get incredulous with me when I asked him how he'd implement a simple b-tree. I think we have lowered to bar way too much.

            Hmm, I'm not sure I could answer that one off the top of my head. B-trees[^] are rather non-trivial, aren't they? Or maybe I just haven't studied them closely.

            C Offline
            C Offline
            Chris Austin
            wrote on last edited by
            #60

            Leslie Sanford wrote:

            I'm not sure I could answer that one off the top of my head. B-trees[^] are rather non-trivial, aren't they?

            Not in simulations and art pipelines. Similar data structures are commonplace. Besides, I wasn't looking for a balancing algorithm on top of the structure and he claimed to know his structures on his resume.

            A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - -Lazarus Long

            1 Reply Last reply
            0
            • T T Mac Oz

              Chris Austin wrote:

              I had one guy get incredulous with me when I asked him how he'd implement a simple b-tree.

              I'd be incredulous if he didn't just say, "I wouldn't, I'd grab one of the myriad tried & true, publicly available b-tree implementations that are already out there". Requesting simple example code is a good way to weed out those who can't code from those who can but isn't code re-use supposed to be one of those things a GOOD programmer strives for?

              T-Mac-Oz

              C Offline
              C Offline
              Chris Austin
              wrote on last edited by
              #61

              T-Mac-Oz wrote:

              but isn't code re-use supposed to be one of those things a GOOD programmer strives for?

              It's great when you have a structure in your framework the meets your performance requirements or deployment target restrictions. When it doesn't a good programmer needs to be able to roll their own.

              A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - -Lazarus Long

              1 Reply Last reply
              0
              • J JPaula

                1. Yes. You are missing a lot of information that would enable you to code better, be more productive, deliver a better and less buggy product. 2. There is no gain in turning off Intellisense. Who has to know a million instructions from the top of the head? Working with Java or .Net is not the same as working with an 80 instructions language from 20 years ago. What you need is basic understanding of how a computer works and what goes on behind the "magic" of high level languages. You need to understand binary math in order to understand what is behind a conditional instruction in your current language. You need to understand what a pointer is, so you know what is going on when you pass a parameter by reference or by value or what happens when you do a "a=b".

                I Offline
                I Offline
                isandburn
                wrote on last edited by
                #62

                i am one of those young programmers that loves intellisense, code snippets, etc. and thank you to anyone that makes programming easier!!! however, i am also one of those programmers that was originally taught at a U.S. univeristy how first program on paper, then C, and the C++ (and yes we covered dynamic memory allocation/deallocation, templates, etc.). i completely agree that to be a great programmer, you must understand the "magic" behind how it all works. i'm a .NET guy and professionally, i write lots of server side code where i don't have lots of "fun" drag n drop opportunities, but rather just use straight up C# - and to be honest, .NET is programming candy because it's so easy, yet powerful. but don't be fooled - high level .NET languages all compile down to MSIL (which is striking similar to what C++ compiles down to) and is run on the CLR. if you want to play around with this psuedo assembly stuff, just toy around with the System.Reflection.Emit namespace or the MSIL Disassembler. all of this .NET stuff are thing that the univeristy didn't teach - so let's disspell the degree/self-taught argument now - different things work for different people; in the end, the better programmer will prevail. so in my opinion, teaching both the science and art of programming isn't necessarily dead, but there certainly are lots of folks taking short cuts or just haven't been exposed to the full range of fundamentals or advanced topics of programming. there... i'm done! :)

                1 Reply Last reply
                0
                • R Ray Cassick

                  They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


                  FFRF[^]


                  G Offline
                  G Offline
                  GoodSyntax
                  wrote on last edited by
                  #63

                  Having risen through the college system and through the corporate ranks here are some observations: Colleges are not focusing on the fundamentals of programming, namely Systems Analysis, Workflow Logic, Structured Programming, the Low Level details of WHAT the code is ACTUALLY doing and finally the Human/Computer interaction basics (such as good UI design). I have seen a shift away from the detailed understanding of programming to a more high level practical understanding of the Framework/IDE that they are trying to teach. It seems this industry is trying to turn everyone into programmers by dumbing down the prerequisites and wrapping everything up in a shiny IDE that does a lot of the heavy lifting. This, ultimately, leads to lazy programmers who don't have the solid computer science and logical concepts to grasp what their code is doing at a low level. Unfortunately, we are creating a generation of script kiddies that can't code outside of an IDE that provides most of the programming structure/objects for them. For those who went through the Computer Science tracks during the 80's, I'm sure that you will agree that instructors were engaging in the same level of learning and discovery as the students. This led to a more inquisitive environment that made graduates more well rounded at both a conceptual and practical level. Many modern colleges have turned into maketing companies that tout courses in whatever the hottest platform of the day is (RUBY, .NET, etc.) and eschewing fundamental courses such as COBOL (don't laugh, even though it is an ancient platform, it is a great class for structured programming concepts), and C/C++ and even the more general Networking (TCP/IP) and Systems Analysis courses. Another observation, and this is more of a cultural phenomenon is that young developers today simply are not as driven to put in the hours to learn the details of their profession. Granted, I am broad brushing and there are A LOT of great programmers that recently graduated, but this Millenium Generation needs instant gratification and suprisingly lacks the dedication to their profession that previous generations had. Programmers from yester-year were enginneers first, always trying to make things better, to understand fully what was going on, to provide real value with the software that they created. Newer programmers are in the field because it pays well, has a high degree of job security and is relatively easy. Finally, and I mentioned this before, today there is a flood of IDE's, 3rd party c

                  K D 2 Replies Last reply
                  0
                  • C Christian Graus

                    Someone the other day posted their VB assignment ( in university ). It was 'name your 10 favourite properties of VB.NET controls and why you like them. The OP was asking 'what's a property' and 'what's a control property'. I think CS is dead, I am considering changing careers.

                    Christian Graus Please read this if you don't understand the answer I've given you "also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )

                    P Offline
                    P Offline
                    Pierre Leclercq
                    wrote on last edited by
                    #64

                    Christian Graus wrote:

                    I am considering changing careers

                    why that? If there is a lack of people who can do the job, then you are welcome to do it right. No?

                    U 1 Reply Last reply
                    0
                    • R Ray Cassick

                      They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


                      FFRF[^]


                      B Offline
                      B Offline
                      bit_cmdr
                      wrote on last edited by
                      #65

                      Let me start by saying I absolutly agree. A lot of posters have stated that there has been a shift away from fundamentals and more towards the IDE again this is sadly true. When I was in college myself, the last half of my senior year the university decided to stop using C++ as the core language for CS and use Java. There isn't much significance there except that the reason behind it was to try and teach with a 'more popular' language. (Don't get mad at me for calling Java more popular, at the time it was a rising star over C++ in the industry) The problem there is that now you have access to built in libraries that honestly, while you're learning, you should be building yourself. To someone trying to learn programming it does them no good to call a library and use a pre-built Linked-List or Stack, once universities start going down that road they lose the ability to truely teach what those data structures actually are and what they do. One thing that I firmly believe each student should have exposure to is assembly code. Even one course makes all the difference, it is the most basic and fundamental code and what everything revolves around. Even a basic understanding of machine language through assembly code allows for a much broader knowledge of what's actually happening when someone runs: string greeting = "hello world"; I started in grade school with Logo. Go ahead and mock Logo, it's not really a language but it teaches very basic programming to young children. The next time I had a class was in high school and it was Turbo Pascal and beleive it or not, we had to have the program working on paper and be able to count in binary before we were allowed near a computer. (Which was probably a good thing since once I got in front of one I made a fake dos shell that would start by displaying a command prompt and then pretend to format the primary network drive then it would say file not found or command not recognized for everything else afterwards. Scared the piss out of the instructor, he didn't like me very much after that.) All that said and all of what everyone else has said, it's a good valid point. Not many places actually teach programming anymore. Here's a question for everyone, as programmers, what should we do about it?

                      - Arcond

                      1 Reply Last reply
                      0
                      • J JPaula

                        1. Yes. You are missing a lot of information that would enable you to code better, be more productive, deliver a better and less buggy product. 2. There is no gain in turning off Intellisense. Who has to know a million instructions from the top of the head? Working with Java or .Net is not the same as working with an 80 instructions language from 20 years ago. What you need is basic understanding of how a computer works and what goes on behind the "magic" of high level languages. You need to understand binary math in order to understand what is behind a conditional instruction in your current language. You need to understand what a pointer is, so you know what is going on when you pass a parameter by reference or by value or what happens when you do a "a=b".

                        D Offline
                        D Offline
                        dfl
                        wrote on last edited by
                        #66

                        (warning: mild flame) As a programmer, I feel uncomfortable reading such a holistic reply. I do *feel*, like you, that it is important to understand the fundamentals of the machine and the relationship between high level functions and low level actions. However, just stating this feeling does not constitute a reply. Many people feel that there was something special and "profound" in their particular upbringing. However, very often this is an illusion. My fortran teacher, back in the late 80's, told me that programming in an IDE was not the real deal and did not give you a true sense of what you were writing. However, he was actually talking about himself. Every generation feels that the subsequent one is shallow and lacking some profound understanding of the world. This is no more than a psychological phenomenon. To explain why an understanding of a digital computer, pointers, interrupts, signals etc. helps programming, you need to give concrete examples.

                        E J 2 Replies Last reply
                        0
                        • R Rahul Ravindran

                          Being from India as well and undergoing my college course (1st year), I completely understand and agree with cpp.samurai. I think you are overestimating C++ in India. Forget "new" and "delete", my teacher barely understands what pointers are which naturally spills over to the students as well. In my opinion, I find programmers in US, UK, etc are vastly superior. Obviously, I am judging by the people *I* meet which happen to be teenagers. I just don't find that kind of spirit here. Out of the 60 students in my class for my course ("Computer Science and Engineering"), the rest 59 can barely do a "Hello World". The problem lies in the root. Ask anyone in my class, they chose Computer Science simply because thats where the demand is not because they actually like the subject. I doubt outsourcing has any effect on programming worldwide. Its more of customer support, etc thats being outsourced, monotonous work. I don't think you can apply the same sort of teaching pattern for other subjects to programming. Ironic actually, you spent more time writing code in your book than a computer. I do agree, a certain amount of theory is required for programming as well but the usual grinding and mugging up can never be applied to coding. Sadly, it happens. Most of the students in my class can write basic programs but when it comes to pointers and stuff, they actually byheart the code and the examinations don't ask any questions beyond your textbook. I just don't get it, how can anyone just memorize a program. "There is no teaching, only learning." Programming is the best example for the quote :)

                          E Offline
                          E Offline
                          elibriscoe
                          wrote on last edited by
                          #67

                          I work with a girl from India who has a BS in CS and is pursuing a master's. The only language she knows is vbscript, and even that she can barely use and never writes a program. She's here in the US working as a QA. Unbelievable. I know the problem is just there either. I can honestly think of about 3 people in my CS program who deserved to graduate, but of course everyone graduates.

                          1 Reply Last reply
                          0
                          • D dfl

                            (warning: mild flame) As a programmer, I feel uncomfortable reading such a holistic reply. I do *feel*, like you, that it is important to understand the fundamentals of the machine and the relationship between high level functions and low level actions. However, just stating this feeling does not constitute a reply. Many people feel that there was something special and "profound" in their particular upbringing. However, very often this is an illusion. My fortran teacher, back in the late 80's, told me that programming in an IDE was not the real deal and did not give you a true sense of what you were writing. However, he was actually talking about himself. Every generation feels that the subsequent one is shallow and lacking some profound understanding of the world. This is no more than a psychological phenomenon. To explain why an understanding of a digital computer, pointers, interrupts, signals etc. helps programming, you need to give concrete examples.

                            E Offline
                            E Offline
                            elibriscoe
                            wrote on last edited by
                            #68

                            The bottom line that many people won't like is this: There is a limited number of people who can be great programmers ever born. To a certain extent you can learn it, but only if you already have a natural talent to program will you be great. Some people will NEVER be great programmers, no matter what. Sorry. If you have the right talent and drive, you will take it on yourself to learn what you need to be excellent. Also, we will always need people who can write compilers and program at the lowest level. The fact that you aren't writing firmware doesn't necessarily mean you aren't a programmer. We need people who can program in very high level languages, and not everyone has to be a programming superstar. I don't feel bad about my career because of other crappy programmers. In fact, it makes it easier for us good programmers to stand out and advance.

                            W 1 Reply Last reply
                            0
                            • R Ray Cassick

                              They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


                              FFRF[^]


                              T Offline
                              T Offline
                              todds6776
                              wrote on last edited by
                              #69

                              I recently graduated from a university which has a Computer Science program in the top 7. Many CS programs have changed, but this isn't a bad thing. Students are still taught the low level details (I had to design hardware and design parts of CPU's, write assembly language programs, write a compiler), but the focus is no longer on these trivial details. The problems facing software engineers in the future are not the issues of managing pointers, having a command on the bits of a word etc. The real challenges will be things like writing programs to run accross many CPU's, mathematical optimization of algorithms, and security concerns. I work with many "real programmers" that were trained between 10 and 20 years ago, and the coding style is simply outdated. I think the real problem is that people are called "programmers" or "software engieers" who go to tech schools or attend small programs where the schooling involves much less rigor. To compare this to the medical world, if a person goes to a tech school and is trained to be a medical technician, they should not be expected to perform as a nurse or doctor.

                              1 Reply Last reply
                              0
                              • Steve EcholsS Steve Echols

                                I blame .net, intellisense and languages that make it easy for people to think they know what they're doing. I've seen a lot of drag n drop kiddies in the U.S. as well. :) But, yeah, outsourcing hasn't helped the situation out much.


                                - S 50 cups of coffee and you know it's on!

                                J Offline
                                J Offline
                                julio debroy
                                wrote on last edited by
                                #70

                                Agree and do not agree. If you know what you are doing it boosts your productivity. If you do not, intellisense popups can either help you learn or can make you lose time. Beginners of course, could benefit of code completion to get them running. I started back in '80 with assembler for 6501 and TRS-80 basic.Then gw-basic, At college we used turbo pascal which evolved to turbo vision and then delphi. Yes, hand coding was great for training, but in real world you can really take advantage of the time you save by using those tools. Using delphi I can do a great sql app in hours. Yes, a simple data form in a couple of minutes. When time is money AND you know what you are doing, modern tech addons like intellisense have a great value. Back to the root topic, here in Guatemala at IT faculties in main universities, all programming training is hard, and I can tell even at high school level there are many schools that train very well for coding, from html to C++, java, pascal, you name it. Of course visual programming is there as well.

                                1 Reply Last reply
                                0
                                • C Chris Austin

                                  Christian Graus wrote:

                                  I think CS is dead

                                  I don't think it's dead, just endangered. Good lord, I hate interviewing people these days. I had one guy get incredulous with me when I asked him how he'd implement a simple b-tree. I think we have lowered to bar way too much.

                                  A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - -Lazarus Long

                                  D Offline
                                  D Offline
                                  dfl
                                  wrote on last edited by
                                  #71

                                  People don't roll out their string concatenators either, not to mention frame pointer managers. Programming is about solving problems with a given set of tools. If modern tools encapsulate data structures and provide you with optimized hash tables, why should you know what a hash function is? Such knowledge may be a good *social* indicator, that the guy/gal you're talking to is well read and geeky enough, but does this really influence the quality of the code? Tools keep getting better, libraries are richer and more spoiling every year, but the basic skill of analyzing a problem and stating it in terms that match the tools at hand, has not changed.

                                  C 1 Reply Last reply
                                  0
                                  • D dfl

                                    (warning: mild flame) As a programmer, I feel uncomfortable reading such a holistic reply. I do *feel*, like you, that it is important to understand the fundamentals of the machine and the relationship between high level functions and low level actions. However, just stating this feeling does not constitute a reply. Many people feel that there was something special and "profound" in their particular upbringing. However, very often this is an illusion. My fortran teacher, back in the late 80's, told me that programming in an IDE was not the real deal and did not give you a true sense of what you were writing. However, he was actually talking about himself. Every generation feels that the subsequent one is shallow and lacking some profound understanding of the world. This is no more than a psychological phenomenon. To explain why an understanding of a digital computer, pointers, interrupts, signals etc. helps programming, you need to give concrete examples.

                                    J Offline
                                    J Offline
                                    JPaula
                                    wrote on last edited by
                                    #72

                                    My response is in no way holistic. Its my feeling - as I am in a user forum, I am not writing a scientific article. I think it is no hidden secret that knowing what goes on behind the scenes enables you to design better solutions, be more innovative and make less errors - in general. This applies to any field of knowledge - from mechanics to cooking - and I think it applies to programming. I do not relate to any timeframe as "those were the days". I am not in favor of any low level language. In fact, my favorite programming language is Visual Basic - it's a different programming paradigm (at leats it was, before .Net). Real world examples is what you can observe everyday. People taking the wrong approach because they lack the basis for a good, informed, decision. I guess this is not an illusion. Anyway, I think you totally misunderstood my response to westicle. I was writing a response from the point of view of someone that never took a course in programming and is totaly self taught. I told him what I think is the basic for any programmer: basic boolean logic, knowing what is going on in the computer mainboard for a program to run. You can get this basic knowledge in hours and save years of bad practices. Furthermore, I told him that turning off the IDE features is just crazy because we are not in the 80's and we need intellisense - we have millions of instructions we use/need.

                                    1 Reply Last reply
                                    0
                                    • Steve EcholsS Steve Echols

                                      I blame .net, intellisense and languages that make it easy for people to think they know what they're doing. I've seen a lot of drag n drop kiddies in the U.S. as well. :) But, yeah, outsourcing hasn't helped the situation out much.


                                      - S 50 cups of coffee and you know it's on!

                                      D Offline
                                      D Offline
                                      David I Hunt
                                      wrote on last edited by
                                      #73

                                      .NET and Java are definitely the problem, though ignorance is the cause of it. People go to "easy" languages for two reasons. 1) They are stupid. 2) The Pointy-Haired Boss is stupid and forced them to use "easy" language. There are some people who are just lazy, but IMHO, laziness is a form of ignorance. Bjarne Stroustrup saw this problem appearing a while ago and is focusing his efforts on trying to get schools to actually teach programming again. For anyone reading this who wants to learn to code well... start with x86/64 assembly any work up from there.

                                      I have nothing against VB or .NET per se. It just seems that some languages attract one echelon of programmers, and other languages attract a much higher echelon of programmers. :P

                                      D C 2 Replies Last reply
                                      0
                                      • R Ray Cassick

                                        They all teach application development, but not programming. When I started out you could not get anywhere near a computer until you could count in binary, octal and hex and knew enough to run a small program on paper. Ah, where are those days again....


                                        FFRF[^]


                                        E Offline
                                        E Offline
                                        el delo
                                        wrote on last edited by
                                        #74

                                        I agree. And it's not just programming, it's basic skills. During my last few contracts at M$, I would have been rich if I had a nickel for every time I had to help some "highly qualified" person with setting up their computer, putting it on the corpnet, teaching them how source control works, helping them with batch scripts and Perl scripts and balky build systems, helping them with bug and work item tracking SW, helping them with facilities and office reqs (even though the interal sites are right there for them to use), helping them with Office apps and their email clients, etc ad nauseum. Or high-brow SW engineers who don't know how to setup delegates/events/callbacks/etc (take your pick of languages and less common features), etc. They know all the tricks that get hit in the interview loops and they are solid SW engineers in the more abstract academic sense, but get lost in the production environment and when asked to do all those mundane and arcane things that their high-brow schools and profs see as being below their dignity. And while I wasn't involved in nor did I directly observe this at M$, at several other firms I watched mid-to-large scale development projects with lots of potential get run into the ground because overseas outsourced engineering kept delivering exactly what their legal staff told them they had to deliver: Mostly solid (in terms of functionality) but often hackish or unmaintainable etc code that was written to a months or years old spec (because that's what they were given) rather than what they were asked for. And overseas qa outsourcing that delivered huge volumes of bugs that amounted to spelling/typo/grammatical errors in text, trivial misalignment of controls on forms, all manner of nits and easy pickings and so on, while the truly nasty shipstoppers were left to be discovered by the ever-dwindling stateside dev and qa staff - who were being brow-beat the whole time because they weren't "...finding and fixing all the bugs..." like the overseas staff were. For better or worse outsourcing and globalization are here, but unless and until the overseas outsourcing houses and the people who work there start to see themselves as team players and start to "get it" about being part of the overall solution and not just people who write code (or do testing) to specs and so on, it's going to be a potentially negative thing.

                                        1 Reply Last reply
                                        0
                                        • D dfl

                                          People don't roll out their string concatenators either, not to mention frame pointer managers. Programming is about solving problems with a given set of tools. If modern tools encapsulate data structures and provide you with optimized hash tables, why should you know what a hash function is? Such knowledge may be a good *social* indicator, that the guy/gal you're talking to is well read and geeky enough, but does this really influence the quality of the code? Tools keep getting better, libraries are richer and more spoiling every year, but the basic skill of analyzing a problem and stating it in terms that match the tools at hand, has not changed.

                                          C Offline
                                          C Offline
                                          Chris Austin
                                          wrote on last edited by
                                          #75

                                          dfl wrote:

                                          not to mention frame pointer managers.

                                          Actually, we have rolled our own frame buffer because we needed a better implementation then a generic one.

                                          dfl wrote:

                                          If modern tools encapsulate data structures and provide you with optimized hash tables, why should you know what a hash function is?

                                          This is why our industry is in such a poor state and most software sucks. Programmers have happily become users. If a programmers doesn't know what something as simple as a hash function is, how can I trust them to know when and how to use a hash table, does he or she even understand the costs and benefits of using a hash table versus some other data structure? This is basic stuff.

                                          A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. - -Lazarus Long

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups