Archive for 'Personal'
My company is having a very difficult time finding mid-level developers. Our development team isn’t that large, so the number of junior people we can support isn’t that large. In terms of .Net experience, we have 3 relatively junior developers and myself. I’ve done a fair amount of architect work, senior development / team lead stuff, and been doing .Net for about as long as it has been out. That leaves us with a gaping “talent hole” that could be filled by a mid-level developer or two.
The problem, however, is that every resume we see is someone who is definitely very junior or someone claiming to be an architect (who often techs out at lower mid-level). My boss (and I can’t say I blame him) is against hiring someone who thinks too highly of himself and seems unteachable. A certain amount of ego does come with the territory and everyone is trying to get the best job for the most money possible, but people really need to be honest with themselves.
I’ve done a lot of thinking about this and I think that I’ve come to a conclusion on this problem. The reason that we are having such a hard time finding solid mid-level developers is because they are actually very scarce (in relation to the rest of the populace). Hear me out.
Junior developers are – of course – the most plentiful. Every developer who will ever be anything starts out in this rank. However, I believe that the people who will actually become great in this profession move out of this group rather quickly. In talent level, they are my coveted mid-level developers; by experience, they can easily be overlooked as still junior.
Almost two years ago, Jeff Atwood wrote a post on Coding Horror in which he quoted Bill Gates on this subject. I’ll leave you to read the post, but basically someone asked Bill Gates if accumulating experience made programming easier and he said, “No. I think after the first three or four years, it’s pretty cast in concrete whether you’re a good programmer or not”. He goes on from there, but that hits my point.
People who “get it” and have a lot of experience – the “rock stars” that Joel Spolsky writes about – are hard to find. Spolsky claims that you don’t find them easily at all because they are rarely on the market for any amount of time and in essence “hand pick” their jobs.
People who “get it” and don’t have a lot of experience – probably most likely the people I am looking for – are very hard to find because their resumes hide the fact that they are good and are going to be awesome some day.
People who don’t “get it” can have any number of years of experience and they are still not attractive candidates. In the Columbus, Ohio market (where I’m located) there is a relative shortage of developers, so seemingly everyone can find a job. What I’m speculating is that these individuals end up with 7-8 years of experience and think that they should then be able to land a senior job. In my opinion, however, they fall into the category of “poor developer” and shouldn’t be hired into those positions by any reputable company. What may happen is that some consulting firm will pick them up and bill them out at $150.00 an hour as “experts”, but it is really the consulting company’s system that gets them through projects.
(A quick note: I am not saying that anyone who consults is no good. I’ve met several consultants who are of the utmost quality and deserve every penny they make (often they are independent and actually get to keep much of what they bill). However, I’ve also met quite a few consultants who I’d mark as falling into the broad categorization of this post.)
I don’t know what to do about this problem, actually. If you are a good, solid developer who “gets it” and wants to work with the latest and greatest coming out of Redmond, leave me a comment and if we still have positions open at the time, I will personally make sure that your resume gets looked at and unless it is god-awful, I can pretty much guarantee you a phone tech-screening. From there its all you, hotshot.
Lots of people around the web have done this one and who am I to break the trend? 😉
How old were you when you started programming?
I wrote a little about my journey to becoming a coder here. Basically, I was very very young. I used to program BASIC by copying the programs out of GAMES magazine and getting them to work. I also used to write programs to simulate computer systems like what you’d see in Wargames, for instance.
What was your first language?
Kind of mentioned it above, but BASIC on my Commodore 64. In fact, my first book on programming was called “I Speak BASIC to my Commodore 64”.
What was the first real program you wrote?
What qualifies as a “real program”? I wrote programs in school on the Tandy for projects and on Apple IIe in high school. I wrote a secret message sending program in VB6. The first thing I was paid to write was in Access. It kept track of credit limits of commercial customers for a large bank’s commercial vault network.
What languages have you used since you started programming?
BASIC, VB6, VBScript, VBA, VB.Net (a theme?), C#, T-SQL, C++, Javscript, and PHP.
I have fooled around with (meaning worked through tutorials on) Ruby, F#, Python, and Perl.
What was your first professional programming gig?
As I mentioned above, I worked for a very large bank in their commercial vault division. Basically, customers ordered large amounts of money from the vaults and the money would actually leave the vault via armored cars before the money would be withdrawn from their accounts, leading to a liability. Underwriters determined the amount of exposure that the bank was willing to risk with each customer. My shared Access database program had forms for entering and reporting on all of the information, as well as pulling down data from the Informix system that housed the orders so that we had current information about the state of things. Woo-hoo.
If you knew then what you know now, would you have started programming?
Oh, yeah. I would have gone hardcore earlier and stopped that BASIC trail I was blazing and switched to other languages that would have caused me to learn more about the art of programming.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Seriously, you don’t know as much as you think you do. I understand… I’ve been there. But just because you wrote some app that organizes your MP3 collection, you don’t know that much about programming. You can’t learn programming by sitting in a class and you can’t learn solely by reading books. The books help, for sure, but only by writing code, reading code, and interacting with other coders can you really learn. Trust me, the more you know, the more you’ll realize you don’t know.
Don’t stop learning ever. Technology is always changing and you will be “the new guy” in some piece of the game all the time. Don’t forget that and never be too proud to ask for help. The community by and large loves to share its knowledge. Listen to podcasts, participate in forums, read blogs, and go to conferences and user groups. You can thank me later.
What’s the most fun you’ve ever had … programming?
Every time that I’ve had to do crazy things or solve problems that were really difficult. One that comes to mind was a time that Jeff and I had to work late to work out an interoperability problem between our company’s web service and another company’s web service (the night he literally saved my life). We were using security and encrypting the payload, etc, but we had to pore over these boring OASIS specifications (but what about OASIS?!?!?) in order to figure out exactly why the messages weren’t being accepted. Annoying at the time, but so much fun working out the old grey matter and so rewarding when we succeeded. And, to top it off, I know way more about that topic than I ever would have otherwise.
Jeff Blankenburg posed an interesting question on his blog the other day. He asked, “Why do you write code?”. I started thinking about that question and decided that I not only wanted to answer that question on my blog, but that the answer to that question itself would provide a good synopsis about me for my readers.
The short answer is that it is really who I am. I’ve been fascinated with computers and technology for as long as I can remember. We got an Intellivision when I was very young and had the computer add-on when I was in kindergarten. I remember being able to pull sprites from the game cartridges and move them around the screen and writing rudimentary BASIC programs. The system had so little RAM that it had to have a modified version of BASIC; PRINT became PRIN to save a few bites.
I remember being enamored with what that computer represented. I could give instructions to a machine and it would do as I had asked. I loved programming on the computer because it shared two major themes with another love of my life, Mathematics. First of all, programming was about solving problems. I am at point A, I need to get to point B, what steps can I employ to make that happen? Secondly, computer programming was exact. Barring weirdness, a computer executed its instructions the same way given the same inputs the same way that 2 + 2 will always equal 4. There is something comforting in that.
After the Intellivision computer, we got a Commodore 64 and then a Commodore 128. Games Magazine used to publish BASIC programs for you to input into your computer. There were a lot of PEEK and POKE commands in the lines of code that I didn’t understand at the time, but I still felt like the world’s biggest hacker to make this code run.
As I grew up, I went through a variety of languages and ultimately ended up where I am now, writing C#.Net code. The platforms and the languages have changed, but what I do is still about taking a challenge and performing steps against it in order to reach my goal. 2 + 2 still always equals 4, though sometimes I really have to pay attention to make sure that the computer is getting 2 and 2 and not -87 and 1,348,849 😉 The computer isn’t very smart and does only exactly what it is told, which I guess sometimes makes me not very smart!
Even with that limitation, I feel extremely fortunate to have a career I love that remains challenging and fulfilling. There is nothing like the feeling when you’ve been given a difficult task and you are able to overcome it. That’s why I write code.