I’m Hiring, So Here’s a Job Description
Let me start off by saying that I actually want to hire someone. This isn’t a drill nor is it some kind of hypothetical exercise. I have a real, actual need for .NET software developers and if you are interested in such a job and think that it could be a good fit, please let me know (more details to follow). I think that the pool of people that keeps up with software blogs is the best pool of people there is from which to draw candidates, and I’d go ahead and extend this to the people who run in your circles as well. If you care enough to follow blogs about software, you’re probably the kind of person with whom I’d like to work.
So, the first thing I did was to go and see what was going on at CareerBuilder, Dice, et al. so that I could get some ideas for writing up a job description. I was literally on the second one when I remembered how awkward and silly I find most job descriptions. This bad boy was what confronted me:
I was reminded of Blazing Saddles.
Company: NoSQL, Communication Skills, Scala, Communication Skills
Hedley: You said “communication skills” twice.
Company: I like communication skills.
But notwithstanding the double-ups and rambling nature of this and the fact that probably only Horse Recruiter could write it, the ideal candidate has, by my quick count, 27 line items of 1 or more properties. That’s quite a wish list. I’d rather describe what I need like a human being talking to another human being. And, because I’d rather talk like a human being to other human beings, what I’ll start off by doing is describing what we have to offer first, and then what I’m asking in exchange. I think “what we offer” is far too frequently overlooked, and omitting it creates the impression that I think I’m on the Princeton admissions panel for undergraduates, rather than a guy on a team that needs to grow to handle the amount of work we have.
What We Are and What We Offer
Given that this is my personal blog and not affiliated with my 9-5 work, I’m not going to go into a lot of detail about the company, per se. I’ll supply that detail if requested, and you can always look at my Linked In profile — it’s no secret what I do or for whom. Instead, I’ll talk about the group and list out what I think makes it appealing.
We’re a small, agile team and a close knit group. We work exclusively in the .NET space, with a mix of database, application and client side code. Working with us, you would definitely touch Winforms, ASP Webforms, and ASP MVC. We are actively porting Winforms/Webforms functionality to an MVC application. Here are some benefits to working here, as I see them:
- We follow Scrum (not Scrum-but — actual Scrum)
- We have MSDN licenses, and we upgrade to the latest developer tools as they are released.
- You will have creative freedom — we’re too busy for micromanagement.
- There are definitely growth opportunities for those of you looking to go from developer to senior developer or senior developer to architect.
- We have nice tooling for Visual Studio development, including NCrunch and CodeRush.
- Everyone on the team gets a Pluralsight subscription because we believe in the value of personal growth and development.
- Along the same lines, we have bi-weekly lunch and learns.
- We have core hours and you can flex your schedule around them.
- There is no bureaucracy here. You will never have to write 6 design documents to be approved by 4 committees before you start writing useful code.
- We practice continuous integration and deployment (the latter to a staging environment)
- We are at a 10.5 on the Joel Test and climbing.
- Not software related, but we’re located in Chicago within walking distance from a train stop.
Who Would Be a Good Fit?
Let me preface this with the important distinction that there is no “ideal software engineer” and there is no concept of “good enough” or anything silly like that. We need to ship code and do it quickly and well, and I’m going to look at a bunch of resumes and talk to a bunch of people and then I’m going to take a leap of faith on a person or couple of people that I think will best compliment the team in its goal of shipping code. That’s really all there is to it. You may be the best developer of all time, and I might get this process and wrong and whiff on you as a candidate, and it’s no shortcoming of yours if that happens. I will certainly try my best not to do that, however.
Senior Software Engineer
So, I will now describe the what I think would make someone the best fit for our group. First of all, I’ll describe what we’re looking for in terms of a more experienced, “senior level” candidate, and I’ll describe it quite simply in terms of what I’d be thrilled if I had someone reporting to me doing and doing well.
- Contribute immediately to a set of different .NET solutions.
- Can explain sophisticated concepts to less experienced team members, such as generics, lambda expressions, reflection, closures, etc.
- Lead by example in terms of writing clean code and explaining principles of writing clean code to other developers.
- Understand Software Craftsmanship principles like SOLID, unit testing/TDD, good abstractions, DRY, etc, well enough to explain to less experienced developers.
- Versed in different architectural patterns, such as layered and “onion” architectures, as well as Domain Driven Design (DDD).
- Taking responsibility for and improving our build, ALM setup, source control policies (TFS), and deployment procedures. We have a good start, but there’s so much more we can do!
- Can write ASP and the C# to support it in Webforms or MVC, but prefers MVC philosophically.
- Understands client-server architecture and how to work within that paradigm well enough to explain it to developers that don’t.
- Is comfortable with or can quickly get up to speed with REST web services and SOAP services, if the latter is necessary.
- Is comfortable with SQL Server tables, schema, views, and stored procedures.
- Knows and likes Entity Framework or is willing to pick it up quickly.
Software Engineer (Web)
The other profile of a candidate that I’ll describe is a software engineer with a web background. Again, same description context — if I had someone doing these things for me, I’d be very happy.
- Understands C# and server side coding well enough to implement run of the mill features with normal language constructs without asking for help.
- Good at hunting down and isolating issues that may crop up when there are lots of moving parts.
- Has a flare for design and could help occasionally with custom branding and the UX of websites.
- Not a huge fan of Winforms, but willing to roll up your sleeves and get dirty if the team needs help with legacy desktop applications on some sprints.
- Up for picking up and running with a more specialized skill to help out, such as working with T4 templates, customizing TFS workflows, experimenting with and leveraging something like Signal R, etc.
- Some experience with or else interest in learning unit testing/TDD as well as clean coding/decoupling practices in general.
Logistical Details and Whatnot
So therein are the details of what I’m looking for. It seems like I’m flying in the face of billions of job ads and thousands of horse recruiters with this approach, and far better minds than mine have probably dedicated a lot of consideration to how to solicit candidates to come interview and how to put together the right set of questions about O notation runtime of quicksort and whatnot. But still, I feel like there’s something humanizing to this approach: this is what we have to offer, this is what would benefit our group, and perhaps we could work together.
In terms of location, I prefer to consider people local to the Chicagoland area or those who are willing to relocate here, but telecommute situations are not ipso facto dealbreakers. If you’re interested in one of these positions or someone you know is interested, please send me or have them send me an email at erik at daedtech, and we’ll take it from there. I’m not exactly sure when I’ll start interviewing, as there are still some internal details to hammer out, but I definitely wanted to give the blog-reading set of developers and people I know the first bite of the apple before I started going through the more common and frustrating channels.
And, also, in a more broad philosophical sense, I wanted to try to put my money where my mouth is a bit. After taking potshots in previous posts at job descriptions and interview processes, I thought it’d be the least I could do to put my own approach out there so as not to be the negative guy who identifies problems and offers no solutions.