No one teaches PROGRAMMING any more
-
.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
David I Hunt wrote:
.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.
You can say guns are to blame for gun killings, but someone has to pull the trigger. I pulled that trigger once. I told my customer at the time not to use C++ as the base language for their project, which was database-driven, but to use Access and VB because "the programmers are cheaper and more easily disposable." Four years later I was one of the two programmers struggling to convert that Access package into a Web application, so karma was served. My main point was that C++ programmers talented enough to do the work would also have held the company hostage, as in this area (southeast Pennsylvania, near New York City in the US) good C programmers were very hard to find and keep. VB programmers were and are a dime a dozen (though, curiously, the ones who are good enough to be good C++ programmers are still very hard to find...a finding that has been touched on in more than one post on this topic). The problem isn't the environment, the problem is that so many programmers are helpless when the environment doesn't provide a solution. The sort of skills a study of computer science produces cross all environments, define all environments, and allow analysis of the environment, its shortcomings and how they can be avoided, and its fine points and how to best utilize them. It's not the environment, it's how you use it that makes or solves the problem.
-
cpp.samurai wrote:
Therefore, blaming the situation on lack of jobs (out-sourcing) can't be right.
Outsourcing is not a function of lack of jobs, but rather a function of wanting to pay less for a given job. The concept of paying less for the same thing is not a new one, what has changed in the recent decade is more or less a lack of oversight, or lack of checks and balances, or how ever you want to view it... the result is less quality for less money. It hurts the real programmers in India, and in the USA and everywhere. There are more than enough jobs, and more than enough people to fill them. A given IT job usually gets on the order of 100 to 300 applications. Even here with all our restrictions we get 100 applications for any one job. But those jobs are going elsewhere because no one wants to pay us the money, or even you the money, they want to pay someone less than either of us makes, and not bothering to find out if they can do the job before giving it to them. The result is encouraging failure, and living with 2nd rate products, and in many cases 3rd rate products or vaporware because no product is ever produced for the money.
El Corazon wrote:
There are more than enough jobs, and more than enough people to fill them.
Can you explain to me exactly what this means? Aren't these mutually exclusive states?
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"How do you find out if you're unwanted if everyone you try to ask tells you to go away?" - Balboos HaGadol -
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
Atle Bjanes wrote:
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?
The Art of Programming by Donald Knuth can be used with VB 2005. It's not cheap, but worth ten times that. Build up to it by letting them create their own "shell" for use with later assignments. By the end, they'll be ready for the workforce (or for the seed programmers for your own startup ;-) ).
-
I'll be interested to see the code for Halo 4 written entirely in Java... I did not say that you should write huge applications in assembly. No one in their right mind would try such a feat. I said that you should learn assembly before learning abstracted languages. If you do not understand how a computer works on a low level,you will never fully comprehend how it works on a higher level; and your code will suffer because of it. Learning Java or .NET without knowing assembly and C is like learning Calculus without understanding Algebra. You might say that nobody does that, but my college calculus classes would have begged to differ. Personally, I learned C++ first. But it was not until after I learned assembly that I truly understood C++. A prime example is the difference between a switch and an if/else structure. Keywords and classes and library functions are not magic spells that instantly execute in one clock cycle. If you do not understand what's behind the code you write, then you are no better off than a script kiddie typing out some HTML for his geocities.com page.
I have nothing against VB or .NET; all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers. :P
Ouch! Halo in Java would be painful! I mostly agree with you - in fact, I think you have largely stated what I voiced in a different post on the same thread - I do agree that understanding in principle what happens when your high-level language code runs is what separates the 'script kiddies' from developers - on the other side of the coin, however, are folk like me: My first intro to programming was two weeks of digital electronics on the Navy's ComTran10 - designed to teach basic digital electronics (focused on hardware - didn't even have a CPU, just a couple of shift registers!). One day's lab was writing a machine code (yes, machine code, not assembler) calculation routine. Other than some personal reading/study, that was the last that I've touched anything that low-level. I also took a short "Intro to C" course at a local community college. Since then it's been VB, VBA, VBscript, and now C#, and entirely self-taught. I am, unlike some, very interested in the whole process, and in my own research have gained what I think is a fairly decent understanding of the way programming languages work, and what happens all the way down to the hardware level. Not programming in the lower-level languages hasn't prevented me from gaining that understanding. OK, so maybe I'm a bit unusual ... I think you did wrap up our agreement in your last sentence - '...all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers.'
-
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.
Leslie Sanford wrote:
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.
Having been responsible for maintaining a B-tree library specialized for our application at one point, I assure you that general b-trees ARE difficult to implement, but anyone with a course in data structures and a very brief description of what's going on should at least be able to make a stab at an approach to the problem. IMO, anyway. Anyone who can't, well, maybe they can be taught to code from spec - I once fed specs to myself and two other programmers for eight months, never leaving anything to the imagination, and it worked quite well.
-
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.
eliboy wrote:
In fact, it makes it easier for us good programmers to stand
Yup. I have apps running for several years without a glitch. One builds up a clientel that look to you for solutions because they want it to work. That has the advantage that I'm listend to when I point out the differences between what the user wants and what the user needs. But - like my last job - replacements are apparently cheap. Mine was supposed to build a new version of the app I made in a year (it took me two, but that included learning Windows programming). It's closing in on four years and the new version is just coming out. This is after they've gone through a number of other programmers. It's hard to get managers (etc.) to understand that buying sh*t at half price still just amounts to buying sh*t.*
* apologies if any found this offensive.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"How do you find out if you're unwanted if everyone you try to ask tells you to go away?" - Balboos HaGadol -
Why is that? Because some developer in India told ME to stop whining the other day. This is how he put it: "An average developer in India earns the equivalent of $1000 USD a month, gross pay. If you want to match or beat that then I would be willing to bet you'd get the contracts in America. Otherwise, you simply wont". So....... thats what we're being reduced to people. We're being reduced to $12,000 a year employees. People in WALMART make about that. Mc Donalds. Borders. And they dont have 1/10th of the pressure. So, yea, I too am looking for a new career. This one has been pulled from under my feet.
UD wrote:
So....... thats what we're being reduced to people. We're being reduced to $12,000 a year employees. People in WALMART make about that. Mc Donalds. Borders. And they dont have 1/10th of the pressure.
I started thinking so, but a seriously large number of organizations who depend on the quality of their software for their livelihood are beginning to reject outsourcing and consultants, prefering to get and keep talent in-house, just like it used to be. You need to be able to demonstrate that you can think outside the box, though, as they aren't looking for spec-driven coders, they're looking for the ones who can write the spec and implement it to near perfection, and they expect that to show in your experience.
-
RTFM. That's how we learnt.
-- What's a signature?
Pete Appleton wrote:
RTFM. That's how we learnt.
I "learnt" before there was any manuals to read. ;) Back in the late 70's working for Quadram I had to write device-drivers for PC's running DOS 1.1 before there WERE any "how-to" books on the subject! You had to take the Microsoft (or IBM) documentation and provided source-code examples and learn the difference between the types of drivers and how to code them. Before that it was writing FORTRAN IV on a PDP-11 and CDC Cyber-74. RTFM? No M to RTF! mov ax, 4C00h int 21h -CB :)
-
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!
Steve Echols wrote:
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.
Imagine the power of Intellisense and such tools to those of us who DO know what we are doing, eh? -CB ;)
-
UD wrote:
So....... thats what we're being reduced to people. We're being reduced to $12,000 a year employees. People in WALMART make about that. Mc Donalds. Borders. And they dont have 1/10th of the pressure.
I started thinking so, but a seriously large number of organizations who depend on the quality of their software for their livelihood are beginning to reject outsourcing and consultants, prefering to get and keep talent in-house, just like it used to be. You need to be able to demonstrate that you can think outside the box, though, as they aren't looking for spec-driven coders, they're looking for the ones who can write the spec and implement it to near perfection, and they expect that to show in your experience.
25 years of development and, not only head-down/hands-on development, but business experience (across hospitality, accounting, financial, utilities, medical and machinery to name a few). I can read and understand a balance sheet and speak business as well as developer talk in one breath. I would consider myself a true hybrid. Yet, most dont care and the ones that do are waning quickly. But if you say that there are a large number of organizations beginning to reject outsourcing then who am I to deny it? I am hoping to come into contact with some of these companies soon. I hope the turn-around happens before I decide to go back to a trade school and learn how to wire electric into homes or build houses so that when the next housing boom happens, I am ready! Right now they're asking me to slash my rates or else they go to India, China, Vietnam even Lithuania!! And by slash rates I mean from $100/hr to less than $30, some even less than $20. After I take out healthcare, mortgage, car(gas), food and simple business expenses (software, internet, etc), there is nothing left from $25/hr. Nothing. Its crazy. Its backwards AND upside-down all at once.
-
I blame all those RAD tools like VB and (to some degree) C#. Pity, isn't it. But then again, RAD tools survive because of the market.
Stupidity is an International Association - Enrique Jardiel Poncela Die deutsche Sprache sollte sanft und ehrfurchtsvoll zu den toten Sprachen abgelegt werden, denn nur die Toten haben die Zeit, diese Sprache zu lernen. - Mark Twain
-
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
Our two daughters are homeschooled also. Nice going! My daughters aren't interested in programming but I do have a thought: VB2005 would definitely be a good platform to teach with. What I would suggest, though, as you do it that you teach them some of the low-level basics of logic and program flow. You might want to spend a little time covering some older material like computer history - after all these machines for all their sophistication are really still Von-Neuman (stored-program) machines. If they can understand the concepts of variables, memory and conservative use of them then they will be more powerful than their counterparts who know nothing but "click-and-drag". Spend a lot of time on fundamentals, loops, program-flow - GENERAL stuff. All the sophisticated object-oriented stuff is fine, but if they don't have the basics down then they're going to write bloated junk. I've been at this for over 30 years now myself and am constantly amazed at how these younger kids glaze over when trying to understand the basics of writing good and reliable code. They just seem to want to throw the kitchen sink at everything and hope something comes out that might work. My 2-cents. -CB ;)
-
Bottom line, those of us who know not only how to code, but to write elegant code will always be in high demand. There are plenty of jobs in companies that use proper interviewing and weeding to find the diamonds in that mountain of sand that apply. I've never had a problem when I wanted to make a move.
-
25 years of development and, not only head-down/hands-on development, but business experience (across hospitality, accounting, financial, utilities, medical and machinery to name a few). I can read and understand a balance sheet and speak business as well as developer talk in one breath. I would consider myself a true hybrid. Yet, most dont care and the ones that do are waning quickly. But if you say that there are a large number of organizations beginning to reject outsourcing then who am I to deny it? I am hoping to come into contact with some of these companies soon. I hope the turn-around happens before I decide to go back to a trade school and learn how to wire electric into homes or build houses so that when the next housing boom happens, I am ready! Right now they're asking me to slash my rates or else they go to India, China, Vietnam even Lithuania!! And by slash rates I mean from $100/hr to less than $30, some even less than $20. After I take out healthcare, mortgage, car(gas), food and simple business expenses (software, internet, etc), there is nothing left from $25/hr. Nothing. Its crazy. Its backwards AND upside-down all at once.
UD wrote:
25 years of development and, not only head-down/hands-on development, but business experience (across hospitality, accounting, financial, utilities, medical and machinery to name a few). I can read and understand a balance sheet and speak business as well as developer talk in one breath. I would consider myself a true hybrid. Yet, most dont care and the ones that do are waning quickly.
If you're located in the Midatlantic States of the US, you need a few good recruiters to help (check out Indeed.com as well, it will explain itself nicely). Right now they're asking me to slash my rates or else they go to India, China, Vietnam even Lithuania!! And by slash rates I mean from $100/hr to less than $30, some even less than $20. After I take out healthcare, mortgage, car(gas), food and simple business expenses (software, internet, etc), there is nothing left from $25/hr. Nothing. Its crazy. Um, this was a subtle but important point of what I said: they want you IN HOUSE. $100/hour consulting work is dying rapidly as a result (one of the jobs I recently interviewed for was to sepcifically avoid retaining a consultant any longer than I needed to jumpstart my own project). They'll pay part or all of your benefits, but they want you as theirs, not shared, and right now salaries in this area are running $60-85k with benefits. This won't support your current lifestyle, I'm guessing, but it beats the heck out of $12000/year or "may I take your order, please?". However, you're not going to get rich doing it.
-
Patrick S wrote:
Little or no emphasis on languages; little or no emphasis on application development for its own sake. Lots of emphasis on algorithms and data structures; lots of emphasis on math.
With the exception of the math, that's the way I gather most CS faculties were oriented through at least the 80's & early 90's (if not the whole 90's). Lots of stuff (who remembers the name of that notation/language used for proving the logic of an algorithm?) that most graduates will never even think of again unless they land in some highly specialised area like NASA, DOD or purely academic CS. Most CS graduates were useless for the first couple of years while they learned how to actually apply the useful stuff they were taught & forget the arcane. I do wonder if it's gone too far the other way now though, too much reliance on pre-existing frameworks is bound to stifle innovation in some areas but with the ever increasing complexity of computing environments it is a practical option. Personally I'd like to see more emphasis on problem-solving & design, which has historically been (in my experience, first as a student, later as an employer) a bit light-on in CS faculties. As an employer, I'd rather hire someone who can conceptualise a solution, then find the best tool(s) for the job as opposed to someone who can make a specific RAD environment do backflips but I think I might be in the minority on that one. Also schooled in Engineering (though combined with CS so I saw both sides :) ), I might be a bit biased :) .
T-Mac-Oz
T-Mac-Oz wrote:
Personally I'd like to see more emphasis on problem-solving & design, which has historically been (in my experience, first as a student, later as an employer) a bit light-on in CS faculties. As an employer, I'd rather hire someone who can conceptualise a solution, then find the best tool(s) for the job as opposed to someone who can make a specific RAD environment do backflips but I think I might be in the minority on that one.
Maybe, but I'm finding shops that are looking for older progammers who have some familiarity with the bleeding edge but have lots of familiarity with solving problems. Then again, that's to whom I target my resume. My MSCS program was about to drop the Math course requirement after I joined, but I was able to use a math course due to a "grandfathering" rule. The course I took was Mathematical Modeling, which taught a bunch of techniques but was primarily aimed at teaching you how to start solving a problem by building models and checking them againsts reality - this made it the most effective "problem solving" course I took.
-
Hi, I'm a regular user of CodeProject's codebase and saw this interesting post. I'm a master's student finishing up this term in robotics. The CS (we call it course 6--my school loves numbers for some reason) department at my institution is pretty rough and produces some pretty good programmers, but we don't take classes in programming. A point was made that managed languages like C#/Java/Python/etc. make it easier for people to just get by. IMHO, I think spending higher education time learning languages is a waste of money. The concepts of application development should be taught, and it should be left up to the student to experiment with different languages to find the best fit for their application. I guess what I'm trying to say is that no class has ever taught me programming, coming up with implementation for B-trees (without ever having seen one) and the like I think can only come from hardened experience in coding up a wide variety of apps over several years. This leads me to believe that the misconception here is that these "programmers" that keep applying for these jobs might not necessarily need to take classes in programming, maybe they just lack the experience necessary to acquire these programming skills. I constantly find myself referring to my intuition about programming which usually comes from a combination of intimate knowledge of application development concepts with experience with a variety of different programming languages. So I guess I completely agree with the point made that you just need to learn from reference books and the internet. In short, I'd probably shoot myself if I took a class on learning how to count in octal or learning the intimate details of Python or any other language. Seems like a waste of time unless its needed for the application. What most managers should be looking for is the ability for the new-hire to acquire knowledge quickly given the right amount of information. The industry is growing too fast for someone to know everything that you might want out of them.
daChiefrocka wrote:
What most managers should be looking for is the ability for the new-hire to acquire knowledge quickly given the right amount of information. The industry is growing too fast for someone to know everything that you might want out of them.
LOL that's part of my resume charm...I've acquired a new language, OS, or database server with every job I've had.
-
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 )
-
There hasn't been anything fundamentally new in computing since 1973 all we've seen since then is ever more trivial refinement, what do you expect? This is the age of the "architect" not the "developer". I completely agree that anything called "computer science" should be reserved for nuts and bolts stuff and the 1 or 2 people per semester that are still interested in that can take it, the rest can be in "application development" etc. It's kinda like they don't teach carpenters how to make carpentry tools anymore and at some point in history some guys were sitting around with mugs of ale and deploring the loss of the good old days. :)
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying." - David Ogilvy
I have to agree. But, you have to consider this much: the software developer that KNOWS the underlying hardware (as well as the business stuff too) is going to be the one who comes out smelling like a rose. That is, if outsourcing doesnt choke us all first. While it may be true that they dont teach carpenters how to make tools anymore, those who know how the tools are made and the history of the tools themselves, are at an advantage... Some of the best carpenters were able to devise their own tools because they knew tool-making as well as carpentry.
-
You forgot to mention that the trip to the mill was all uphill - both ways.
Jon Smith & Wesson: The original point and click interface
-
Steve Echols wrote:
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.
Imagine the power of Intellisense and such tools to those of us who DO know what we are doing, eh? -CB ;)
Yeah, we have some pretty sweet tools. I don't mind the intellisense when I'm exploring new classes or trying to use classes I don't use that often, but for the most part they get in my way, so I turn it off and use Ctrl+Space, Ctrl+Shift+Space. Is it me, or is C#'s intellisense way better than VBs? Just imagine how fast we could code if we had all the classes/functions/parameters memorized and didn't have to stop to read! ;)
- S 50 cups of coffee and you know it's on!