ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Other Software > Developer's Corner

Best Language for Employability?

<< < (4/5) > >>

CWuestefeld response sounded harsh to me, i don't think he was meaning it to be.-mouser (August 15, 2007, 03:55 PM)
--- End quote ---
I'll consider myself duly rebuked  :-[ To clarify, I didn't intend to be mean, but I did intend to make a firm statement, because I think it's important.

I've just come from a couple of months trying to hire 3 mid-to-senior level developers. The quantity of people available (at least that we could get through 2 headhunters and various web sites) is extremely low. And the vast majority of candidates I just can't see being any kind of asset to my team.

In Ehtyar's defense, many of the candidates I can reject because a 20-minute phone conversation -- or even just their resume -- reveals that they don't have the depth of knowledge that I think is necessary for a developer grow to the point of making correct decisions independently. The number of CompSci graduates with a couple of year's experience who can't describe a virtual function is appalling. To the degree that Ehtyar's plan fills that requirement, I owe him an apology.

One of our biggest sources for entry-level applicants is Rutgers University, as they're just 10 minutes from here. I was surprised to learn that the only language that a CompSci student there must learn is Java. I've got nothing against that language. But how can you understand how a computer works without having experienced assembly language, even if you'll never actually use it? How can you understand the benefits of encapsulation if you've never been burned using global variables in C or Fortran or something? The list goes on; the point is that to advance to real expertise, you need a broad foundation underlying your experience. But CompSci curricula seem to be building more academics, while what we need in the real world is really software engineers.

I don't need rogue programmers, not even prodigies. The scale of the systems we're building is such that no one can do it alone. And no matter how good you are on your own, if you can't do shoulder-to-shoulder with others, you'll never be any more use to me than writing backend batch import and cleanup scripts.

So when I'm interviewing someone, I look for:

* Correct answers to my questions
* The way you answer. Your choice of terminology, e.g., reveals much of your underlying understanding. And if you don't know the answer, trying to figure it out orally reveals your thought processes as well as understanding, which can be just as good as the correct answer.
* Ability to accept constructive criticism. When you don't know an answer and I explain it to you, I want to see you demonstrate that you now understand the concept. This shows that you have the foundation to learn new stuff as well skills to work and play well with others. Ehtyar failed this dismally by refusing to accept the suggestions of several posters, insisting that his own approach was sacrosanct.
* Enthusiasm for the problem domain. I want someone who is interested in the things we're going to do. If you're just dreaming about being in, say, graphics development, then go out on a limb and tell that to such a company.
* Communication skills. I don't care how smart you are, if you can't make your ideas understood by the rest of the team, it's all wasted.

It's the same in the UK nowadays - people can get a computer science degree having learned just one language and UML and side, easy subjects (multimedia???). And when you talk to them they haven't ever learned anything on their own. These people might be useful in a large corporate machine, but they certainly are no use to someone with a team of a dozen where all need to pull some of their weight)

I have a degree from switzerland, theoretical physics... and we had more programming & computer science on our degree than many computer science graduates I interview...  (including assembly, but then that makes sense from an experimental set up point of view)

I think it comes in countries where there's this strange idea that 60% or more of people ought to have a degree, which again seem to happens where you have had a hiring culture ruled by HR departments (i.e. the people interviewing have not enough clue to be able to evaluate a candidate's experience and abilities....)

Also weird in the UK is that even people with 20 years experience and a degree feel that they have to put their A levels (high school grades!!!) on their CV/resume. And that many HR people care ("ooh, he only had a B in maths" at 17 for someone aged 40...)

 :o rant over

I was comfortable with these two replies until that third last point from CWuestefeld. What you all fail to understand (despite the fact that i've said it several times in not as many words) is that I am completely aware that i will not capable of functioning in a business environment until I'm using the proper tools. You also fail to take into account that most of the computers I currently use do not have visual studio available to me, which entirely nullifies the point.
I am, however, capable of learning the language my way (which can be done on a machine without visual studio) until i am able to use visual studio regularly. I'm afraid constructive criticism does little when when the person you're dictating to is not capable of what you suggest.
So once again, if anyone has any further suggestions, please bring them up, and if anyone wishes to reply to this post they may, but I'm not particularly interested in hearing more about using the proper IDE. Constructive criticism on other aspects of my learning is welcome.


I want to underline one thing especially that CW mentioned, because it's a really important for very smart people to absorb (emphasis mine):

I don't need rogue programmers, not even prodigies.
--- End quote ---

One of the things that can be particularly hard for really smart people to learn and accept, is that brilliance can only get you so far.  In fact, there are lots of fields where being really smart can be a very real impediment to actually getting things done.  My father always quotes his thesis advisor who said (paraphrasing): "Be a genius on your own time, while you're here just get the work done."   I wish i had been able to absorb that lesson.

The bottom line is that when working in the real world and with other people is that there are a lot of important skills, and it's often less important to be the smartest person in the room who knows the language best, and much more important to be the person who knows how to learn what they need and get the job done well and on time while working well with their co-workers, etc.

Having said that, there are lots of more independent ways to live if you are the super smart type who doesn't play well with others, just be aware the path you are taking..  :up:

Another thought:
It is impossible not to benefit from practicing coding and learning new things.  Do those two things and it's hard to go wrong.


[0] Message Index

[#] Next page

[*] Previous page

Go to full version