Fake Banner
By Alex "Sandy" Antunes | June 30th 2009 08:28 PM | 9 comments | Print | E-mail | Track Comments
About Alex "Sandy"

"The Sky By Day" looks at the science and the people in today's 9-5 pro astronomy world. Born in the heart of a dying star (as we were all), Alex...

View Alex "Sandy"'s Profile
Time for a job-hunting question.  Which programming languages can you work with?  It's not the same question as which languages you know, and can be a surprisingly hard question to answer, particularly when you're job-hunting and the issue comes up.  Answering 'all of them' is a bit overconfident, but listing each one can be inexact.

Being a programmer is akin to being an athlete.  You're up to speed in what you do, and easily able to perform in a variety of fields, but have better ability in some areas than others.  A middle distance runner can switch to long distance easily, less so to cycling, perhaps poorly to biathlon.

From a hiring point of view, you usually have legacy code or a chosen developer environment, and you want your new hire to fit it as neatly as possible.  If it's a teaching situation, you absolutely want your new hire to know the core languages being taught, not a reasonable facsimile.  But you also don't want to hire too narrowly, someone that is so locked into a single language mindframe that they're trapped.

Looking at the employee side, on my resume, my criteria is I only list languages that I've used for code delivered to a production environment, and for which I'd feel comfortable being handed a task due by the end of the week.

From my most recent resume, for example, the breakdown is "C++, C, Lua, Java, PHP, Perl, SQL&MySQL, Python, Lisp, F77/F90, Tcl/Tk, IDL, JavaScript, OpenGL, and others; HTML; skilled with Linux&Unix, Mac, Windows; Word, PowerPoint, InDesign, OpenOffice, et cetera."  Lots of "others" and "etc" there.

To illustrate the confusion...some languages are also packages.  Matlab, IDL, and Mathematica are good examples.  Do you list them with tools like 'Office' and 'InDesign', or with languages like 'Java' or 'C'?  SQL is a language, MySQL is an implementation of that language.  If you know MySQL, you largely know PostgreSQL and can also use and develop for Oracle (but not list yourself as an Oracle DBA).  Are HTML and XML 'languages' or 'skills'?

At my first NASA job interview, they asked if I knew LISP.  I said I would by the time the 3 month start date arrived.  I got the job.  That's part of what being a programmer is... you learn languages the way athletes pick up new sports.  Quickly, and with great facility.

Alex, the daytime astronomer
The Daytime Astronomer, Tues & Fri here, via RSS feed, and twitter @skyday

Comments

Hank
None of those except the one in your last paragraph existed when I started programming and I was never a programmer (for anyone else - I did create, with a friend, the first visual sign language tutorial on CD, "VisiTalk", when a 1X stand-alone burner was $5000) but I learned programming well enough to create this site.  

I don't really feel like I can claim proficiency even with PHP, though this was done in PHP.   I think any C person can do PHP but I never learned C so I can do functional PHP that is task oriented and not really write in it.   Would they still be listening if I say FORTRAN and Pascal?  I missed out on LISP.   I don't think they taught it when I was ramping up on that UNIVAC 1100/62 but I am not sure why.    Probably the instructors didn't use it.

antunes
Ah, Pascal.  I seem to recall my undergraduate class was the first to learn 'C', prior to that BU taught comp sci using Pascal.  In retrospect, a lucky break for me-- so many languages today are very C-ish (including, as you note, PHP, also Perl).  Even Fortran is basically converging to be more like C (and yes, Fortran still exists, is still used in the sciences, and is still being updated.)

But really, in the end languages are just tools.  You don't give up on a plumbing project because "I only know crescent wrench, not monkey wrench."

And since we have better high level languages and, even more to our advantage, a huge selection of pre-made packages and libraries, you don't need to be a career programmer to tackle a lot of tasks.

In fact, gamers who 'just' build FPS levels or do game scripting and macros are doing programming.  I think that's great even if it isn't 'hard core', but I'm big on function and utility over dogma.

Alex


logicman
What?  No machine code or assembler?  For shame!  ;)

jlafay
As a note, this is all speculation on my part since I'm still a CS student. Additionally, I'm also graduating in a matter of months and have worked/job hunted for several years prior to my academic pursuit. I'm not completely green in that sense.

I've put a lot of thought on how to draft a set of resumes for this very reason. It's easy to build an exhaustive list of skills possessed by software developers and programmers. The main solution that I come back to time and time again is making my skill set categorical. I think it makes the resume more readable if you absolutely have to include all skills "known" (although I'm a bit against listing everything under the sun). Here is how I would categorize your example:

Core Languages
  • C
  • C++
  • Java
  • LISP
  • Fortran (77&90)

Code Libraries
  • OpenGL


Interpreted Languages
  • PHP
  • Perl
  • Python
  • Tcl/Tk
  • Lua


Markup Languages
  • HTML
  • XML
  • (..you could probably even include XHTML, DHTML, CSS, XDOM, etc. etc. possibly under the web technologies category too)


Web Technologies
  • Javascript


Relational Databases
  • MySQL
  • Postgres
  • Oracle


Platforms/Operating Systems
  • Linux
  • Unix
  • Mac
  • Windows


Document Productivity
  • Word
  • PowerPoint
  • InDesign
  • OpenOffice

This may emphasize skills better but as you see it's still exhaustive. I've asked many of my mentors or developer friends "in the biz" about this same sort of issue and two points are always brought up: 1. It's who you know (disappointing for a student) 2. Be flexible and know core fundamentals. The second point is definitely workable. Several of my conversations with these people have included their personal experiences in the interview process and most of them are able to reach employment by basically telling the interviewer "Honestly I'm not an expert in that, but I know how to get the right information and apply it with my knowledge of fundamentals."

I think that will help me quite a bit because I have an exhaustive list of development skills myself and I need to tailor each resume and interview to each position that I apply for and express my knowledge of programming and computation to "seal the deal". That's the best way for me to handle the situation anyways.

Re: Mr. Lockerby:  Those are respectable languages and you don't see that as often because assembly is difficult to learn and whole different breed of animal, especially since the debut of high level languages that manage low level system resources for you auto-magically. They still apply to legacy software, embedded software, and manipulating electrical signals interfaced with a computer system (i.e. robotics). Good point though, those would be impressive to include if known by the programmer or even the "Daytime Astronomer". :)

-Jeff

Gerhard Adam
Jeff

If I can throw in my two cents .....

While it's useful to have a list of languages or specific software products that you might be familiar with, the important point in an interview is whether you've actually written something or developed something that is tangibleand demonstrates your ability to utilize these skills.  In particular, if there was some project or effort that resulted in several programs being deployed that could demonstrate that your knowledge extended to being able to implement a solution rather than simply writing one.

Is there anything you know that could illustrate your understanding of core principles?  Exploits?  Tools you've written?  Analysis you've done?  Anything like this also becomes an important ingredient in creating a fuller picture (note: this is especially important if you're comfortable with diagnostics and performance).

jlafay
Good point! I was concentrating on more of the author's discussion of skills and where to stop. I fully agree with exhibiting competency with past projects. That is also something that will be added to my resume. You can list languages all day long and say "yeah I'll learn that one for this particular job". When you highlight accomplishments it shows that you have the fundamentals and aptitude to learn more. You have to be very versatile for software development because software technology can change faster than hardware since it has fewer boundaries and is generally governed by logic.

How about this though. Students usually do not have a lot of real world code under their belts. Do they list class projects as their experience? Are employers that have entry level positions open look at that instead? I have a handful of projects that I have written code for myself so I at least have that extra edge. Thankfully my present employer has also allowed me to translate some of our processes and problems into a solution through my own software.

What are your thoughts and is there anything else I can do to enhance learning or gain an edge in software development as a career? I honestly ask that of a lot of people because I really do enjoy development (a lot of others don't seem to understand it, but I think it takes the right type of person for this career).

-Jeff

Gerhard Adam
I understand that students may not have alot of real world projects, but typically the point is going to be the interviewer wondering "does this guy know what he's doing and can he compliment my team to work on projects?".

You need to demonstrate that you've applied your computer knowledge to school projects (which is assumed), solving your own types of problems, or developing potential exploits just because you wanted to .... 

Obviously your experience isn't going to be as in-depth as you'd like it to be, but presumably the interviewer also knows he's getting a freshly minted computer guy.  That being said, you also need to consider what the interviewer is looking for.  Don't oversell yourself.

I used to get resumes that were funny to read because it was obvious that the guy was trying to stuff 20 years of experience into one year out of school.  That simply makes you look like you're padding your resume and then none of it is trustworthy.

If he's looking for a database guy, but you're a network guy, it usually isn't good practice to go on and on about networks.  Recognize when it's not a good fit and be prepared to move on.

In the end it comes down to the fact that if the interviewer knows what he is doing, then he'll be able to assess whether you are a good candidate or not.  While I can understand the desire to get a job, it also isn't normally very good if the guy you're going to report to doesn't really understand what you do.


antunes
Hi Jeff,

I recommend you list languages based on tasks done, with a short recap (not bullets) at the end.  One problem with complete enumeration of listed languages is that, if something is not listed, HR will think you don't know it.  Put another way, instead of getting credit for what you know, they'll be looking for what's not there.  Even something simple like how you didn't have "Excel" listed could cost you.

I've known astronomers who didn't get jobs because they didn't list 'MS Office' in their skills, even though it wasn't required for the position, just because HR had 'MS Office' competency as a blanket requirement.  Getting a job is a weird mix of convincing HR just enough that you get your chance to impress the person actually doing the hiring-- often 2 dissimilar audiences.

Instead of a language list, here's an example from my resume (well before my 'comp skills' short list):

I invented a multi-mission artificial intelligence science scheduler (C/C++, Tcl/Tk) and led the Astro-
E scheduler dev team (1997-2000)


....That sort of thing better sells what you bring to the organization, while still illustrating your language proficiency.  Always cast it in terms of problems solved or things created, rather than items known.  Knowledge is cheap, experience less so.

(That said, there's a whole range of jobs that want fresh-outs, i.e. recent grads.  It's thought they're bright and work cheap.  Such places often rely on churn, getting new folks each year.  But hey, it's one step in the ladder.)

Anecdote time: one contractor said he liked hiring astronomy and physics majors, because he got "a comp sci person, but cheaper."

Good luck!
Alex, the daytime astronomer

jlafay
Thanks so much Alex, I'm saving this information for my job hunt. I really appreciate that. I'm also designing a professional site for myself as well to illustrate my projects and awards as well for "personal branding". Do you think that would help my situation as well? I was even thinking of getting business cards made that reads similar to this:

Jeff LaFay
Software Developer / Computer Scientist
www.JeffLaFay.com
(XXX) YYY-ZZZZ

In your opinion, is that a good strategy to apply to my situation?

-Jeff

Add a comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <sup> <sub> <a> <em> <strong> <center> <cite> <code> <TH><ul> <ol> <li> <dl> <dt> <dd> <img> <br> <p> <blockquote> <strike> <object> <param> <embed> <del> <pre> <b> <i> <table> <tbody> <div> <tr> <td> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <iframe>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
CAPTCHA
If you register, you will never be bothered to prove you are human again. And you get a real editor toolbar to use instead of this HTML thing that wards off spam bots.