Runied by pr0n post
(WARNING: POST CONTAINS PROFANITY AND CHRIS' OPINION ON EVENTS AT AN OLD JOB. THEY MIGHT NOT MATCH THE REALITY BUT IT'S WHAT I REMEMBER. YOU HAVE BEEN WARNED)
While it's not a secret to most people who have actually met me or spoken with me at length, I worked for an adult dating web site from January 2002 until December 2005. I committed the first line of code into the CVS repository (yes, it was that long ago) and pulled some ridiculously long hours along with the rest of team (which started with just me and another developer and grew to be 20 by the time I left) to push a first horrible version of it out. It was slow. It was poorly architected. Built in the days before the Rise of The Framework, it was big fucking mess. But it made the owners money when it launched and the focus quickly became "don't do anything that prevents sign-ups". It bugged me then. It bugs me now.
It was working in that unique environment that I cultivated the grumpy, profanity-laden personality that has in recent years been toned down. I was determined to Make Things Better, Damnit. There were arguments about what bugs we should tackle first. I did a little research project to see if we could refactor stuff into using the Mojavi Project (which lives on in Agavi). It worked, but further work was rejected. I constantly suggested new technologies that would be of real benefit to us, focusing on caching and separating out business logic from presentation logic so it would be easier to make "white label" versions of the site (meaning we could resell the engine to other people if they made their own templates). REJECTED.
I made a flash designer cry because I told him this template-creation tool he had created was a toy and could never be used by us internally. I had a superslacker, pot-smoking graphic artist convinced I had got him fired because I warned him just before he got fired that smoking pot during work hours was making us all look bad. I didn't know he was going to be fired, but it didn't take a genius to see the link.
I learned to not take shit from co-workers and also that the people who own the company usually don't care about anything on the technical level. They care about making money, and it was surprising to me that I could not make the case to them that "well, if we did things this way then the site is faster and you can sign up more people." Chalk that up to experience. Now I try to make the case by presenting it as being about costs and on-going maintenance.
I left that job when it became obvious I was never going to advance past being a code monkey. I had seen a proposal for a reassignment of people into new teams and new jobs. The new job that had my name to it would've been awesome. I was stoked. It was just the type of stuff I wanted to do. When they reassignment happened, that job disappeared and I was shoved even further down the org chart. All because I was an asshole who wanted to make things at the code level better.
My friend Kevin went through similar experiences but with a different company in the same building. With those shared experiences, we have a shorthand label we apply to ourselves whenever we (well, it's usually me) complain about something that happened at work. "Ruined By Porn", or #rbp on Twitter.
Ruined By Porn means that we worked in an environment where the attitude was really "tough shit, you're doing things our way. If you don't like it you can sit there or you can quit". It means you have gone through the experience of your managers and other superiors trying to break you like you break an animal that is trying to remain wild. I wish I could say I was joking, but it felt that way. Psychological warfare in the workplace. Meetings where your every suggestion was dismissed, but they wouldn't get rid of you. It gives you a very low threshold for nonsense from your co-workers as you learn to correctly identify threats and obstacles that prevent you from doing the things you want to do.
I also learned all about inflexible schedules and learned that crying about it never got it changed. I worked a ton of overtime and bought my wife a really nice tennis bracelet with diamonds in it as a way of saying "sorry I wasn't around for two months leading up to Christmas, sticking you with our extremely young daughter." It taught me that a poorly scoped and poorly managed project is doomed to failure. No amount of applying agile or XP to it is going to fix a late project. It matters when you try and do the next project what you choose to use.
So what happened to me there? I learned the hardest lesson I had to learn. When you push to make things better, unless you have real power in the organization to make things happen you are screwed and need to go and work somewhere else. I left that job because I got tired of losing the political battle there. I was being shunted off onto crummy jobs because of my personality and I thought that nobody gave a damn what I was doing there, and the only reason I didn't get fired or laid off was because they didn't want to pay me severance. You have to be willing to walk away from a job if it's not what you want. You have to be willing to walk away from a job if it is never going to turn into what you wanted.
So at each job, I made sure I had more and more power to do the stuff that I wanted. It has led me to be in positions where I have a real impact on both the applications I help write and the business itself. It has taught me that you need to frame conversations about serious change in the way work is done and things are built in terms of money saved. The only way you get to do the things you want is to either have yourself as a boss or frame the conversation in a way that the people who pay your salary can understand.
So here's another lesson to learn as part of the Ideas of March: be prepared to suffer if you wish to promote best-standards until you have enough experience to back those views up with actions. Be ready to quit for your principles. My wife says that my approach has made me "semi-successful", and I think I agree with that.