Eric Sink posts a job opening on the SourceGear Vault team.
Qualifications from the site, with my responses added as if I were making a pitch to be hired:
You have deep expertise with development using Microsoft SQL Server. You know how to use triggers and indices and foreign keys and inner joins and stored procs and views and all that other SQL crapola that I’ve never understood and don’t care to. Most importantly, you know to make these things run FAST.
I would question that these requirements constitute a deep expertise in SQL Server. IMHO, these are core requirements if you want to be a developer. Eric may not understand this stuff, but I surely wouldn’t want to be using a database that was designed by somebody who doesn’t understand this stuff. I would probably add an understanding of normalization as a requirement.
As far as making stuff go fast, I have a custom SQL Profiler template on my system which is used just for analyzing the performance efficiency of code. I can interpret and explain to a non-programmer (usually our department head) why things are slow. When doing performance-focused work, I believe in the mantra of the carpenter — measure twice, cut once.
I don’t want to reveal too much about the details of my work, but here are a couple examples of some performance tweaks I have done.
We had a procedure that used loops to do most of its work. It took about 45 minutes to run. I added a couple key indices, converted a stored procedure to a user-defined function, and converted most of the loops to set-based statements. The run time was reduced to under 2 minutes.
We had another procedure which used a transaction log to calculate the state of individual records at any point in time. The original procedure, which took about 15 minutes to report the state of all the items at any point in time, consisted of a single complex query which contained several subqueries. My eventual solution was not what I would call intuitive (therefore it is heavily commented), but I was able to reduce the run time to under 5 seconds by utilizing temp tables and breaking up the big SQL query into several smaller queries. The sum of the parts was much better than the whole!
You have experience with C, C++, C# or Java.
Sorry, I can’t claim this qualification. I did a little self-study with Bjarne Stroustroup‘s classic book almost 15 years ago, but I’ve never produced any tangible product in these languages. My experience has been in VB and SQL. I think that my lack of experience in these languages is made up for by my other qualifications.
You have experience using a source control tool.
Yes, but not Vault. 😉 We use VSS in our office.
You have a bachelor’s degree in computer science from a good university.
Can’t claim this qualification. I don’t have a degree. I did go to a good university on an ROTC scholarship for computer science. I wasn’t very disciplined at age 18, so I only spent a year there. I got As in my first-year programming courses.
You are smart.
Despite my lack of success at university, I would still claim to meet this qualification (who doesn’t think they’re smart?). I would add creativity to this as well. I think this qualification is what makes up for the lack in other qualifications. Even though I’ve been a full-time developer for less time than most of my colleagues, I’m the “go-to” guy on our development team for learning new products and guiding the design of major features.
You have excellent written and spoken English.
I always did well in English classes, without ever having to study much. I’m a bit of a nitpicker regarding grammar. When I worked in technical support, I had the task of editing our support logs for technical accuracy and grammatical correctness before they were sent out with the customer’s support bill. My wife is a technical writer, and she can confirm that I am a little anal about using precise and concise wording.
I work for a small ISV now, and wear many hats. The company wouldn’t survive if we weren’t a team of developers (vs. coders).
You know how to read code, not just write code.
I believe that understanding the big picture is critical to being able to write successful code. The actual code writing is a minor detail. Mistakes in code don’t usually require weeks to fix. Mistakes in design often do. You can’t design on top of existing code without being able to read the code and develop an understanding of it that transcends the lines on the page.
You are willing to live in Champaign, Illinois. (To be a part of our core team, you have to be here. No telecommuting.)
Well, here is a problem. Urbana-Champaign is a nice college town. But there is not much nearby. I like lots of cultural opportunities. I play trumpet/cornet in a couple community bands. If I had the time, I could be playing in a different community band every night of the week. I like attending plays and musicals. There are a dozen community theatres within 45 minutes of my home. We subscribe to the Broadway Series at Playhouse Square.
Yes, these things are available in Champaign. But not to the same degree. Chicago is very appealing, but it’s a little too far to see a show on a weeknight.
I’m sure that I could make more money working for another company, but the intangibles offered in my work environment and my community keep me where I am.
At the end, Eric comments, “Corey and I would really like to discriminate against anyone who is not an Illini fan, but Dan is an Indiana grad so we never seem to reach consensus on that issue.” Even though my time at Michigan was short, it has remained in my heart. Would I be allowed to put a small, tasteful block M on my door?
If I were interested, would I qualify? I’m sure there are lots of good developers out there who Eric would love to hire. Joel Spolsky has written on the topic of hiring good people. I generally agree with Joel’s views regarding the hiring process. I wish Eric luck, and I hope I can convince our team to try out his company’s product someday.