views:

1111

answers:

11

While browsing answers to several popular questions, I keep coming across the FizzBuzz test, and more generally, the observation that a lot of people who apply to programming jobs don't know how to program.

Now, I certainly wouldn't consider myself a star developer. I don't have a CS degree (though I did take a few programming classes in college), I'm not certified in anything, I haven't made any notable contributions to popular open source projects, I'm just someone who enjoys hacking on code as a hobby. But I would have no trouble writing a simple program to count from 1 to 10, or compute the area of a circle, or implement a linked list (that's not the limit of my ability of course). And the web pages I've been reading give the impression that those rudimentary skills might put me in the top 50% or 10% or even 1% (!) of the applicant pool for many programming jobs. Sounds ridiculous, I know.

Anyway, as the title suggests, here's my question: is a good grasp of basic coding skills enough to get someone seriously considered for a development job? If not, is it because the prevalence of incompetent coders is greatly exaggerated? Or do they have other attributes that compensate for their lack of skill? I know this will vary from employer to employer, area to area, but I'm interested in getting some real-world reports.

A: 

There is only one situation that I can think of where I (or my company) would hire someone with little to none programming knowledge as a developer: if we're exlpicitly looking for a Junior, and the applicant can convince me that he is enthusiastic and able to learn quickly and absolutely willing to learn the required skills "on the go".

ISW
A: 

from jeff's blog: "What's the number after F in hexadecimal?" ... got me thinking :)

roman m
A: 

From my experience what get's you considered for a development job (or any job for that matter) is what's on your resume. If you don't have some programming-related degree on there, they probably won't consider you (in other words you won't get to the interview). Also, most job ads usually put some number years experience plus some degrees as a requirement. Of course, as you've noted above, having a degree doesn't mean you posses the implied skills.

Daniel
You may want to amend that to "degree or experience". (15 years professional programming experience, 15 more hobbyist before that. No degree. Not having a degree hasn't been an issue since my first paid coding job.)
Dave Sherohman
That's true, a degree is more of an issue when starting out. However, some programmers I know have gone back to school to finish their degrees to open up more opportunities for themselves. Some companies value degrees more than others.
Daniel
+9  A: 

is a good grasp of basic coding skills enough to get someone seriously considered for a development job?

Yes, in certain cases:

  1. The economy is booming, and hardcore coders are hard to find;
  2. You have other, complimentary skills...for instance, if you've worked as an insurance agent then you may have an advantage in applying for a job that involves insurance software;
  3. You hold a security clearance and you're applying for a job in the defense industry

Demonstration of attention to detail, basic courtesy and a desire to improve your skillset also go a long way towards landing a technical job and can put you at an advantage over other, more experienced developers.

Obviously, there are cases where aptitude, attitude and complimentary experience aren't going to get you the job, such as contracts on which the customer has specified "must have X number of years in Y" and your experience is measured in months.

If you're interested in being employed as a programmer, then apply for every position that you feel you might be qualified for. Period. If you don't get weeded out at the HR or manager level, you've got a good chance of presenting your case as to why you should be hired for the job.

And, of course, if you actually are hired then the hard part begins: meeting expectations and building experience for the next time you go looking for a job.

Cal Jacobson
A: 

As an initial disclaimer, you do need some solid skills to do development, you can't build applications on hopes and wishes.

However, beyond a good understanding of how development works in general, the things you really need to have are an ability to learn quickly, a never ending appetite for creativity, and a passion for doing it.

If you can make a CRUD application, that's great and you can get a job. But if you can adapt to situations and learn quickly, that adds true value to an organization.

routeNpingme
"But if you can adapt to situations and learn quickly," I agree, but that is even harder to measure than basic code ability in my opinion.
EBGreen
A: 

i would call it a base, but in many "programmer" jobs its not enough, especially in java development the need for a real programmer is a rare case, more often you need an "architect" with programmer background (real architects are not for the hard work)

it really depends on WHO is in charge of the hiring process, is it a (former) programmer (now poor project manager..) or not ? the last one needs some nice looking degrees on your resume, the first one wants experience or at least some examples (aka portfolio)

Michael Lange
+1  A: 

It depends on the job and the interview team.

Will it get you a job at MS or google or some other highly selective place? Not likely, but it sure would probably work elsewhere depending on the applicant pool.

As others have pointed out, some of it is cyclical. There are times when companies throw money at anyone who has even heard of the word "compiler".

Tim
+4  A: 

Depends on the job, of course.

For the kinds of jobs I've had, you might be about as bad as somebody who knows CS degree stuff but can't write a working linked list: we're looking for people with both high- and low-level skills. In typical coding, I write Fizzbuzz and linked lists about 0% of the time -- these are necessary but not sufficient. It's like a musician who can play scales and etudes really well, but has no concert experience.

Companies that hire people with certifications/degrees but who can't write code probably aren't software companies and/or don't know any better. It's not because a Certified programmer who can't write a linked list is somehow a good deal.

I can think of a few approaches that might help you:

  • If you want to learn higher-level skills, you certainly can. Your best bet is to find a mentor, or a place with that kind of environment, which will teach you about how to work on large programs. If you can't find a company that will offer this (not surprising, given that everybody's being laid off right now!), I'm sure the right open-source projects can offer this.

  • I suspect there are some subset of programming jobs where the skillset you have is more valuable. For example, on embedded processors, the world is very small, and the ability to write basic data structures is relatively more valuable than in the world of, say, ASP.NET web development. That's not to say that embedded programming is necessarily easier, but it might be right up your alley. There are probably others.

  • Look at the intersection of computers and other fields. Many people can benefit from computers, but most people can't hire Google/Microsoft/Apple-class engineers to implement it for them. For an academic field or industry that hasn't seen much computerization, sometimes anything helps. It's a great way to learn, and you can then show off the finished product when looking for another job. I got my start by asking a humanities professor at my university if he'd hire me to write a program that would make his life easier.

Lots of successful programmers (e.g., Tim Berners-Lee, JWZ) had no CS degrees, so don't let that discourage you at all.

Ken
A: 

You can sometimes get into a programming job indirectly. I started in avionics maintenance, got into automated test equipment (ATE), into general automation, and today I write applications code for industrial robots.

You might be able to get a job as a junior developer. Just having mastered the basics is a sign of achievement. If not try to find a job that involves some programming and see where it takes you.

One last bit of advice, be prepared for a life time of learning. This is an industry that reinvents itself every few years.

Jim C
A: 

In the current environment, it is professional experience as a software developer, along with skills in specific technologies and APIs that gets you the job.

CS degrees are only necessary as a requirement by certain companies. However, by themselves they do not help you find a job. It is all about experience.

I am almost Ph.D. in Software Engineering, with a couple of M.S. degrees and a B.S., have been developing for years, worked for a couple places, and people are not exactly lined up on my door with offers for development positions, because most places want somebody who's spent the last 5-10 years becoming an expert on one technology.

Basic skills and no major experience? I wouldn't count on it. Being really good in one thing? You stand a very good chance, though you may have to relocate.

Uri
+1  A: 

You'd be surprised just how far I got by on rudimentary programming skills in the early days of my career. It wasn't just my barely-passable skills that got me far though. It was saying yes when others said no. I don't mean getting walked on, but rather accepting that nothing was beneath me.

Often, more experienced programmers wanted to work on more rewarding projects so they'd say no to tedious tasks or jobs that required interfacing with some really crappy software that they disliked. It was easier for them to say no.

By providing functional solutions -- even ones that looked amateurish and sloppy from a coding perspective -- I first began my career in earnest as a developer.

Dinah