a companion discussion area for blog.codinghorror.com

The Non-Programming Programmer


#243

Maybe if companies didn’t focus so much on stupid buzzwords and focused more on skills and viewing the programmer’s portfolio, these things wouldn’t happen. I don’t even bother applying for jobs when the job description is loaded with buzzwords. Most of the time, I can’t even tell what the day-by-day activities of the job would be after reading the job description. Employers lie through job postings and job candidates lie through their resumes. In the end, both parties are disappointed and so much for ‘automating’ those ‘streamlined’ ‘solutions’.


#244

My ruby solution

100.times{|j|
i = j+1
outt = i.to_s
outt = “Fizz” if i % 3 == 0
outt = “Buzz” if i % 5 == 0
outt = “FizzBuzz” if i % 5 == 0 and i % 3 == 0
puts outt
}


#246

I decided to throw in my 2cents about the issue (it is rant, copy-paste from original blog post:

In (awkward) defence of the non-programming programmers

Recently in response to a new site, codify, there was an uprise in the blog-sphere about the concept of non-programming programmers. Reference article the one in coding horror. Although no-one reads my blog yet , I would like to throw my 2cents.

I will defend the non-programming programmer. There are many and they are needed and many companies want them. That’s why, that’s the unfortunate truth.

I happened to be (for short term periods, I could never stay for long there), in companies where:
Accounting is being done by accountants,
Graphic Design is being done by graphic designers,
HR by the HR team,
etc…
and “Programmers” do everything else.

Usually they are tech savvy people with some knowledge of coding, that spend their days doing: configuration, customer support, server or general administration and eventually… some programming.

They are good for their company (they can do anything), don’t complain a lot, do all tasks quite well. Remember we are not in a software company so the tasks are usually trivial, that’s why. They also don’t spit out spells like TDD, Merging, Continuous Integration that are some fixations of some remore ultra-geeks… Even the clients are usually happy that they can “talk to the developer” straight.

Who is not happy? The real developers and software engineers, people who can think algorithmically, want to do their… job, and get working in such environments.


#247

@paul:

You have the numbers 123456789, in that order. Between each number, you must insert either nothing, a plus sign, or a multiplication sign, so that the resulting expression equals 2001.

Are you sure it is 2001? I think it is actually 2002. I actually wrote the program in java and then also verified it with awk/bash.


#248

Once our company hired a guy and he was assigned to my team (I was not involved in the hiring/interview process). I assigned him one task and he came back to me next day and said that it can’t be done, because no documentation is available anywhere about it. What he done was, he googled the name of the class / function from our code base and tried to find the solution from the web. The amazing thing is even after I pointed out to him what he is trying to do, he is defending himself to the point that it can’t be done because its not in the web!


#249

I always get really pissed off when I hire an outsource guy that says he can code, but ends up just copying code off forums and tweaking it to fit the project instead of making good quality code. the “seemikecode” site is pretty sweet. I haven’t tried it yet.

Another site I just found, though, that kinda speeds up the process for coders, is ColorinHTML.com. Check it out, y’all might find it useful. You might even be able to take a “coder” to it to see if they even know what CSS is! Ha!


#250

Are they allowed to use the API documentation? One issue that I have is that having used several languages is that I can’t keep the various libraries straight (most of my jobs are SQL Developer so I am an expert on any one programming language).

If you ask me to write something simple with basic arrays/etc. no problem. But once we go into the library, I would probably need to refer to the api reference. So I was wondering if that is considered not being able to program under your test.


#251

I have been employed as a programmer for 10 year and I can assure you that I have created and maintained a great deal of code in that time. When I’m at work I have time to think about a problem until I figure out the algorithm, but doing it on the spot when I know there is a time limit, or on a whiteboard in front of a group of people I find very difficult. To find the author of this blog sitting back and calling people like me “non-programming programmers” makes me want to vomit.


#252

My favorite interview question I was asked:

Interviewer: "Do you know what a thread is?"
Me: “Yes”

Then, before I could elaborate, he moved on to the next question. Needless to say this shop ended up with lots of NPPs.


#253

Not only do I wonder “why do people who can’t write a simple program even entertain the idea they can get jobs as working programmers?”, I end up screaming at the TV when some idiot says “well, I’m a programmer, but I’m only doing that to pay the bills, I really want to be a property developer”.

Argh!!!

I’ve spent 20 years trying to get people to pay me to use my innate skills and aptitude as a programmer, and ending up working as a builder To Pay The Bills, and there’s incompetant d*******s like them out there who don’t want to do the job I do want, and want to do the job I don’t want. What is it with today’s society?

I’ve only got the development job I’ve got now because the lady who recruited me refuses to use agencies and HR people and tracks down people personally on individual recommendation.


#254

Programming is more art than science in my opinion, people can copy paste make tweak and still can manage to get it work but thinking programatically,or producing solution , algorithm and even writing a quality code is art, you just don’t see on every single programmer, out of all programmer and developer only 2-5% qualify as excellent and those are the ones who drives all others.

Thanks
What to review while doing Code Review


#255

Its not a matter of these “non-programming programmers” being incompetent. Its more a matter of most of them have been away from programming for a few months. Give them a job, and they’ll pick up it quickly enough, as they did in school. Much better to ask for reference materials such as a previously completed project, or simply take a look at their transcript and see what sort of grads they achieved.

Also, computer science is far more broad than just programming. Programming is just one part of computer science. Trying to evaluate a computer scientist by their programming aptitude really strikes me as being ignorant of what the profession and the education really is. They don’t hand out CS degrees in CrackerJack boxes – its still one of the most difficult degrees to obtain in the undergraduate catalogue, and to discard people because they can’t do your coding test really strikes me as ignorant.


#256

Precisely. I wouldn’t interview a surgeon to remove my gall bladder by bringing a diseased small animal to the surgeon’s office and asking that the surgeon prove his skill at operating on it. Why would people treat professional computer scientists in effectively the same way?

Whatever happened to the value of a credential? Reputable schools do not create “non-programming programmers” if they give an individual a programming credential. In the short term, there are occasionally learning issues. For instance, I probably couldn’t do the “Fizzbuzz” test in Java, because I haven’t programmed in Java in years. But give me a week to come up to speed, and I doubt there would be an issue.


#257

I’m a programmer and I honestly would have had trouble answering a lot of the questions people are talking about just going off my programming experience. And that’s probably because I’m self taught–I know how to program. But I haven’t used most algebra since high school. As a programmer my job is to solve problems. As for the math? Buddy, I’m working on a giant calculator.


#258

Yep, same here. Just because someone doesn’t test well doesn’t mean they can’t program. I have created many many applications in the past 20 years and many of my applications are used by thousands of people in multiple countries.

If you don’t use something often you won’t remember it. I was looking at the Fizzbuzz solution and it is easy, but I couldn’t remember how to do it so just because of that I won’t get a job.

Let me give the guys a test on Java 8 and using FX 2 and 3D development and SOAP services and JSF 2 and PrimeFaces and and and. The things I work with every day for the past couple of years and lets see how they do. No I don’t remember how to do bubble sort. I do know how to type in google.com. I don’t remember how to calculate remainders. I know how to type in google.com. I think tests that do not test the real world are stupid.

Writing a test in a text box in a web page is stupid. I used a dos prompt and notepad before Java 1. Why do I need to keep on going back to that when I am using an IDE 8 to 12 hours a day 7 days a week? Give me a job and let me do the job. If I can’t do the job let me go without pay after a week. That is the way you should test someone


#259

I think in a lot of complex environments it takes more than a week to acclimate to a large project so that’s not necessarily a good way to do it, and most people wouldn’t work a week for free. It’s probably actually illegal in a lot of places. It would also be extremely tedious and time consuming to find programmers that way, and when you want a programmer you usually want one up and running ASAP because your business really needs one. But I get where you’re coming from.


#260
<RANT>

“Woefully inadequate” - well, of course they are! Perhaps where you work your interviews are conducted by actual developers. Out here in “the business community” (I work for a large nationwide retailer, and have seen the same pattern everywhere I’ve worked (30+ years)) initial interviews are conducted by HR, who are nice people but don’t know jack about technology and just check the candidates resume against the job requirements (“Yep, 10 years of LanguageX experience. Yep, 5 years of DatabaseY experience. Wow! They know everything our job ad mentioned - AND THEY’RE UNEMPLOYED! Wooot!!!”). Second interviews are conducted by managers who, at best, haven’t programmed in 15 years, don’t know the languages or technologies we use today, and choose candidates based on non-technical factors such as “She’s young - she’ll bring a fresh attitude”, or “He worked for BigWebsite6 until last year when he got laid off - lucky for us!”. Sometimes a project lead will be dragged in, if he/she/it isn’t too busy, which is always. Developers first meet the “candidate” when the manager shows up with a new body in tow and says, “This is Fred. He’ll be working on your project. Teach him about our stuff…”. Hi, Fred… We had one VP who insisted on using a programming aptitude test (I thought it was fun) but when he got moved to a different area the test vanished (it cost real money and couldn’t have been valid because some people couldn’t pass it!). My point is, about 1/2 the time we end up with the New Guy who not only doesn’t know the languages and systems we use but can’t program their way out of a wet paper bag, and more to the point can’t or won’t learn how to actually produce clean working code. “But he/she/it is really good with paperwork!”, we’ll hear - and yeah, that’s great, but unfortunately ol’ Fred is filling a developer slot even though he can’t write 10 GOTO 10 correctly, and so we load up ol’ Fred, hook him to the long line of office chairs snaking metaphorically through the building, and push and pull this train towards the project finish line. Toot-toot! All 'board…!!!

</RANT>

#261

In VBA

Sub prim()
Range("c4").Select
a = ActiveCell
Range("d4").Select
c = ActiveCell
For i = 2 To 100
For j = 1 To 100
b = a / i
d = c / i
If b = j Then
    For x = 2 To 100
    If d = x Then
    Range("c6") = i
    End If
    Next x
End If
Next j
Next i
End Sub

#262

What if you are a self taught programmer? In my case I have been teaching myself AS3, JavaScript, PHP and python. I have made some complex CMS using AJAX & AS3 two way communication with PHP. I recently made my first python program compiled to run completely cross platform on 64 bit OS’s. I hold no CS degree. I have never worked as a programmer. Im not sure but I think I would have a hard time passing a test although I have never taken one. I understand types like Strings, Boolians, Integers, Floats. I can use typecasting in AS3. I understand for loops and iteration and incrementation. I understand while loops. I may not be superbly proficient in any one language but I know how to research and make programs that work.

Simple example of something super basic

def lightYearAway(num, usORmetric='us', sm=False, hint=True ):
  #Planet smaller than earth discovered 200 light years away
  if usORmetric == 'us':
    c = 186282
    small = 5280
    unit = 'miles'
  if usORmetric == 'metric':
    c = 299792458
    small = 1000
    c = c / small
    unit = 'kilometers'

  second = 60
  minute = 60
  day = 24
  year = 365.25

  d = c * second
  d = d * minute
  d = d * day
  d = d * year
  d = d * num
  if sm:
    d = d * small
    if unit == 'kilometers':
      unit = 'meters'
    else:
      unit = 'feet'
  s = '{:%d,f}' %len(str(d))
  s = s.format(d)
  if hint:
    s = s.split(',')
    s = labelNum(s)
    s = ','.join(s)
  return '%s light years is %s %s away.'%(num, s, unit)

def labelNum(arr):
  numName = ['hundred',
   'thousand',
   'million',
   'billion',
   'trillion',
   'quadrillion',
   'quintillion',
   'sextillion',
   'septillion',
   'octillion',
   'nonillion',
   'dicillion',
   'undicillion',
   'duodicillion',
   'tredecillion',
   'quattuordecillion',
   'quindecillion',
   'sexdecillion ',
   'septendecillion',
   'octodecillion',
   'novemdecillion ',
   'vigintillion']
  i = 0
  st = []
  for s in reversed(arr):
    if not s == '000' and s.count('.') < 1:
      st.append('%s(%s)'%(s, numName[i]))
    else:
      st.append('%s'%s)
    i = i + 1
  return list(reversed(st))

num = lightYearAway(200, 'us', False, True)
print num

Would I be hireable as a programmer? Im asking because I love doing it. I do it all the time like other people do crosswords. I want to peruse it as a career! Would I be considered a programming non-programmer :no_mouth: ?


#263

Thanks, I am in the position right now of having to work with a programmer who does not know how to program. And let me tell you, it is absolute hell!

First there is the chock and disillusionment of having to work with someone who is doing an M.Sc in computer science and does not know what parameter passage is. Stuff that you learn in your first Computer Science class. What are they teaching in Computer Science schools?

Then there’s the time wasted, Covering-up for this person’s incompetence/mistakes. Doing the work that he/she is supposed to do. Teaching basic things on the company’s time. And then having this person take the credit for work he/she was supposed to do.

And then there’s just, the missed opportunity of learning from peers. While I am teaching “Hello World”, I could be solving problems collaboratively and learning from programmers with real skills. I am learning nothing new, only patience.

This all makes for a really demotivating workplace which I am now leaving because I am simply fed-up. It’s not my job to point-out to management when an unskilled programmer has been hired.
They need to learn this on their own. Hopefully, management will figure this out when I leave.

Thank-you for letting me rant.