The Non-Programming Programmer

Jeff,

I’m not a programmer, but in the past the situation was similar in the publishing industry: There were lots of people with English degrees who thought they could be “editors.” The part of the industry I worked in (postsecondary textbooks) developed simple copyediting tests to weed out the posers.

Now, whenever someone asks me for advice about becoming a nonfiction editor, I tell them to forget whatever they learned in “English class” and instead prepare for a practical copyediting test based on the style manual in their chosen field. This makes most English majors very unhappy.

The most important thing, though, is whether or not someone can do their job.

Because nowadays there are many types of developers/programmers and it would be a bit conceited to assign superiority to one class. Why is a web developer who only works with APIs and writing glue code somehow less than a guy who does assembly for a living? If this was the case, why would that web developer be paid $90+k in the Silicon Valley and the assembly programmer be worthless?

If you were hiring a frontend developer for a 9-figure high profile startup soon to go IPO and make everybody millions (I dunno, maybe a Zynga or Playdom?) would you care more that the guy knows his algorithms, or that he is aware of cross browser compatibility issues?

Again, the important thing is that the person can do the job.

77 chars, using the shell suggestion by itub
map{print"$\n"if eval($)==2002}glob(join(’{,+,*}’,split(//,‘123456789’)));

I once had a PhD in Computer Science that could not program. This person was so incompetent failing even the most elementary programming assignments. Now the question is was it could not or would not?

What’s the difference if as a manager you have deliverables and they fail you. To make a long story short they eventually quit and now teaches programming at the University level. OMG, WTF

Having just stumbled across this site, looking for a keyboard for programmers ironically, I think I have an answer to this burning question. It simply boils down to the fact that (in my American experience at least) the College/University degree programs for software development glorify irrelevant garbage, like Super-Scalable-Generic-Jargon-Speak, and make light of the skills that are actually useful. I had a teacher that demanded a design for every program we wrote, minimum length was three pages, and it had to be written like paper for a Liberal Arts class. One of my fellow students actually had to ask how to put text on a button in a Junior level class.

I laughed at him, vehemently
Failed out of college
and now have a job writing software for business/inventory management applications.

About 15 years ago, I went through a battery of phone interviews for a little known company in Redmond that starts with the letter M and ends in the letter T and has icrosof in the middle.

Anyways, I passed the phone interviews with flying colors and proceeded to get flown out and do the standard 3 group interview process (interviewed by 3 different teams).

So, to prepare… i’m thinking, this is (you know) so I should bone up on my (you know) technologies, buzz words, etc…

Well, it was a disaster. I went in with the totally wrong mindframe. I was asked these questions about reversing a string so that each word was reversed but the still in the same order, and various other algorithmic questions.

I just drew a blank, because I was totally prepared for a different kind of interview, and I found myself in shock over what was being asked of me.

Needless to say, I didn’t get offered a position. But it did teach me to despise this sort of interview. I have no problems with doing relevant code samples, but unless you’re absolutely in need of someone that can think on the spot after being suprised by the interview… what’s the point?

I made a similar (free) online programmer interview tool using Silverlight (real time code viewing; simple chat included for discussions). You can find it here: http://www.vladhorby.com/Coderproof/

I’m floored by the asinine and stupid comments on here from a bunch of effete snobs. I have written hugely complicated analysis systems that would put most people to shame - yet I have no frigging idea how to compute a ‘fibbonaci’ number. Nor do I care to. If that’s what you are using for a ‘screening mechanism’ then you have no damn business interviewing anyone and should just crawl back to the cubicle you came from. I’ve both interviewed and interviewed bit twiddlers like I’ve seen here who have some vast sense of self-anointed superiority about their ‘programming skills’ who couldn’t program their way out of a wet paper bag, and then ask idiotic programming questions like the ones I’ve seen on here. Amazing. I’m glad I don’t work for the likes of any of you.

And really, who gives a **** whether or not I can write a function to reverse a string? Isn’t that what the g*******d API is for? Tell ya what, skippy. You pull out your portfolio of work and I’ll pull out mine, then we’ll play rock-paper-scissor-spock and see who wins. Someone who writes code should be able to do exactly that - pull out a damn portfolio of past projects and work - and that ought to settle the question right then and there - so let’s move on to something more relevant and germane to the situation at hand, shall we, mkay? Good.

Schwartz – You’re actually incorrect. The reason manhole (personhole) covers are round is so the cover doesn’t fall down the hole. That is the correct answer. Oh, and for the record? Ex-Microsoft, still an alum - '92 - '94. Yes, I was one of the ‘chosen ones’ and they did ask questions to gauge my intelligence and my perception - but they didn’t ask me idiotic and stupid algorithm questions.

@Barney - what, exactly do you find so preposterous? That someone would steal your solution? Guess what, dude - that happened to me. I had a company fly me down and put me up in a fricking hotel overnight so they could get a free consultation in the form of an interview. My god, your ignorance and naivete are frightening.

Pixy - You’re really getting on my nerves, you know that? So you’re telling me you went and ‘interviewed’ the last doctor that you went to, right? I don’t give a crap about whether or not someone can program a stupid algorithm. I DO give a crap about whether someone can consider multiple approaches to a PROBLEM and tell me what they see as the pros and cons of each approach. I can hire a bit twiddler from India. What I WANT to hire is someone who a) isn’t some retrograde morphodite thumb-sucking ass-backward programmer with the social skills and adaptability of a rock and b) someone who may not know all of the answers but by God knows where to go and get them.

And by the way - there is no one ‘right’ way to write anything or code anything. If this line of work was easy, everyone would do it. There are more optimal and less optimal ways of solving problems in programming. Again, effete snobbery. I’m so glad you don’t work for me. You wouldn’t make it past the first five minutes of my phone screen.

Jasmine:

IMO, when a person shows up for an interview, and they can’t even code Hello World in a language they claim to know, they are a fraud, plain and simple, and they don’t deserve a job flipping burgers, much less a job on a team which needs to get stuff done. We’re not an educational institution, and we’re not in the business of teaching programming. However, if someone came in for a job which was clearly entry-level, and they were honest and said they didn’t know much programming and really wanted to learn, I might take them on and help them out… but they would need to have some skills which can benefit the company, or not expect to get paid. We don’t have interns here, but we do have volunteers, and if you really want to learn something and you’re starting from scratch, a volunteer position might be a good way to go.

Really? They don’t deserve a job flipping burgers. My god - you really are hardcore, aren’t you? And how did you, oh might master of programming, get your start? See, I have real problem with people like you - they get filed under ‘flaming ahole’ - because ultimately, that’s what people like you are. They. Don’t. Deserve. A. Job. Flipping. Burgers. Man, what a piece of work.

This is mainly why i do not work in the industry. The code should be actually an art of transposing your ideas in the binary world. But for what i’ve seen in my university and for the people who finds jobs, they are mostly incompetent. When you don’t know what is a pointer or a variable, i can tell you for sure there’s a problem. I’ve been coding now for at least a good six years on and off and primarly because i love it, i’m still a student in that way until i find the right job and i’m allowing myself to see something different.

Programming is just mathematics that makes sense, the bug is just the human behind it.

Wow. I read this article yesterday, and I was shocked.

I decided to try a Perl implementation of this, assuming all integers greater than 0 and less than 101 to be the “numbers”.

Keep in mind that I don’t have any formal/institutional programming knowledge/experience; all that I know about programming I have found on my own (or, occasionally, asked on a forum).

So, using “vi”, which I am still quite new to (and struggling with), I managed to get a working Perl implementation, along with some added formatting (commas, spaces, and newlines).

Also, it tells the user when it is finished. Finally, I left room for easier modification, if it would need to be expanded. There are also some comments where I had lines I was using for testing/debugging.

Now, here it is:

http://pastebin.com/39JT0eNA

Of course, this is not “good” code, but it does work. I doubt it would allow for a successful interview, but nonetheless, it is really scary how easy it was for me to get a working implementation, since people that should know far more than me, apparently can’t make it happen.

For what it’s worth, I’ve had this issue both when I was a developer participating in techincal interviews and as a hiring manager - and the problem IS getting worse.

Part of it is that more and more of the competent software engineers I know are retiring, early, out of the field, simply tired of working under ludicrous conditions (chaos, no requirements, no process, etc). The other part of it is that most organizations, with the exception of a scant few, don’t really spend time nurturing their developers or creating real software engineering groups - most of them care more about code slingers - then wonder why their projects are delayed and don’t work.

Don’t get me wrong half the problem is that most business units have no clue on how to approach a software development project. But the other half of the problem is unacceptable incompetence on the part of the software development manager and team.

And all the management consultants aren’t going to help if a) you can’t define the problem you’re trying to solve b) you have truck drivers that can’t get out of first gear!

I tried codability an only scored a 19/100 on their example program. I don’t think it’s adequate on showing who can program or not. Especially given only 30 minutes to complete a program that requires some degree of extensive testing.

"Equilibrium index of a sequence is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. For example, in a sequence A:

A[0]=-7 A[1]=1 A[2]=5 A[3]=2 A[4]=-4 A[5]=3 A[6]=0

3 is an equilibrium index, because:

A[0]+A[1]+A[2]=A[4]+A[5]+A[6]

6 is also an equilibrium index, because:

A[0]+A[1]+A[2]+A[3]+A[4]+A[5]=0

(sum of zero elements is zero) 7 is not an equilibrium index, because it is not a valid index of sequence A. "

Try solving that in 30 mins with little testing

When I tried to find developers for my company, I also faced with this problem. It is very difficult to find well-experienced programmers with good programming skills. All of them already have well-paid job or work as freelancers and do not want to be hired by somebody. The only thing to do in this situation is to hire guys who have great potential but do not have sufficient programming skills as probationer and teach them.

@Programmer415 I’ve got 100 just by being deliberately accurate, forcing myself to find an O(n) algorithm and remembering about edge-cases. That even worked on the first run (their test button), and was fun overall (at least in Python).