I am so sick of getting asked basic administrivia that you never need to know in your daily job, or can easily be googled within 3 seconds. Our brains have selective memory - we remember what is important to us.
If I have to sit through one more interview being asked about esoteric junk like the structure of an inode on disk or how to code an algorithm that you never use outside of a CompSci course in University I'm going to hang up on the interviewer.
The problem I've found being a devops-type person is that hiring managers have a hard time figuring out what you do and why you're valuable (author of post excluded).
I've received comments that my resume is too unfocused -- they'd ask if I wanted to be a sys admin or a developer, to which I'd answer "both!"
I got my previous first job about 8 years and I remember the person hiring me saying that they wanted “specialists”. I firmly replied I am a generalist. I didn’t hear back for a month or 2 but then got the call that I was hired. For the first few years, the generalist mentality was actually how things ran. Everybody was expected to dive into code, databases, server, etc. Suddenly, they said that silos were forming and in order to improve the organization, a re-org was needed and you had your various teams of architects, dev, support & ops, DBAs, Q&A, project management, etc..you get the idea.
A year after this process the whole team spirit was crushed. The whole “not our problem, it’s that team’s problem” starting gaining ground. People that were once team mates were now (using the someone eles’s words) throwing problems over the wall back and forth. People also threatened management that if they ever got put on team ‘X’, they’re quitting. Yup, they made specialists out of the wrong people. If only they had just left the generalist structure be. For me, understanding something from the beginning to the end is VERY important. How can someone write programs if they don’t understand how security is handled on the web server, or how SQL statements affect performance, or how deployment is done? I think having an assembly like structure (specialists) can work, but it’s not as responsive as a generalist structure. Products will get shipped with less silly mistakes if you know what the destination looks like. Release and deployment is so misunderstood by many developers. People need to get their hands dirty.
I have since left that organization and I’m now back to a generalist position where I can get my hands dirty. It’s tough because you’re starting from scratch again and trying to hire once again. Hiring is hard. Typically, new organizations need generalists more than established ones. That is not to say that established organizations should have less of a use for them. I tried to change the shift from specialists to generalists at my previous work, but you start hurting your career if you’re constantly grinding it out with upper management. You have to know when to let go.
I really like this term Devops. Because you Developers do need to be able to understand Operations, and vice versa.
Generalists are also hard to hire and manage (it takes another generalist to detect bullshit... and there's always the tendency for the manager to hire folks less talented than him/her self).
I say this from years as a specialist (software) now doing more generalist work... the only thing I don't like is that I get less stuff done on any given angle, but I do get to look at (and own) the whole picture now.
@devicenull: I have done that as well. You basically program using the "leap of faith" methodology. You're never 100% sure that what you wrote won't break something. You rely on others to validate your work. Assuming the "others" know what to do.
I have troubles in finding such a position, even though I focus on start-ups only.
So what's the kind of money you're offering to retain these guys?
I can't give you the specifics for the employer (Sony) mentioned in the blog post, but I can offer answers based as my own experience. I went back to freelancing/self-employed about 5 years ago following 7 years of being in a full-time job. At the time it was primarily motivated by the rates I'd seen advertised for roles similar to what I was already doing, with grand plans of building a team of other contractors that I'd farm work out to and skim a % off the top and ultimately build a successful dev shop of my own. I quickly realised the economics and scale required to make that happen, so instead focussed on just making sure I had enough work to keep myself busy. What I've realised in that time is:
* Demand definitely exceeds supply at the moment. I've constantly had more paying work than I have time available to do it.
* We (developers) get paid stupidly good for what we do. Not movie star/sports person good, but still pretty amazing given there is very little risk to our health and much of it can be self taught.
* Primarily chasing the money is almost always destined to end in disaster.
I spent the better part of 3 years working with Stephen (the author of the linked blog) for a client. Almost everyone there was self-employed, and most had been there for longer than I had. I was definitely getting paid below market rates, but I stayed there for that long because:
* They were honest and open about everything in the business, I never felt like I was being screwed over or that my contribution was undervalued.
* The working environment was flexible, I had Monday's off (which as a contractor is actually another 20% hit on your weekly rate), and my performance was measured by delivering rather than face-time and adherence to a schedule.
* It was just a generally great place to be.
I've since worked for clients where the environment has been just the opposite. The worst places have always been the highest paying, they've always been cashflow rich and figure money can solve all their problems. If I've had any complaints about the way things were done and said I was leaving, they'd throw more money at me. I'd justify accepting it at the time, and then start to feel dirty about the fact you're just whoring yourself out. I can't be the only one to have conclusion, the fact I've worked with so many talented people happily earning less than their potential I think confirms that.
Because lets be honest, I could be earning 50% of what "market rates" are these days and still be a hell of a long way from the poverty line.
I guess what I'm trying to say is that while great developers might be rare, I think great developers that are primarily motivated by their daily rate are even rarer. If you (as an employer) are aware that all your employees, whether they are contractors or not, might leave at any moment if you're not offering them an enjoyable place to work... well then I think you're half way there. Then build it, and they will come :)
Offer a really great place to work, at a minimum.
Instead I opted to have a long weekend every week, and spend my days doing something I enjoyed for people I liked for an amount of money that let me live a still very comfortable lifestyle in what is reportedly one of the most expensive cities in the world. I've still got a tonne of time to do interesting work, and a family that is happy I'm not coming home complaining about "the office".
That was why I quit my last job. I was emotionally invested. Couldn't help it. When you come home and 90% of the time you're complaining to your family about work - it's time to leave.
My current job is a 10 minute walk. 9 to 5. And I'm paid well. I come home quickly and have plenty of time to spend on whatever I want. And right now, it's my family.
I'm a programmer and I've got my reasons to believe I'm pretty good at my job. I love my job. But it's a job, and the amount of money they pay me to do that is directly proportional to the likelihood I'll accept their offer. For me, working in a management-infested big firm at 200€/hr beats working for a small, agile startup at 100€/hr hands down. I'd go for the big firm even if the startup offered 150€/hr.
Why? I can always work on my projects, and I do, on my spare time. If I work at twice the rate, I can take half my month off and take home the same amount of money I'd get for working at the startup.
Also, I really don't think we programmers get paid well for what we do. Think about our job: it needs a lifetime of experience and you always have to keep updated. When they say that the best programmers are the one with passions, think about it - there's no other way to be even a decent programmer if you're not very passionate about it, because it needs so much time and practice it is just not possible to be a programmer the same way you can be an accountant (just to say, nothing personal against accountants).
My idea customer is one who pays me a ton of money to work with shitty tools on problems he can't even define himself, and then blames it all on me when things go fubar (as long as he pays me). I really don't care - I don't want to be appreciated, I don't want to be cuddled - I'm a professional and I'll give 100% when on shift, I don't need a pat on the back. I will have my satisfaction during the huge amount of spare time that I'll be able to take for myself because you're paying me lots more than a "friendly" customer does.
- 3-4 years (at least) of university
- industry accreditation if you want to work for yourself
- a minimum number of hours every year spent maintaining that accreditation
- trawling through government budget and tax amendments every year to know the impact for all or your clients
- knowing the legal intricacies of each country/state/county you operate in to ensure you're doing the best job for you clients, and keeping abreast of any changes to those.
There's no way I'd trade being a programmer for having to stomach that burden. And most accountants I know are on a lower rate than most devs I know, unless they're working for a big 4 consultancy.