00:00:15.440
Okay, so I think we'll probably get underway. Welcome to 'Rock Stars and Consultants: Who Needs 'Em?'
00:00:21.840
I thought I'd start off just for the heck of it with dogs. You guys have seen enough cats, right?
00:00:33.360
So, these are my dogs. That's them in the picture right there.
00:00:40.160
Okay, my name is Lori Olson. My Twitter handle is @WindexLory.
00:00:46.879
I keep a blog at windex.posters.com. It hasn't been updated for a while, but I plan to do more.
00:00:53.280
I am a freelance developer, mostly doing Rails work these days, but I also speak at conferences.
00:01:06.640
I have done various workshops. The first one was 'Ruby on Rails for Real.' It focused on teaching Rails to enterprise developers.
00:01:12.560
Just last month, we developed a new workshop called 'Rails for iOS,' focused on the kinds of things that iOS developers might want.
00:01:20.000
So, enough about me. Let's talk about consultants and rock stars.
00:01:28.240
Who really needs them? Well, I think actually you do, and in fact, everyone does.
00:01:33.759
There’s even a reality TV series starting this fall dealing with rock star developers.
00:01:40.960
Personally, I think that's kind of sad, but the simple fact is that at one time or another, every shop is going to need to hire either that rockstar developer or a consultant.
00:01:47.119
The real question I think is not really why we need these people, but rather why we continue to need them.
00:01:54.399
And that's really the interesting part that I want to get into.
00:02:00.240
Before we delve into that, let's talk a bit about what actually makes a rock star developer.
00:02:06.000
Have any of you ever been called a rock star developer? Come on, put up your hands.
00:02:12.400
How about other tags that have been applied to you that you might consider rockstar-level, like ninja?
00:02:19.200
These rockstar developers, these ninjas, they know everything.
00:02:24.800
It's not just that; they are self-motivated learners. They learn new things because they enjoy it.
00:02:30.959
They've done it all before; they've seen everything and have been there, done that.
00:02:36.879
They are super productive. Once you hire them, they will get it done fast.
00:02:42.239
They will deliver those critical releases that your product needs and be out the door before you know it.
00:02:50.160
We all need a superhero every now and then, don't we?
00:02:55.440
Another aspect of the rockstar developer is that they have no fear—no technical fear. Their motto might be something like, 'The difficult we do immediately, the impossible might take a little longer.'
00:03:04.560
Okay, so enough about rockstar developers. Let's talk about consultants.
00:03:11.120
What is it that we hire consultants for? They come in a couple of different varieties.
00:03:19.440
One of them is the expert. They know one thing really, really well and have deep knowledge of some critical piece of your infrastructure.
00:03:27.440
Your technology staff might need that expertise for various issues.
00:03:35.639
Sometimes, they know complex things—stuff that your team doesn't have time to do, like tuning databases or scaling an application to five million users.
00:03:43.599
These are the problems your team might find a little too hard to tackle on their own, so you bring in the experts.
00:03:50.560
Often, these experts are not just individuals. They might be part of a consultancy, which has additional advantages.
00:04:00.639
They have a really deep knowledge pool because they can call on their colleagues.
00:04:06.639
Individually they may not be experts in everything, but collectively, a consultancy can be expert in absolutely everything.
00:04:12.239
That's what groups like ThoughtWorks or Pivotal work to achieve—they come along and help you out.
00:04:20.000
Now that we know what rockstar developers and consultancies look like, why would we not want to hire them?
00:04:26.160
Why would we want to dispense with them after a while? There are some downsides to hiring rockstar developers and consultants.
00:04:36.800
Let's start with the rockstar developers. One of the risks is that they are learners.
00:04:43.199
If there’s nothing new for them to learn anymore, they get bored.
00:04:48.960
When the next new exciting opportunity comes along, they may run away.
00:04:55.440
Or worse, they may not run; they may simply wait until they burn out.
00:05:01.760
One common issue with your rockstar developers is burnout.
00:05:07.440
They often try to do everything, work insane hours, and ultimately burn out.
00:05:15.360
I don't know how many of you know Ezra, but last year, this was one of his tweets: he almost died because he was suffering from extreme levels of burnout.
00:05:22.240
So, you definitely don't want to put your rockstar at risk.
00:05:28.000
Another problem with rockstar developers is what I like to refer to as the illusion of the big paycheck.
00:05:35.600
If you hire a rock star and promise to pay them a gazillion dollars with big stock options, they may leave if you fail to deliver promptly.
00:05:43.920
They'll chase after the next opportunity that promises a big payoff.
00:05:49.760
Or, if you do deliver that big payoff, they might decide it's time to leave.
00:05:55.440
This scenario can be a lose-lose situation for the companies hiring them.
00:06:01.919
One of the other risks, which everyone jokes about, is the possibility of losing that vital key person.
00:06:09.600
What if that person you hired gets hit by a bus? That would be a bad situation.
00:06:16.800
All of a sudden, they are gone, and no one else is equipped to handle their responsibilities.
00:06:22.959
Another concern with rockstar developers is that they can sometimes have a demanding personality.
00:06:29.600
The official definition of a diva is someone who behaves in a demanding and often temperamental manner, revealing an inflated view of themselves and their importance.
00:06:37.760
Have you ever encountered anybody like that?
00:06:43.679
Last but not least, a rock star developer who knows their worth typically doesn’t come cheap.
00:06:50.000
Consultants, on the other hand, are usually wildly expensive.
00:06:57.600
They often lack buy-in for your company—they won't know about your business operations or care about your long-term plans.
00:07:04.640
They are there for their contract, and that’s it.
00:07:09.920
Another problem with consultancies is the old bait and switch: you hire them for their expertise, and while they may have it, they may send their B-Team to you because other experts are busy.
00:07:18.080
That kind of fallback is not very reassuring, is it?
00:07:26.720
Culture clash is also an issue, often seen as an impedance mismatch between consultants and your team.
00:07:33.600
The way they look at problems and solutions can be significantly different from your team’s approach.
00:07:41.440
These communication problems can be quite difficult to manage.
00:07:49.839
You may also find that your consultants aren't completely focused.
00:07:55.879
It's entirely possible that they are managing two, three, or four other jobs simultaneously, which is fairly standard for consultants.
00:08:01.920
If they are completely focused on your project, you could also face challenges.
00:08:05.840
Most taxation agencies will scrutinize your company closely if you hire consultants only.
00:08:14.240
They may start calling that a personal services contract, leading to audits.
00:08:22.240
In that case, your consultant isn't really a consultant—they're effectively an employee, and you haven't been paying them or the government properly.
00:08:30.080
The primary risk, however, comes from both rockstar developers and consultants.
00:08:39.840
When a consultant's contract ends or when a rockstar gets a new opportunity, they often take all their knowledge and walk out the door.
00:08:46.880
That knowledge is a significant company asset, and losing it can create substantial issues.
00:08:54.080
Since I'm talking about some of these downsides, I guess I think everyone should consider their own teams before hiring out.
00:09:01.600
I think companies and startups don't spend enough time thinking about growing their teams.
00:09:07.440
It's essential to grow a team—not just by adding additional bodies, but by improving and leveling up your entire team.
00:09:13.120
The first step towards leveling up your team is knowing your team.
00:09:22.080
Most companies don't spend enough time getting to know the people who work for them.
00:09:32.640
Are they single? Are they married? Are they workaholics who work all night? Do they have kids?
00:09:39.840
What about pets? You all know I have dogs, right? Maybe they have aging parents, or maybe they have illnesses or disabilities.
00:09:45.440
None of these factors should be discriminated against, as they are merely aspects of life.
00:09:52.080
You need to know these things to slot people into the most effective roles and to understand some of their limitations.
00:09:59.920
Another thing you need to know is your entire technology stack.
00:10:05.600
How many different things does your team need to be familiar with?
00:10:12.000
Let’s take, for example, your typical Rails application which can include various languages and technologies.
00:10:19.840
Starting with development, we should consider the basics: Ruby, JavaScript, CoffeeScript, and so on.
00:10:26.880
When it comes to Ruby, is it MRI, JRuby, or something else? Are you using old projects on 1.8 or newer versions like 1.9?
00:10:35.199
Are you using Rails or Sinatra, or even moving forward into Backbone or Angular?
00:10:41.440
What about testing frameworks? Are you using MiniTest, TestUnit, or RSpec?
00:10:49.760
How are you executing client-side testing? Are you using Jasmine or browser testing tools?
00:10:55.600
And what about your overall developer tool stack: your operating systems, editors, version control, debuggers, and monitoring tools?
00:11:03.760
Okay, that was just development; we haven't even reached deployment yet.
00:11:11.840
On the deployment side, you may be on a different operating system, say developing on a Mac while deploying on Linux.
00:11:18.480
Setting up and configuring a production database can be vastly different from a development database.
00:11:25.600
Are you deploying on Heroku, or do you have other constraints? If so, which Linux distribution are you using?
00:11:35.360
Consider hardware requirements, the amount of memory you need, disk space, rate configuration, and firewall settings.
00:11:42.720
All these details are critical parts of your technology stack.
00:11:48.960
There's so much to stay on top of that even a rockstar may struggle.
00:11:58.560
Over just a few years, it will be hard for anyone to maintain expertise across every component in your development stack.
00:12:05.760
So now that I've explained how there are way too many things for people to keep updated, let’s talk about training.
00:12:12.320
Investing time into training your team is critically important.
00:12:19.760
Training is how you grow; it's not just about the money spent on courses or conferences.
00:12:26.480
The time allocated for training is equally crucial, as people need time to absorb what they’ve learned.
00:12:31.920
Without this time, half the value of training goes to waste because people won’t remember it.
00:12:40.160
There are various types of training available. Remember, knowing your team allows you to tailor the training approach to their needs.
00:12:46.480
Self-learning methods include web-based courses, screencasts, and books.
00:12:54.080
More formal types of learning might involve courses or certifications.
00:12:58.640
Conferences are also a fantastic learning experience.
00:13:05.280
Instead of just sending one person to a course, consider rotating training opportunities among team members.
00:13:13.840
It maximizes the value of that training investment.
00:13:20.240
Anyone who takes training should be responsible for sharing that knowledge with the rest of their team.
00:13:27.120
We can organize lunch-and-learn sessions or informal bar camps to share learned knowledge.
00:13:32.240
Again, this comes back to knowing your team. Understand their circumstances and preferences for effective collaborative learning.
00:13:40.080
You might find that married team members with families prefer lunch-and-learn while others may prefer after-hours events like bar camps.
00:13:47.760
But a common concern arises—'What if I invest all that money into training and they leave?'
00:13:54.560
Simple math shows that replacing a dissatisfied developer costs companies more than it would to keep them happy.
00:14:02.800
Not just in terms of hiring fees, but also considering the loss of knowledge and time investment in training.
00:14:11.120
Companies must strive to keep their people content. Investing in training is essential.
00:14:18.640
If employees feel valued and see their companies investing in them, they are more likely to stay.
00:14:26.080
When employees feel this way, they consider themselves more than just a replaceable cog in the machine.
00:14:31.760
This engagement leads to increased productivity and improved morale across the board.
00:14:39.280
One effective way to enhance ownership and accountability among team members is by delegating responsibilities among them.
00:14:45.600
Rock stars shouldn't carry the weight of everything; responsibilities should be distributed.
00:14:52.000
Designate a primary and a secondary person for each key system within your tech stack.
00:15:01.600
It's vital to have backup support in case a primary person is unavailable due to vacation, illness, or other reasons.
00:15:10.560
This way, you're not solely reliant on one person for critical operations.
00:15:19.680
Additionally, it's important to create a sense of participation among your developers.
00:15:27.760
Most developers tend to be introverted and resist stepping into the spotlight.
00:15:34.400
It’s not enough for someone to just say, 'I'm the primary.' They need to engage actively.
00:15:40.560
There are countless resources available online regarding technology updates and communities to participate in.
00:15:47.920
Encourage your team to subscribe to mailing lists, read tech blogs, and participate in forums.
00:15:54.560
Starting with lurking in communities can be a good way for them to learn.
00:16:01.120
As confidence builds, they can transition from asking questions to helping others.
00:16:07.680
This back-and-forth participation helps everyone stay updated on technologies.
00:16:15.840
As a primary for a technology, you should proactively manage upgrades and updates.
00:16:22.640
Provide time for evaluations and beta testing—this is crucial for understanding any potential impacts before release.
00:16:29.440
Planning for these upgrades and engaging in community discussions can make all the difference.
00:16:35.919
If the technology is open source, consider contributing—sharing your improvements back to the community.
00:16:42.440
Given the nature of this conference, I think it’s a shame not to encourage contributing back.
00:16:49.520
If you've acquired expertise, share that knowledge, and help others in the community.
00:16:55.200
Recognize that becoming a primary expert requires effort and time, but the benefits are significant.
00:17:03.200
Becoming a true expert means identifying bugs and fixes, which can contribute immensely to your team’s capabilities.
00:17:10.200
Don't forget that training and investing in expertise takes time; it's a vital investment.
00:17:17.040
This ties into maintaining a sustainable pace within your development team.
00:17:24.720
Working extensive overtime isn't the right way to achieve success.
00:17:31.600
Instead, work consistently every day, ensuring sustainability.
00:17:36.040
Training and expertise development must be integrated into your sustainable pace.
00:17:44.480
Lastly, it's important to ensure that your team does not remain stagnant.
00:17:51.920
Create room for exploration and give them opportunities to experiment with new technologies.
00:17:58.480
Rotation of responsibilities allows people to gain new experiences and keep enthusiasm high.
00:18:05.360
If necessary, switch primary responsibilities, allowing developers the chance to dive into fun projects.
00:18:12.720
The goal is to prevent developers from becoming weary of repetitive tasks.
00:18:20.080
Enabling engagement across your team brings about motivation and job satisfaction.
00:18:28.000
I hope I have started to shed light on what growing your team means.
00:18:35.680
It means training your people, encouraging participation, and developing expertise.
00:18:41.920
These elements form a kind of virtuous circle, contributing to a continuously improving development team.
00:18:50.320
This approach helps to create a team that’s better than all the rock stars and consultants out there.
00:18:57.920
And for Finnegan, it seems the time has come.
00:19:05.760
Yes, that’s what I deal with every day at the end of the session.
00:19:10.560
Okay, so that's it. There is my contact information.
00:19:19.760
I have posted the slides already, and I'll tweet the link in a moment. But do we have any questions?
00:19:27.760
No? Okay, we're done.