tags:

views:

537

answers:

14

As a developer who's never worked in Agile specifically (but have worked in TDD shops), I see employers that are running Agile shops resistant to hiring someone who hasn't worked in Agile. I've run into this a few times over the past few years. Is it really that fundamental of a philosophy change? After working in TDD, I can almost make an argument for not hiring someone who's never done TDD (when working in a heavy TDD environment). Perhaps I don't understand Agile and the difference between it and TDD.

I'd actually like to work in Agile, but this seems to be one of those times where you have to have the experience to get the experience. Sure, you can do it on your own, but that doesn't qualify if you ask me. As an employer, I wouldn't really call it applicable.

+1  A: 

I think it is a typical case of over-insisting on a specific skill set. Like employers who don't want someone who knows JBoss when they use BEA for their application server.

A good employer will recognize if someone is adaptable to an agile method or not. Now if they have two otherwise equal candidates in front of them, perhaps that is a bit different.

Yishai
+1  A: 

It is certainly a handy way out of having to explain other reasons that may play a more important role in the decision.

cdonner
+7  A: 

Having an understanding of what Agile's core principles are is important to understanding Agile. TDD is just a small part of Agile and more specifically XP (Extreme Programming).

First I would take a look at the Agile Manifesto:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Then I would take a look at the SCRUM process (which is also a small part of Agile) to see what's involved there.

When I interview developers I look to see that they have an understanding of Agile and what that entails so that I can then determine if the Agile enviroment/mentality is one what they would enjoy working in.

David Yancey
This doesn't look as fundamental of a shift as say Java to C# -- which are pretty similar. Agile just looks like a slight shift in the "how" of building software. I don't see how it could be a "mandatory" for any employer.
jcollum
I agree, that it shouldn't be a mandatory requirement for a developer. It is quite a large paradigm shift in the SDLC so while its I dont think its Mandatory it is good to have an understanding to know if you would enjoy that type of environment. It requires more team involvment then your standard waterfall process does. So if you aren't accustomed to working in a team environment then Agile won't be for you.
David Yancey
A: 

Maybe they take the mentality of the barkeep in the Mos Eisley cantina (paraphrased):

We don't want your kind here.

Robert S.
+14  A: 

Agile is not an engineering philosophy in the strict sense - TDD, Peer Programming, etc are engineering practices that Agile uses - but rather Agile is a management methodology. As such, it's more important that someone be open to the mindset that Agile demands, rather than them actually having worked in an Agile shop before. Yes, it really is a different philosophy and approach to software development. People who expect everything up front and to be told what they need to do will be very out of place in an agile environment.

When I have interviewed people, I do ask whether they have any Agile experience or knowledge, but what I really look for are some of the following:

  • Flexible mindset
  • Confidence to allow self-empowerment (critical in any agile environment)
  • Ability to self-assign tasks
  • Communication skills (top 3 most important)
  • Ok with vague instructions, able to self-teach

Those are some of the qualities that I think qualify someone to work in an Agile environment.

Josh E
great answer, thanks
jcollum
No problem -- I agree with David Yancy above: having worked in a (sort of) Agile environment for a year now, and having been tasked with making our environment fully agile, I gotta say that I have trouble imagining developing software any other way!
Josh E
See it sounds like something I'd enjoy working in, just every job (2 so far) that has listed it as a "would like to have" has shot me down because I've never worked in it; annoying
jcollum
I'd highly recommend scrum as an agile process - check out Ken Schwaber's (Conchango) process guidance to learn more about scrum - http://scrumforteamsystem.com/processguidance/v2/ProcessGuidance.aspx for more info. If companies are excluding you for not having worked with Agile before, and they're not bothering to determine if you and agile are a comfortable fit, then it's probably not a company you'd want to work for.
Josh E
Josh brings up some good points and reading matterials on scrum. I would also look at Mike Cohens books Estimation and Planning to get a real undestanding of that aspect of Scrum which seems to be one of the more frustrating aspects.
David Yancey
Not trying to be hyper critical, but to save anyone else a few minutes of frustration... the book referenced by David Yancey is "Agile Estimating and Planning" by Mike Cohn
mmc
+1 great answer. I wish I could use some of my karma to double up-vote you.
sal
I think that *refusing* to do agile is a problem, but not having done it before is no barrier at all. It's all something you can get used to pretty quickly.
tottinge
A: 

I understand your frustration but the truth is, if you never worked in an Agile environment you are very likely to behave in counter-agile ways (so to speak), and you will likely not even understand what is it that you are doing wrong.

Since Agile is so much about work philosophy it's not something you can learn merely by reading a book, you need to have intimate understanding of how non-Agile firms operate, what issues this causes, how Agile changes that, and how you to fight the entropy (the attempts of the external world to introduce the non-agility back in).

My advice is that you first read more about Agile and start analyzing your own behavior and behavior of whatever firm you currently working at from the Agility/non-Agility perspective. Once you're able to discern the patterns, you can start trying to change your firm from within. When you fail with that, go to the Agile company and they will hire you, I promise.

zvolkov
A: 

In your current job, can you implement some form of Agile Developement to show you are interested, have looked into it and actually have some experience? You may be able to find some non-developers to work with you. A power-user could sit with you during some coding. I'm sure no one would get in the way of using some of the Agile documentation (sprint log, burn chart).

Jeff O
A: 

I'd likely put forth this question: What development methodologies have you been using up to this point in your career? Do any of them encompass the spirit of Agile's ideals?

If you are someone that loves to develop via Waterfall and think it is just absolutely perfect for your world of development, then going Agile would be like going from driving a car to flying a plane or a boat. It is that fundamental a difference as you aren't going to necessarily know where you are going and deal with changes very differently than a waterfall style where each stage goes in order and there isn't any reprioritizing without jeopardizing the whole process.

JB King
A better question might be: have you ever worked for a company that actually had a defined SDLC? The answer is basically no.
jcollum
+1  A: 

Any company or opportunity that dictates SDLC by practice instead of best fit for the current project/situation is already showing signs of it's limitations and you are probably better served continuing your job search.

A: 

When a company uses the umbrella term "Agile" in recruiting without being more specific (e.g, by asking for XP or Scrum experience), it's often a placeholder for something else they're looking for. They may want "developers who will pair program" or "developers who won't dig in their heels about not having requirement and design documents before they get started" or "developers who won't go off into a dark corner for weeks on end". The trick is to figure out what they mean.

From a narrow Silicon Valley hiring perspective, a candidate who is familiar with Agile practices (e.g., knows what XP is), has done some of them (e.g., pair programming and TDD), and who wants to work in an Agile environment gets past that hurdle.

Dave W. Smith
+1  A: 

The brand of agile that we use is composed of Project Management Practices as defined by SCRUM and Engineering Practices as defined by XP. If we are starting a new team, we will look for key roles to serve as embedded coaches for the team (an Iteration Manager/ Scrum Master Coach, Analyst Coach, Technical Coach and Testing Coach). For an existing team, given that we use pairing, we are more interested in developers that work well with others than a super programmer.

Because we using pairing, a new developer will become productive within a month with the agile engineering practices as well as the business and application domains. It provides the team with little value if a strong programmer joins the team but is unable to pair effectively.

When we interview, we ask the candidates to pair with several team members. Through pairing, we learn if the developer works well with others in a pair. In addition, we gain insight into the developer's technical skills. Because the candidate works in several pairs, we get the perspective of a number of team members.

All of our agile teams have been very effective and their projects successful. We have trained more team members to become effective with agile than we have hired experienced agile personnel.

Cam Wolff
excellent answer, thanks; the pairing during the interview seems really smart
jcollum
A: 

Employers most likely stick to hiring people who are knowledgeable of agile, rather than not, because agile methodologies require that almost every team member know about the processes required by each agile methodology (SCRUM, Crystal, XP). For example, SCRUM requires that all team members, including management, understand and follow the concept of self-organization. They’ll need to understand that they won’t be dictated on their current performance: They need to instead address their issues openly (or what typically happens at the daily SCRUM). If you put someone on the team who does not know agile, they may immediately assume that since this methodology has low documentation, they can run in and code-and-fix to build a project. However, agile methodologies are process-heavy, rather than documentation-heavy.

IDreamOf362
I complete disagree I'm afraid - if a process takes more than an hour or two to explain to a new starter then it's wayy too complicated! I don't expect developers to know the difference between Scrum and Crystal - I expect them to learn quickly that they need to write a unit test and run FxCop before committing code.
Keith
+2  A: 

I've hired developers into agile teams quite a few times. I'm not at all resistant to hiring a developer with no prior agile experience - they'll be slightly cheaper ;-)

However there are questions that I would ask such a candidate and there are certain responses that set off alarm bells - letting me know that this person is going to be too much work to re-train.

For instance being precious about their code and designs - a sure sign they'll be a 'mare in scrums and code reviews.

Agile is an extreme democracy - everyone is equal, but that doesn't suit everyone. Some developers just seem happier in an autocracy (tell me what to do and how to do it), monarchy (layers of middle management) or bureaucracy (specs and development by rote) - those guys just don't work in agile.

Some developers are much happier with the agile ideas, and those guys can get hired whether they have have prior agile or not.

I wouldn't worry about not knowing all the process details - good developers read up and stay current on the technologies they use, not process methodology. Since every company tailors their agile model anyway (if they don't they're doing it wrong) it really doesn't matter which variant they started with. You should know some of the terminology, but that takes a day of reading up before the interview at most.

Keith
Great answer. Liked the comparison to the ocracys, helps put it in perspective.
jcollum
A: 

Absolutely YES

There's a lot of teamwork and trusting your peers in agile and specifically in extreme programming. You need to know other people are writing decent tests and not breaking your code. Good XP developers don't want people on the team that are going to make their job much harder.

Nothing wrong with being a beginner, or somebody new to a team - but there is an element of building trust just like you would to get committer rights in open source.

These days everybody says they are agile and if you offer enough money, practically everybody with the slightest tech skill will apply for the job... so expect people to put you through a pair-programming interview.

Typically we need to know:

  • Can you really pair program?
  • Do you really know how to do TDD?
  • Are you just saying these things or can you demonstrate you do them?
  • Are you going to take the initiative or are you waiting for an old-school "project manager"-type to tell you what to do?

Stuff that will help get you hired in an agile shop:

  • You have tried to introduce test-driven development somewhere even if you didn't get buy-in. (It worked for me...)
  • You have sample code you wrote - or an open source project on which you can demonstrate test-driven development, automated builds...
  • You find that you've worked in teams with short release cycles ...
cartoonfox