No one teaches PROGRAMMING any more
-
I need to throw-in my contrarian points-of-view. I have met many university students in the last few years who have learned the fundamentals very well! I have been lucky to work with young people from very good American universities (not meant as a knock against other countries' schools, but just putting it context), so I cannot say this is 100% representative of the next generation of Engineers. My experience with Indian engineers on outsourced projects is that they are very capable of doing the work which they were contracted to do. Appropriately from an economic standpoint, they are well-trained for the task at hand, which is often high-level programming (as opposed to embedded or high-performance coding). We'll see if this trend continues. If the Indian and other off-shore (that is, not North America or Europe) countries begin to school their best and brightest in real electrical and computer fundamentals, and if American schools begin to lose focus of them and on hard-core science and math, then we (that is, American) technical industries are in trouble! The next generation will all be pushing frapaccinos to our Indian and Asian neighbors. The good news is that American Universities are still REALLY desireable places for the best foreign students around the world. Of course, our visa situation is horrible. We're basically encouraging students to come and study and then we kick them out to be our competitors. Rather, we should teach anyone who wants to learn the fundamentals, as well as the state-of-the-art and have an immigration policy that allows us to take advantage of the best young minds the world has to offer.
-
I'm one of those people that has a development job (vb.net) and has not been taught programming. I got my job from working as a finance/payroll admin where I built a system to manage my companies Flex benefits using VBA and spreadsheets. I tought myself the VBA. I was moved into the development team (5 peeps) and sent on a course for people upgrading from asp to asp.net (!?!?!??!?!?). What's asp I asked. I've been doing this for 2 years now. I rely heavily on intellisense but no dragging and dropping. I tend to learn from asking colleagues, friends, reading books and google. I am well aware that there are some fundamental pieces of the puzzle that I am missing but I can build apps that achieve what they are supposed to do. If I had to go through the interview process for my job now I do not believe I would get it. The purpose of my post is two-fold 1. Does it matter that I am missing some coding fundamentals since I can build working applications? (don't get me wrong, I'm not kidding myself about my abilities) 2. Where and how do I learn these fundamentals? Should I turn off intellisense as a start? Do you all use intellisense?
Westie
westicle wrote:
The purpose of my post is two-fold 1. Does it matter that I am missing some coding fundamentals since I can build working applications? (don't get me wrong, I'm not kidding myself about my abilities) 2. Where and how do I learn these fundamentals? Should I turn off intellisense as a start? Do you all use intellisense?
1. Yes. By missing coding fundamentals you are essentially writing "broken code". That doesn't mean your code won't work, but it may be very inelegant and extraordinarily difficult to maintain. In addition, by not knowing basic algorithmic concepts, you may be making your work harder than it actually is. 2. You can read about them. Any good programming text will do. Turning off intellisense will only help you memorize libraries of functions. While this is useful for speeding up your coding, it still won't teach you fundamental basics. I could recommend any number of excellent books to you. But my choices are highly language specific (I prefer books written in Java right now as it is my current language of choice). If you are willing to go with that, I strongly recommend Big Java by Cay Horstmann. This is a very excellent tome on the craft of writing software well (in Java). I disagree, however, about needing to know all that math Juju. While I am familiar with the math concepts and I can perform base-16 multiplication and division in my head, I don't think it is necessary to know that to be a good programmer. Knowing binary and boolean algebra is another matter, as someone else pointed out, you need to know that to construct well defined conditional statements.
JPaula wrote:
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 also disagree with this statement, even though I agree with JPaula's other arguments. I don't think you need to know how electrons are moved in hardware to have a strong grasp of program construction. I assume by binary math, JPaula means boolean algebra...binary math is actually useless unless you want to create performance tricks like minimized data storage a
-
I began with my first computer when I was 9 years old. A Radio Shack MC-10 8 bit computer with a whopping 16K of memory. All you could do is program a flavor of BASIC that only vaguely resembles what it has evolved to today. It had no non-volitile memory, if you shut it off, or had a bug that required a reset, you had to write it all over again. At the time I loved it, and I learned how to memorize lots of code, by the simple idea that form follows function. If I know what it needs to do, I can write it, and memorize it, regardless of how long it is. I have since self taught my self over a dozen languages, learned how computers work down to the electronics, I have worked in a wafer fab and know how every part of how a computer is designed and produced. In High School I could teach the the teachers, how to do things and gave them tips on how I developed my understanding. One of my favorites was the analogy between a checking books out at a Public Library, and the idea of a Semaphore. In college, again there was little real programming being taught, I truly believe that if you do not understand a computer at the assembly language level you can not fully realize your programming potential. Unfortunately in todays world, it seems true knowledge of programming is almost lost. With the knowledge of almost every Language, Platform, and OS, capable of the english character set (I am sure there are some Russian and Chinese systems I don't know), I have only been able to keep myself gainfully employed by avoiding the IT field. If you get into IT, you get outsourced almost as quickly. By keeping myself tightly coupled with hardware and other engineering disiplines, I have found my programming skills to be incredibly useful, even outside the relm of actual programming. Project planning and execution have so many parallels to programming, it should be required for project managers. I have watched the Internet from its infancy (Pre M$) to the present get completely corrupted. There is no excuse for the proloferation of malware, had some of these software vendors stuck with basic security priciples that were established for the Internet. The first principle is DO NOT EXECUTE ARBITRARY CODE FROM A REMOTE SOURCE EVER! Of course that was completely violated by M$ and the like with client side scripting, ActiveX, DCOM, etc. I do know the answer to the problem, but much like the Auto industry, a car that never needs maintenance will never be produced even if they could because that does not make them enough money. Software has n
-
Leslie Sanford wrote:
B-trees[^] are rather non-trivial, aren't they?
Depends on the requirements:
Leslie Sanford wrote:
a simple b-tree
is little more than a linked list (though with two "next" - left & right - nodes instead of one). A self balancing b-tree (actually useful as more than just an academic exercise) does take a bit more work.
T-Mac-Oz
T-Mac-Oz wrote:
Leslie Sanford wrote: B-trees[^] are rather non-trivial, aren't they? Depends on the requirements: Leslie Sanford wrote: a simple b-tree is little more than a linked list (though with two "next" - left & right - nodes instead of one). A self balancing b-tree (actually useful as more than just an academic exercise) does take a bit more work.
I'm thinking an array for faster access time. And binary trees are actually quite trivial if you've actually built one before. An experience I highly recommend, by the way.
-
I absolutely hate to agree with you, but I have to. I was SO excited about a year ago to return to school to learn to be a web programmer (to build on web design skills and lots of interest). I was ready to take on all the classes, learn, program, etc. But! Many of the classes kept being canceled. There was no real overview of the whole field, and even intros into basic stuff like XML were canned. No PHP, no Perl, no QBasic, no C#. The tools needed to do basic stuff like learn SQL Server didn't work or the school's IT folks brilliantly decided to replace or dismantle servers the first week of the quarter. But worst of all, I came to realize after 4 quarters of 4.0 grades that there had been no series of really basic programming classes. There was one, with a really good instructor, but one was not nearly enough and most of the basics - well, let's just say I am having to find a way to teach myself. I was getting "A's" in ASP.Net without having basic programming background, and it was showing (to me) in how much I struggled in what seemed like basic assignments where the VS2005/2008 Intellisense and error messages intruded on basic work without providing any help but hindering me from doing simple stuff - all because, it turned out, I didn't have a grasp of most basic programming skills. A shiny new certificate - that means very little. Back to the drawing board for me. Here's hoping there's at least enough front-end work to keep me employed while I learn more on my own. . . DOES anyone here have a suggestion of 1-2 basic sites/tutorials (or series) that go over the programming BASICS with little assignments/examples, etc.? Thanks!!! :cool:
_________________________________________________ Have a great day!!! -- L.J.
lbothell wrote:
DOES anyone here have a suggestion of 1-2 basic sites/tutorials (or series) that go over the programming BASICS with little assignments/examples, etc.?
-
I need to throw-in my contrarian points-of-view. I have met many university students in the last few years who have learned the fundamentals very well! I have been lucky to work with young people from very good American universities (not meant as a knock against other countries' schools, but just putting it context), so I cannot say this is 100% representative of the next generation of Engineers. My experience with Indian engineers on outsourced projects is that they are very capable of doing the work which they were contracted to do. Appropriately from an economic standpoint, they are well-trained for the task at hand, which is often high-level programming (as opposed to embedded or high-performance coding). We'll see if this trend continues. If the Indian and other off-shore (that is, not North America or Europe) countries begin to school their best and brightest in real electrical and computer fundamentals, and if American schools begin to lose focus of them and on hard-core science and math, then we (that is, American) technical industries are in trouble! The next generation will all be pushing frapaccinos to our Indian and Asian neighbors. The good news is that American Universities are still REALLY desireable places for the best foreign students around the world. Of course, our visa situation is horrible. We're basically encouraging students to come and study and then we kick them out to be our competitors. Rather, we should teach anyone who wants to learn the fundamentals, as well as the state-of-the-art and have an immigration policy that allows us to take advantage of the best young minds the world has to offer.
-
I'll be interested to see the code for your Excel replacement written entirely in x86 assembler... History is the interminable record of mass stupidity infrequently puctuated by accidental individual brilliance...
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
-
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 )
You know what all that is? Outsourcing. Those are the outsourcing people asking everyone else for help, and we fools supply them with answers while we site idle because companies would rather pay someone in India or China 1/4 the pay to do what we used to do, correctly and accurately. Why do we do this? I have no idea. Would you see an attorney give another attorney the answers to legal issues prior to going to court? No. On a similar note, would you ever see an attorney (or plumber, electrician, construction people, you name the trade) anything for their clients WITHOUT pay (or for much less pay?) No way. We, developers, are the only fools that have allowed this to happen to our profession/trade. We worked for hundreds of hours of OT without (much) pay if any at all, and for what? To eventually be outsourced AND, oh yea "you will train your replacement in Bombay or you dont get any of your 4 month severence package".. We deserve what has happened. We allowed it to.
-
cpkilekofp wrote:
Only a computer scientist can teach this.
this of course is just wonderful rhetoric from the many professors over the years im sure. chest thumping Computer Science faculty.
----------------------------------------------------------- Completion Deadline: two days before the day after tomorrow
I'm not a professor. I'm not an academic of any sort, never have been, but who knows, maybe someday after I retire I'll think about it. I specifically recommended texts of the sort that would allow one to become a computer scientist. Did you read that part, or stop dead at the first thing you found objectionable? As I used to say to my recalcitrant trainees for QA/Support jobs on the software I'd helped build, "Read ALL the instructions before you start." I recommend you read the rest of my post. Alan Turing and Frank Church never went to school for Computer Science. The first person to graduate from a computer science program was Stan Kelly-Bootle, the (former?) columnist for Unix Review - he was most certainly taught by computer scientists, yet none of them were degreed in computer science. How, then, did they become computer scientists? They pursued the study of computer science. They learned how to construct an algorithm, and studied their own and other people's algorithms, comparing them for resource usage, efficiency, effectiveness, etc. They used those comparisons to induce and deduce rules and patterns by which the true cost of an algorithm could be measured. They did many things for the advancement of their understanding of computer science that sometimes did not even require a computer, being mathematical examinations appropriate for pencil and paper. Knowing each of the object properties of a Windows Form object makes you a technologist, not a scientist. Being able to build a lookalike after studying the Windows Form object makes you a great programmer, not a computer scientist. Being able to really understand when to build the lookalike and when to use the available tool...takes a computer scientist. IMO :D
-
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?
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.
-
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
David I Hunt wrote:
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.
I learned AppleBASIC, then Logo, then C, then Fortran, then C++ then Java, then Prolog, then ML, then Motorola Assembly, then x86 Assembly... Yeah, starting languages are meaningless to me (except in a specific context I'll elaborate on in a moment). While each language I learned taught me a different nuance, each had their own place. Once I knew C, I could pretty much use any other procedural language. Once I groked OO (which didn't happen until I learned Java), I could do OO in any language that supported it. And by extension onward. Knowing the binary representation, or bytecode, for a construct like a switch or if/else may give you deeper understanding, but if you don't know what the hell you're looking at, it can actually do more harm than good. Do you really need to know that a switch is occasionally more efficient than an if/else sequence? I don't think so, most good compilers will figure that out for you, and honestly, if you are optimizing just for the sake of optimization, you don't get it. The first rule to optimizing is, don't. Do I really need to know if my atomic commands execute in one clock cycle? Does it really matter that it takes 40 cycles to execute a division on an x86 architecture as opposed to 2 cycles to do the bit shift? Not unless I'm trying to squeeze every last ounce of performance out of my gear. Besides, to really understand that junk, you need to get the instruction set manual for the motherboard you're coding for and I don't think they give those out for free anymore (I'd love to be proven wrong though!). Does knowing that stuff make you a better programmer? No. Does it make you sound l33t at your ub3r g33k parties? sure. If you have a solid foundation in understanding algorithms and data structures and you can competently implement them from pseudocode, you're far better off than someone who merely knows how to squeeze a handful of nanoseconds off a calculation by using fiddly code hacks and compiler tricks. I think the biggest nail in the programming coffin is that they removed GW-BASIC from the IBM bootstrap. If computers shipped with a built in programming language, I think the worl
-
i agree. i think it's because when WE cut our teeth on the stuff, computers were something you could understand more easily. back then it was assembler, turbo pascal and ms/dos. maybe c64 and basic. maybe Amiga and C. You could figure it all out yourself and the OS was not a huge monstrosity like windows or unix that we have now. Well, ok, the Amiga os was starting to get monstrous, but ms/dos? Easy. The languages were simpler, the OS was way simpler. What's simpler than load"*",8,1 ?? That was the whole c64 os right there :) Ok ok, well, screen memory for text, graphics mode for pixels, nice simple sound chip. Not too bad. I'd say, to teach programming now adayz, your best bet is with slackware linux and straight c. You don't program by plopping in a prebuilt class into a java dev environment. For cryin out loud, you should know SOME assembler coming out of college.
-
No. I do have strong opinions on immigration policy, but I was in no way "trolling" or had any ulterior motives. I guess my big point is that this is subject (teaching programming) is really part of a bigger set of interwoven issues: math and science education in the US and compared to other countries, university education for professional (read "useful") careers, international competition, brain-drain, out-sourcing, etc.
-
.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.