is that they don't care enough about the work they are doing or care more about financial security in some form than the success of the team. The latter is fine sometimes as it is more or less motivation to work. My problem with both of these is that when I work towards something that I envision myself doing for the next 2-5 years I care enough about my work that I have to make sure everything looks good and works near flawlessly. That includes the aesthetics and design behind that people may never see. I love coding up something and showing my progress to people and I'm sure others do too, but my belief is that as the project progresses, the code has to be maintained in the future. This means that you or someone else will have to re-read that code and assess what's going on (comments!). Just because consumers never look at your code or because you will never have to look at the code again doesn't mean let's just mash up something and ship it. This is not the point though it does drive what I am aiming at.
The point is that I hold myself to certain standards and make sure whatever I make holds up to those standards, which is why I've never had trouble with my employers. I actually have my own opinions and ideas and push back (you can do that? shocker, isn't it?) to make sure things are kept in check. I'm starting to think that most people (in my representative sample) don't have standards or have super-low ones and that sucks for me when I have to work with that. This post is not out to insult anyone, this is a matter of cultivating culture and behavior. If you believe, like I do, that behaviors and habits can spread like wildfire then you'll believe me when I say anyone team member that exudes low standards will spread those standards like a disease especially if it is tolerated. Just imagine being told by one of your co-workers how lazily they did something every day or looking at a co-worker's code that looks like it came from a newly minted college/high school student. It has draining effects on the other team members. This can't be tolerated, which is why I would swiftly leave a team (especially if no one cares) or fire any under-performing employee. It is in my belief that if people who love their work are working with others who love their work, then the team is more likely to take less breaks from work because it already feels like a vacation just doing it. You get a thrill from just doing work mostly because it doesn't feel like work.
Employers
My frustration does not only apply to employees either. I also target employers... Boy oh boy, do employers have to learn how to rally the troops especially when demanding more and more. Next time you see your employees, just take a look around and see how they are doing. You most definitely need to be passionate or show that you are motivated about the business and care for employees because it is draining to employees if their boss is seen as incompetent and non-technical who is around only when the product deadline is close. A simplified scenario, but you get the point.
There are better ways of asking, such as meetings on a every other day schedule is a good way to start. Usually, simple complements, talking with your employees (during lunch/dinner), taking an interest by asking for a demo (if possible), offering or taking suggestions, and heck even inviting them over to your house or park to walk and talk can go a long way towards cultivating culture. If one of your employees isn't taking some amount of pleasure from at least 3 of these then there is something wrong in the relationship and that offers an opportunity to connect to that person. Talking to them about life, your troubles, adventures, stories, and/or whatever helps with bringing down the separation of the boss/worker mentality. Consider a tree where you are a manager of several teams, you may elect to pick leaders for those teams, so those are the guys you should be actively bonding with and those leaders should be bonding with the people they lead. If you ask what is my ideal workplace, this is the answer.
Interview Process
I am starting to see why Facebook, Google, and all these other companies reject most of their applicants as they attempt to determine competence and, to some extent, fit by the standard interview. To me, competence is just one part of a person, but in a world where most people just want security, it is just about all these bigger companies can do to determine whether applicants will execute. It is an inefficient process. It works for small companies, but why haven't these bigger companies broken away from the standard interview process? Is it that the guys running the show don't care enough to change it?
To deviate a bit. Before I came to college, I used to think big companies were super efficient at what they did like a start-up, but it turns out they have obligations, so breaking away from a product (old or failed) quickly is difficult. Did you know some people/businesses still use DOS or Windows 95?! and Microsoft still hires people with Windows 95 internals knowledge for backwards compatibility purposes?! How naive I am...
My frustration with the way they go about the interview process has manifested itself various times. I posted about group/paired interviews on Twitter: where two or three second rounders are randomly paired up to do some task and I hear Amazon is attempting this, which is a great turn towards innovating and I want them to succeed at doing it. The idea here is that you get a sense of who you'd like to work with and who are the under performers, so you can detect it as quickly as possible before that disease spreads into your team or company. It may be a fun experience for the applicants as well (mini-hack fest). More importantly, the company gets to see who can execute and who fits the culture as this is a far more realistic glimpse of a potential employee's ability in a real life scenario than asking random questions about standard things we learned in class or a book (like a test).
Basically, the first interview should be a little bit interpersonal and some technical questions (especially related to what the team is doing) as you gain the first impression. Most people will fail the first interview or will not make the pick. The second round should be a paired coding session to get the sense of who these people are and how they bond as well as their abilities. The third/fourth/fifth can be variations of paired coding (on a more extreme level), technical questions, and academic questions. Obviously, coming up with a different way to interview people effectively is what you need to do, so they don't game the system. Just the thought of it and it sounds like a brilliant way to interview. If that sounds too hard to do in the near future..., well the quality of hired folk comes with the quality of your interview. All it really takes is one group of people to start this even if you have to break some rules to get quality people.
Conclusion
Yes, I am frustrated with various things. Of course, it is not too bad in the short term, but in the long term, things get to you and most people seem to think or make it appear everything is alright and dandy. It is not. Sometimes, you have to be the jerk who changes things and/or gets things in order.
I updated my statement on my resume (PDF version) today to reflect this because I've been thinking about it and did not have a way/idea to express my frustration without sounding too negative.
One of these days, I'll start my own company and implement the ideas outlined here and set a real working example because it is apparent people are too stuck to traditional methods because 'it's always been that way.'
People collectively can do great things, so all I ask of people, who fit in my representative sample, is to have a better set of standards.