Software Development

Poll: Why do we hire entry-level programmers?

Justin James asks: If entry-level developers are so unsuited for work, why do we keep hiring them? Let him know what you think by taking this poll.

A common complaint I hear from Programming and Development readers is that they're disappointed with entry-level developers. These developers start the job either having way too much theory and not enough practice or being able to sort of write code but not knowing how to truly develop software.

But if entry-level developers are so unsuited for work, why do we keep hiring them? Is it a sense of gratitude to the people who gave us our first opportunity? Is it a belief that their salaries are so low that they are not a huge risk? Is it the hope that mentoring them will help them become great programmers? Is it something else entirely? Let me know what you think by taking this poll and sharing your comments in the discussion.

J.Ja

About

Justin James is the Lead Architect for Conigent.

109 comments
venkat_athota
venkat_athota

Beginners are less demanding. They stay for longer periods. Also we get the Opportunity to mentor them and shape them into the programmer we need.

steve.rayner
steve.rayner

What a dumb question!!! Or has somebody discovered how we can get intermediate or advanced programmers without going through the entry level phase. Sounds on a par with water into wine

wallace.wood
wallace.wood

All of the reasons stated in the poll are valid. A doofus foisted a non-schooled jp on me when I needed a senior. I taught the man how to code and more importantly how to design.

kmellentine
kmellentine

Because eventually all the experienced programmers will retire or die of heart attacks and if you don't get newbies trained where are you going to find people? If you think the entry level market is "special" in IT think again - every field has a slew of entry level candidates that don't make it in the long run. Teachers who teach for two years and then find something else to do, sales people with no sales skills...passing up on entry level for the simple fact it is entry level means you could be passing up the great developer that person could be. Of course you could also be passing up a total nimrod - but hopefully a little attention to hiring will help weed those out anyway :-)

Peleg
Peleg

Geez? I didn't know that entry-level programmers could ever be hired. I hardly recall any ad asking for someone with no or little experience. Rather, the ads seem to ask for a programmer with 10 years of C++ and 5 years of Java who can maintain and configure a 100+ user Windows network with management experience. Or, how about a graphic artist who can create beautiful graphics from scratch, does Flash, and is an expert in JavaScript, AJAX, PHP, and can administer and tune a MySQL server. Well, all right, I've exaggerated a bit for effect. But I didn't really have to exaggerate all that much. I wonder how many life-times person has to live to acquire those skills. Who writes these specs anyway? When I see them, I am glad I don't have to work for people who think all of these jobs are easy and so you should be able to be an expert, or at least good, at a bunch of them. Of course, they expect you to have all of the skills they ask for but they only want to pay an entry-level salary. Oh, I get it... Entry-level in salary only. If that is the definition, then there are a lot of entry-level programmers. I used to be one of them for 10 years. There are a few good, reasonable companies and managers to work for out there, but they give the rest of them a bad name.

vmax
vmax

No really I hope to mentor them. Once they learn they don't already know it all.

Tumbleweed_Biff
Tumbleweed_Biff

I am amazed at some of the responses and even at the nature of the question itself. At some point, *EVERYONE* is an entry level programmer - at least among those who become programmers. If no one hires entry level people, then no one will be able to become anything other than an entry level. There may be a small, exceptional portion of the population of programmers who can or have created in themselves a programmer extrodinair ex nihio, but those are few and far between. There is and always will be a need to first learn and then do. Even after you have learned the basics, you will have to learn the actual doing. That has to come from somewhere, whether you are a musician, a doctor, a politician, or wonder of wonders ... a programmer. Doctors do their learning. Then, after that, they serve a residency where they actually *do* medicine under the watchful eyes of other doctors. Programmers need the same thing.

joshua.buhr
joshua.buhr

You know, the routine, boiler-plate, mind-numbing crap that lots of new programmers are too fresh to realize is scut work. So we solve the challenges, design the solutions, and let the novices plug tab A into slot B.

bweiss
bweiss

In all likelihood, the next software engineering superstar is in a university somewhere right now. Personally, I want to identify these people and have them on my engineering team. But they don't come out of school as fully-formed business professionals; they need to be developed. I tend to think of entry level programmers in much the same way as a major league baseball club regards their minor league prospects. I think you evaluate their skillset, attitude, background, and potential in making a hiring decision. Once on-board, the goal is to provide the mentoring and experience they need to develop their potential and become the software engineer your organization needs. But success with this approach requires a sound development plan, and patience. There is a high degree of risk associated with throwing an inexperienced programmer into a project that requires an experienced software engineer.

The 'G-Man.'
The 'G-Man.'

and watch as no new programmers appear to replace the old. They have to start somewhere I would think. So glad I'm not a programmer with this attitude.

Duke E. Love
Duke E. Love

Someone has to it and *I* sure as hell don't want to...

Caggles
Caggles

Because of the HUGE difference between the programming taught in school and programming that's actually useful, every CS program should require some kind of co-op or internship experience to graduate. That way, you wouldn't have to worry about entry-level programmers, because every CS grad out there would have get real-world experience before graduation :)

Anita Y. Mathis
Anita Y. Mathis

If a position requires 5 to 10 years years experience as a developer, it shouldn't be classified as an entry-level position. Perhaps that's an HR issue. I mention this because I've see this often.

Viperfriends12
Viperfriends12

I just want to say, I am a new comer into the field, major total career change, 18 yrs law enfor into infrastructure security management. It fascinates me how many are in anyone of the fields, but the ones that shine and come out, are the ones where its in thier blood. Anyone can go to school for 10 yrs, a degree etc, but those that have the gift and talent are the ones you want. You just have to weed and look for them. So I guess what I'm saying is that people hire entry level to look for those that have the love and desire of the task. I work along side someone with degrees and certs and can just about remember everything, but they have no insight, imagination or common sense. Sorry, my soapbox.

smoran
smoran

Let me pose a question: If you do not hire entry level programmers train and nurture them; where are you going to find experience programmers in 5, 10 20 years? Moreover the failure of a employee is on the shoulder of the manager regardless if industry. Industry observer!

Fyrewerx
Fyrewerx

Our company is fortunate in that when we are hiring, we can afford a mix of entry-level progs and old dogs. The old dogs aren't going to live forever. And if it seems like they will, they're liable to burn out first, or find a job that paid as well as when the economy was good.

kferraro
kferraro

How would anyone become more than entry level if we didn't hire them? I suppose they could give their work away to get the experience needed to qualify as experienced. The place to address this where the training is being done. What about a developer/programmer task group that acts as a liason to the schools? I have seen this done in other fields (mechanical engineering) so know the concept isn't new. Don't blame the new graduate for not learning what he didn't know he had to learn. If you have a complaint, go to your alma mater or a local school and offer your services to redevelop the program.

Jack.Manger
Jack.Manger

Like everything else in this world, either evolve or die. As older employees leave, as women and men mature their priorities change, illness, accidents, the vagaries of life all contribute to a need for newer and younger employees. It has been ever thus. The quality of the new hires depends on how stringent the job's requirements are.

jkameleon
jkameleon

Thanks to rotten economy, there's even greater overabundance of experienced programmers than usual. They are grateful for the job, don't demand high salaries despite their experience, they can still be shaped, by hook or by crook, and they better be enthusiastic or else.

Jaqui
Jaqui

Hire people interested in programming, but with no training even instead. They won't have the bad practices taught by the schools to break them of then. :D

Tony Hopkinson
Tony Hopkinson

were right every one who needed more than two programmers, would have a junior....

Justin James
Justin James

If you needed a moderate form of surgery (say, draining a cyst) and the doctor told you he had never done it before, I am sure you wouldn't mind it. That's basically writing "Hello World" in college. But if the doctor told you, "I've been draining cysts for 3 years now, but your heart bypass is my first even open heart surgery" I am sure that you'd ask for a different doctor. Heart bypasses are pretty darned common and successful now... your typical heart bypass, even for a first time doctor, has a better success rate than the average IT project (good lord, I just realized that too, that is bloody SCARY). And that doctor is clearly familiar with the tools. All the same, you don't want him fiddling inside of you with a scalpel. Same thing, would you let an entry-level developer inside a production piece of code without major oversight? The problem isn't one of "entry level folks need a place to learn." We all know and accept that. The problem is, how many working developers do you know that have the time in their day to ride herd on an entry level developer? Nearly every developer I know is already working at 110% capacity or more. And every developer I know who would make a good mentor is well beyond 110%. In a nutshell, what most people here dislike about entry level developers is *not* the principle of hiring them. In fact, I think most of us are in favor of, and would love to be in an environment where smart students are cherry picked from good schools, and they are partnered up with good developers and we mentor them and show them the ropes, and in a few years, they are great developers. Unfortunately, there sad reality is, 90% (or more) of developers are not in an environment that allows that to happen. We are working past the red line already, and taking the time to mentor (or even to check in on, or provide assistence to) an entry level developer would put the rest of our work even further behind. In other words, like so many other things in business, we are so focused on the immediate short term that we cannot invest in or prepare for the future. J.Ja

Sterling chip Camden
Sterling chip Camden

... high-school baseball players will end up in the majors? That's why MLB teams have such huge budgets for scouting and minor-league farming. Unfortunately, most businesses do not have a significant budget for developing potential talent. A few do, and the rest feed off their leavings.

Four-Eyes
Four-Eyes

Nearly all schools / colleges have that. The company I previously worked for had a steady stream of OJT's coming from top colleges. It was really beneficial for both the students and the company since they got their hands dirty doing all the internal/low-risk company projects (stuff that the real pros didn't have time to work on). The pros got to do a bit of mentoring on the side which helped improve their inter-personal, communications and leadership skills. Not a bad trade-off if you ask me.

Mark Miller
Mark Miller

At where I went to school the CS department had a 2-semester elective software engineering course you could take where you'd be put into a development group by lottery, and then matched with a real world software project sponsored by a real company. If the project was successful the company might actually use it. I took that course and made some mistakes there (that's where they should be made). They were hard lessons. I didn't realize the mistakes until a few months after the school year was over. I discovered I had some inflexibilities in how I approached projects that I needed to get rid of, which came from my CS/SE training. Fortunately I lost some of that before I found my first job, but I still had more to learn.

Tony Hopkinson
Tony Hopkinson

but other than that, 100% agreement. Any grads on here. Do not sit on your arse expecting to exchange the nice shiny bit of paper for a job. Get yourself out there and do some real IT, it will put you way in front of all the lazy tossers who didn't.

Osiyo53
Osiyo53

I've never worked for any firm where HR actually had the final word about hiring. Everywhere I've worked, HR simply advertises the job opening, pre-screens, etc. Then someone in the department/branch where the new hire is to work does an interview and gives the thumbs up or down.

Justin James
Justin James

They look for an entry-level person (or want to pay entry-level wages) what what is definitely not an entry-level job sometimes! J.Ja

Tony Hopkinson
Tony Hopkinson

Don't hold your breath waiting for them to be a solution though. Mention this sort of inconsistency to them, and they just scratch their armpits then show you their arse. They still haven't figured out why that ten years experience can't be in VS2008.

Tony Hopkinson
Tony Hopkinson

but they specifically do not teach programming in UK schools ( up to 16), not even the artificial crap sound bite way they do after that.

Caggles
Caggles

...the easiest answer to the problem would be the creation of a co-op for the CS program. Check out the University of Waterloo; students get 2 years of real world work experience before they graduate. Why aren't all schools doing this? In EVERY field?

Justin James
Justin James

One of the big problems right now, is that universities think they are responding to industry in the way they are changing their programs, with the watering down of CS. I suppose in some ways they are... many companies got really tired of CS graduates who could tell you which sort to use in any given situation, but couldn't actually write an application to save their lives. At the flip side, the way the programs got watered down, they aren't generating "hit the ground running" developers, they are cranking out code monkeys at best, who need constant supervision to not mangle things, or they are producing managers who can speak tech talk. And at the same time, the companies who really need the theory CS people are screaming for more true CS grads, and having to get them overseas. What's really needed is a proper vocational school for *programming*, where 4 whole years can be dedicated to the topic (instead of 30 or so credit hours out of 120 in a typical college, the other 90 being minors, general education, etc.), and an elimination of CS as an undergraduate degree (I am more and more convinced of this), to be replaced by a "pre-CS" degree (like a pre-law degree) followed by a proper CS MA or PhD program. J.Ja

Tony Hopkinson
Tony Hopkinson

My plan to retire at 55 is now officially f'ed. Little chance of promotion, as I've no interest in managment, no grad is going to compete with me except on salary, and hit the ground running and experience are manadatory, so not even that is going to cut it. Besides the quality of new hires, depends on their attitude and the company's, no point in having a loose job requirement when abundance means you can hire much better than you should be able to afford.

Sterling chip Camden
Sterling chip Camden

is the set of "unbreakable rules" that they have learned at school. But then again, it's fun to watch their faces when you barbecue one of their sacred cows.

Englebert
Englebert

We need new minds, new ways of thinking, new questions especially in the IT industry where change is the norm. Old minds rarely come up with new ideas

Justin James
Justin James

Some companies (like Joel Spolsky's) spend a huge amount of time and money on the recruitment of interns/entry level people. for example, he has cultivated relationships with top CS professors at top CS schools around the country, they feed him their best students. He actually flys these kids out to NYC to interview *for internships*. They get picked up in a limo. They get given tons of swag and taken to fabulous lunches. He pays his *interns* something like the equivalent of $70k/year for the course of the summer. Many programmers need to work years before they make that much money. Granted, his interns are typically in Masters or PhD programs, but still. He spends more money *interviewing* his interns than most companies will *pay* their interns over a summer. Now, how many companies do you think are doing that? I'll give you a guess: just enough to take the cream of the crop from the schools, and leave the leftover junk for everyone else. Between Microsoft & Google, every hardcore CS student with a desire to work on some very cool geek stuff has a chance to get hired and make a pile of money. There's not enough of them out there, which is why Microsoft etc. are clamoring for more H1B's. Meanwhile, the rest of us need to look for the "diamonds in the rough", because it's mighty hard to attract top talent to work on data driven Web apps, data processing systems, and other ho-hum applications. J.Ja

Justin James
Justin James

... work for yourself or work for free *while in school* to get that experience. Write applications on your own and give 'em away, join an open source project, write code for a charity, get involved in a startup company part time... anything to get some experience BEFORE you graduate! J.Ja

Tony Hopkinson
Tony Hopkinson

pre screening based on what criteria though. Given last time 2/3 rds of the candidates they let through were obviously BSing, one wonders how many they screened out that would have given us a greater pool to select from....

Sterling chip Camden
Sterling chip Camden

going to the car dealer and asking for a luxury sedan with all the extras for $10,000. The difference is, you don't really expect to get it -- you just want to let them know you expect to deal. The HR folks are all too willing to believe that their low-ball request can be met.

Sterling chip Camden
Sterling chip Camden

... that we haven't adequately formalized the problem. Perhaps we never will. But programming is currently evolving at such a rate that academia simply can't keep up with practice. And practice is so ad hoc that it defies formalization. It's like trying to train someone to be a gunfighter by teaching them about ballistics and physics.

Charles Bundy
Charles Bundy

Building a solution from memorized theory for every problem. Much better (and lots faster!) to "borrow" from someone else who has already found a smarter way to get the banana. Of course playing devil's advocate, when you can't find the better/smarter solution you kind of need the CS theory. I'm always amused when people bash academics as if their behavior is somehow linked to the "ivory tower." Last I checked it all seems to fit in the category, "arrogant human." Which based on posts here does not correlate with an academic degree... :)

Mark Miller
Mark Miller

I'm curious. What are some of their unbreakable rules? I understand this mentality some, because I was like that when I got out of college. This was many years ago. I learned through experience that I couldn't hold to those "unbreakable rules" all the time, just when there was space for them. It took me almost a year to completely learn that lesson.

Jaqui
Jaqui

which is why I say hire those with no training or experience, and train them yourself. costs time and money, but you get to teach them what YOU think is the right way to work. edit to add: or, even those who are self taught. they have no sacred cows, though they may have some really bad habits.

Sterling chip Camden
Sterling chip Camden

I took on programming responsibilities in a work-study job where I was only supposed to be an operator. Four years of that at minimum wage before I was hired on as a full-time programmer. Even then, I was still a green-horn!

Justin James
Justin James

In high school I volunteered at a local home for mentally handicapped adults, writing small utility applications, a Web site (back in 1995!), Excel stuff, etc. In college I worked at the campus computer labs (who only hired students) assisting people to use the computers. I also kept working on my own, putting together Web pages and such. I found a small startup company that just needed someone to do basic Web site maintenance and minor changes to the Perl/CGI scripts, which I could handle by then. I moved into another part-time development job, doing more work on a Web store. I did an internship along the way, helping to maintain some systems in an office. I graduated college, and I was able to leverage all of those experiences into my first full time job, which was more Perl work. Note that I worked for *years* (as in, "about four years") part time, under $10/hour for almost all of it, to get to a point where I could graduate college and *not* have to work "entry level" positions. I sure didn't expect to graduate college and be handed a $40k/year entry level programmer position, and I wasn't lucky enough to have someone mentor me, or even pretend to mentor me. J.Ja

The 'G-Man.'
The 'G-Man.'

so who did you get your first break in the area? The way you are talking you should not be there yourself as people should not hire green programmers. So how do you earn a crust in programming if nobody wants to hire you due to inexperience?

Sterling chip Camden
Sterling chip Camden

My oldest son is studying CS at Stanford. But his best move so far has been to take an internship at a software company with no pay on his own time. He's learning a lot of things they never tell you in school -- not even at Stanford.

Mark Miller
Mark Miller

Just a caveat from my experience on what you said. I've done a lot of my own projects in my life, just for myself, but I found that employers were not impressed by them. I finally stopped included them on my resume. They wanted to know if I had had experience dealing with customer expectations, requirements, and meeting a schedule, in addition to my technical skills. That's the reason I suggested going into business for yourself out of college. Having said that, just a few years ago I used to hear employers say in online discussions that they would ONLY hire people who had worked on open source projects. So things may have changed some. You'd have to find those employers who have that proclivity. I imagine most don't. I was lucky enough to find an employer who was willing to hire me cold out of college, but from the sound of things that possibility may not exist anymore.

Sterling chip Camden
Sterling chip Camden

... it's better if those who don't know what they're looking for don't pre-screen at all.

Charles Bundy
Charles Bundy

A fellow engineer (Aerospace) was working on a faulty power supply. He called me over to help diagnose the circuit after he had ripped the cover off. Told him to watch his fingers as I bent over and plugged it into the wall... :)

Sterling chip Camden
Sterling chip Camden

Good extension of the analogy. False assumptions not only abound about the nature of the problem and the viability of a solution, but also about the opportunities available. We often end up trying to solve a problem that really doesn't matter compared to another one we're ignoring completely.

Mark Miller
Mark Miller

This was great, Chip! What I think would've made this mind game even better would've been talking about trying to eat what you have retrieved. So you THINK you've retrieved a banana. You've gone through all the steps you would normally take to retrieve a banana, but instead you've got a coconut! Now try eating it like you would've eaten a banana! This breaks through the barrier of the thinking that "there's an app. for that". Maybe what you need is not an app. (eating a banana), but some other system architecture for eating a coconut. If you try to eat a coconut like you'd eat a banana it's a lot harder! Sure you can get the coconut in a similar way to getting the banana, but eating a coconut in a way that makes sense is not the same as eating a banana. And it would've made things a lot easier if you would've thought about that before you decided that every fruit on a tree is a banana. I'm sure we all have had some experience with this, so to speak, in our programming careers. I have. I was on one project where I'd say was trying to retrieve and eat a coconut the way I'd normally retrieve and eat a banana. I got it done successfully, but man, was it hard! :p It's only been in the last year that I looked back on that and thought to myself, "You know, I should've tried a different approach," but then I think realistically that my employer wouldn't have allowed me to do it. They wanted me to use my "banana eating" behavior, because all they knew was how to eat bananas. Seeing me fumble around and experiment with the coconut, trying to figure out how to eat it better would've been far too disconcerting to them...

Tony Hopkinson
Tony Hopkinson

is not the real world. You want proof that they need a good bashing, you need go no further than the Vienna Development Method.... Dear Sales Manager as you can see from the loop invariant in this simple piece of predicate calculus we've definitely done what you asked for. Those who can, do.....

Sterling chip Camden
Sterling chip Camden

Yours are sound principles for most occasions. I guess my point is that no rule is sacred. The reason for having guidelines is to draw attention to common mistakes, rather than to be able to abdicate our duty to think. "Every base class should be abstract" comes mostly from old school Java, I think. The notion is that since classes represent abstractions, you haven't abstracted enough until you get to something that can't exist as an instance. It's inheritance overkill. "Every function should be a class member" is a principle that's hard-coded into languages like Java and C#. I like Ruby's answer: Yes, and No. Technically, every function is a member of a class, but conceptually you don't need to know or say that. In languages that give you a choice (C++, Synergy/DE, Lisp, JavaScript) I lean towards not using a class except where the abstraction is called for. Although I'll grant your "aggregation of related functions" concept has merit in languages that don't provide a better alternative.

Tony Hopkinson
Tony Hopkinson

testing is for people who don't know what they are doing. Meaningful names are for idiots. Breaking complex statements up with whitespace, is for people who can't read proper code. Oh and Keep It Simple Stupid is irrelevant as 'I' have a degree.

Mark Miller
Mark Miller

[i]Every function should be a class member. Every base class should be abstract. GOF is the Holy Bible of design, so every problem must fit one of their patterns.[/i] This is people thinking that adhering to a standard practice is the most important thing, without really thinking about what they're doing. I used to get into this, too, but in my time it had more to do with meticulously documenting everything I did with comments, creating single-purpose functions rather than functions that did a few different things, always using descriptive variable names, always making sure to use structured code (not goto's), and insisting on up-to-date requirements and design docs (I had very little power over this, being an entry level developer, but I used to complain about it to my managers). Even though these would be considered obvious best practices now (though I imagine the docs are still not up to date), it slowed things down for me in projects, because more often than not I was modifying somebody else's code and it wasn't written like this. I felt the impulse to rewrite a lot of the code, to fashion it according to my rules, partly because the code was written so badly it was hard to read. I even got into this a little with "Code Complete". One of the recommendations it made, which I didn't learn in school, was in if-statements always put the most common case in the "then" part, and the exceptional case in the "else" part. I did a lot of this if I was testing for error conditions: if (non-error condition) {} else { /* exception code */ } My manager finally got on me about it. One rule in "Code Complete" that really stood me in good stead was "always consider the else case". This was a really good rule, because it helped me make sure that I covered all possible state conditions. This made for more robust code that could handle error conditions competently. Anyway, this "adhere to the standard religiously" mentality also goes into picking a standard programming language or operating system. No one wants to deviate from the norm because they think it'll be too hard to figure out what the deviated version is doing, or they fear that there will be incompatibility issues (which are sometimes legitimate). There are differences in scale. A pattern that's not in GOF takes less time to figure out than code written in a non-standard language. I'll grant you that. Re: GOF is the Bible I personally hadn't run into this with GOF. I worked at one job where we used design patterns in C++, and the people there were smart enough to get the idea, not turn it into a religion, and come up with their own patterns. Re: every function should be a class member I assume you're talking about C++ here? I sometimes found myself doing that when I worked in it. I'd be putting a few static functions inside a class, and then I'd think "Wait a minute. Why don't I just break these out into separate functions?" I came from the C world. So to me putting all functions in classes when I didn't have to felt like overkill. Sometimes it made sense to put them in classes because they had a common variable they used and it felt better to have them all in one place, even if they were all static, because they were grouped together semantically. It was a way of saying, "Okay people, this goes with these things." Re: Every base class should be abstract???? Yikes! That sounds hairy, especially in C++ where you can have multiple inheritance! You can really get yourself in a sticky wicket if you have a diamond shaped DAG with an abstract class in it. Maybe the entry levels avoid this by also having the rule, "Never use multiple inheritance. Use composition instead." GOF prefers this approach anyway. To me abstract classes were a way of just saying, "Hey, instantiate one of the derived classes instead." I guess this is the way you do "Program to the interface, not to the class" in C++. As I've said before you don't have to deal with this issue in a language like Smalltalk. I forget but you probably don't have to deal with this in Ruby either. I imagine it's possible to not have to deal with interface types in C# anymore, because you can instantiate a class into a var, right?

Justin James
Justin James

I swear, for every programmer who took GOF the right way, there was an inexperienced programmer who took it exactly as you describe... argh. :) J.Ja

Sterling chip Camden
Sterling chip Camden

Not every CS grad falls prey to every one of these, but here are a few I've encountered: Every function should be a class member. Every base class should be abstract. GOF is the Holy Bible of design, so every problem must fit one of their patterns. Never use a goto (yes, they should be avoided, but every pathogen has its purpose). ... there are more that I can't think of on a Sunday morning.

Jaqui
Jaqui

you didn't disagree with my one rule set in stone though. :D good enough.. it's a subjective thing, not really a rule, more a guideline. yeah, it takes experience to grasp the difference between theory and practice. that example of sorts I used in the state of c/c++ thread shows it well though. a bubble sort is theoretically the fastest sort, yet if you profile a bubble and insert on the same data set, usually the insert is faster. [ there will be the occasional data set where a bubble sort is, but not often. ]

Tony Hopkinson
Tony Hopkinson

with the good enough rule. :p My big problem with CS grads is they actually believe that there is only one right way to do it, that it's the one they learnt, and that everyone else apart from their professor is unqualified to judge that they are wrong. They don't understand the gap between theory and practice, not surprising though no part of academia does as far as I can see.

Jaqui
Jaqui

three to five years and they are still having trouble with the unbreakable rule thing. There is only one truly unbreakable rule in software development: It is going to take time to do it, even more time to do it right, and astronomical amounts to do it perfect.

Editor's Picks