The Non-Programming Programmer

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

1 Like

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.

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.

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.

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

1 Like

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.

<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>
2 Likes

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

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: ?

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.

1 Like

You probably could get a job, but I would not recommend hiring you based on that sample.

There’s a certain elegance and robustness that good programmers strive for. Some of it is because computer science started as a branch of theoretical mathematics, and some of it is because decades of painful experience have shown us that ignoring elegance and robustness will bite you in the butt eventually.

Anyway, some initial-reading problems that I noticed:

  1. Purpose of function and meanings of arguments are not clear in declaration of lightYearAway.
  2. Comment is not a Python docstring and doesn’t describe what this function does.
  3. There is a dearth of comments, in general.
  4. If usOrmetric is something other than 'us' or 'metric' then the function crashes.
  5. Repeatedly modifying d and s like that is confusing and bug-prone.
  6. lightYearAway violates separation of concerns. It calculates, with different hard-coded numbers depending on unit, and also creates formatted output, with hard-coded strings.
  7. labelNum looks buggy. We have zip and list comprehensions for a reason.
  8. Variable is called num but is actually a string.
  9. This code sample runs on Python 2 but is not Python 3-compatible. We should strive for Python 3-compatibility even if we’re using Python 2.

Hi There, I was curious to see the program to see a code written on paper, so I tried the link but it seems to be down… Is there any way for me to get in touch with the original creator so that I can see what code he wrote to get a paper pen feel available to code yet not share the system.

Sorry if this post seemed irrelevent to anyone, I am just curious.

I think one of the issues I have with “programming interviews” is the understanding that some programmers program differently than others. Some may also take a bit more time depending on the situation.

For example, if you give someone a programming task during the interview. One of the key things they would be measured in is time to complete, as such you’d be looking for people to just spit code out ASAP and hope they work correctly.

Adding a new feature or analysing requires time to design and sometimes the thought process may require to “sleep on it” to get a proper result. Unfortunately that is not something that can be afforded during an interview.

So how would I do it? I had two technical interviews which I would model stuff on. Of course I am biased due to the integration aspects of my work in the examples but here it is…

Given technology A, B, C make something that ties them together that does Y. Y can just be something as simple as having a button on A that talks to C that does something on B.

I don’t expect too much detail either like 100% coverage on unit tests or comments. Since this is a relatively rushed job, I’m not the only employer I am expecting the candidate to look for.

What I would likely expect would be an opinion on what they went through or how they could make it better, the hurdles they had faced, how difficult was it to find the information needed to get the task done.

One of the requirements I would have for a programmer is to have a github presence. Because I would actually want them to show me an example of a project regardless if it is trivial or not so I can see the coding style. Of course I would ask them to choose one that they can say they are proud of the quality of the code base…

Can they fake it, it’d be difficult.

(@PaulJ Wow, I should hate you for that ! But I can’t, it made me work harder on my code, and i liked it !)

Maybe you should consider adding errors during your interviews, just to see how the programmer is reacting.

I agree with WolfGang2. These math questions mean nothing except the person is good at math. I have programmed for 15 years in real world situations and have a good job right now. I can tell you on two fingers how many programs we have used that did anything with math. That’s how irrelevant math is to real world situations. Much like a calculus class. The average graduate won’t touch calculus after graduation so why do we take it?

A great programming interview would just have the interviewee explain OOP with a few other questions dealing with things they did on their resume. If they said they did Java for 5 years ask them a Java question pertaining to their experience. If the answer is correct then see if they are a fit personality wise at that point. If they are you have your person to hire.

Simple as that. Most programmers these days use google as a tool to code anyways. Which means if they have issue they go to stackoverflow or codeguru. It is what it is. As long as the job is done and on time. That is what matters.

Hi Jeff,
According to me,
Those who knows programming doesn’t go for lots of interviews.
I showing some facts
There are 10 jobs in the market and 10 candidates searching for job.
3 knows good programming and 7 don’t.
for 10 jobs 3 will be interviewed and selected, but 7 will be interviewed for 10 jobs 70 times.
This is not a new thing in the market this is just a representation of numbers.
Everything is same as earlier.
Earlier there were limited jobs and limited number of programmers (experts) but now we have lots of programming jobs and lots of number of programmers saying or pretending that they are programmers.

1 Like

I would use math questions but specifically Boolean logic math. It gets applied in SQL quite often. e.g.

(a == null -> b == c) && (a != null -> (b == a && b == c))
(a != null || b == c) && (a == null || (b == a && b == c))
(b == c && a == null) || (b == c && a == c)
a == b && a == c

The last line was based on Wolfram Alpha simplifying things for me so I don’t have to do it myself.

But in terms of dealing with calculus or complex problem solving chances are not much in most enterprises.

I think if the interview looked for a Java programmer you should have come up to speed a week before to prepare for the interview. Then again sometimes you just get the side swipe interview where you’re really not prepared for it especially if you’re getting the interview while you’re still working.

I am glad I found this blog. I am a nonprogramming programmer who somehow managed to pass through 4 years of college. I was already in my late 20’s going into college and opted for software engineering as a second choice. Long story short after 10 years with the same company; I have learnt a lot but realized going into interviews, I don’t.

I was asked on my very first interview which I was completely unprepared for, to explain hashmaps, abstract vs interface, memory leaks etc. I did not know how to answer these questions.
I learnt how to code by taking the examples out of books, redoing the code and changing the code to try new outputs. My job entailed learning how to code web crawlers, form based web applications and language learning scripts to name a few and on each assignment I searched for tutorials and admittedly copied code; but my projects worked and still till today run robustly.

I will get flack for this and told but it’s not your code and bla bla. Yes, that’s right but my argument is that not everyone is a Bill Gates or Nemo who can just see the code and write something new. Do I not deserve the credit for getting something to work and being able to go on and do it with multiple languages? Is my career a fake career? Once I was told to set up an Apache tomcat server and build rest API’s and managed to find the solution to do it. Yes, I agree, I would not be where I am if not for google, stackoverflow and others.

I agree I am in the wrong career, but where do I go from here. At 40 years old, i realized that I would have to apply for a junior developer position to learn everything there is about one programming language to be recognized as a true software engineer or developer.

Thanks to all you true programmers.

Just study common interview questions. Then you can learn about the required concepts as you go.