At one of the jobs I was working at years back, I was a pretty successful developer. it was a startup and I was having fun. Near the end of its life though, things started falling apart and everyone had to contribute to the effort, including doing things that are not just developer-related, or really annoying things (using lots of notepad… for many kinds of logs and such).
I hated that part and kept bitching about it, and one day, the CEO told me I have two weeks to get my act together because people were no longer willing to work with me on things. Two weeks went and I tried. I really tried to be positive, but I eventually got fired from that place.
It could have been different, but I see this behavior in many places even today.
For me, ALT.NET finally means something I can put into more coherent thoughts: Personal Integrity. And I don’t just mean it in the “you can count on me” sense. I mean it in the “whole” way too.
Integrity means following up on what you say, with real action, not just words. you Say you do something, you mean that, and you actually follow through.
That’s why the Vote Of No Confidence at the Entity Framework felt so icky to me. It’s just plain whining. There is nothing easier than sitting in the corner and whining about how unfair someone else is, or how they are not taking your thoughts into account and how the world would be a better place if everyone would just shut up and listen to what you have to say and so on..
Well, what are you going to DO about it?
That is my question to anyone who feels that things could be better, regardless of where they are and what they do at work.
Personal integrity is about doing the things that are under your control and following through on them.
Examples of integrity moving worlds?
- MonoRail as an implementation of Ruby on Rails MVC for ASP.NET. It proved to be such a nice alternative to mainstream .NET, that MS came out with ASP.NET MVC. Things have moved.
- FubuMVC is an alternative implementation of how some ALT.NETtt’ers feels ASP.NET MVC should work out of the box in terms of design guidelines. It turns heads at microsoft and provides a guiding alternative to mainstream ASP MVC guidelines.
- NUNit, MbUnit: showed that there is a need for them. MS followed with their own view of things.
- XUnit.NET: provides an alternative to to the “mainstream” MSTest, NUnit and MbUnit. Just because.
- NInject provides an alternative to mainstream IOC containers. so does StructureMap.
- ALT.NET groups and conferences all over the world, arranged by people who are doing something about what they believe.
- NHibernate is now gaining lots of momentum as an ORM solution. Books are written about it.
What’s common here is that people, instead of bitching and whining, got up and did something about it. They didn’t say, they did.
It’s true = these are all still relative niche projects.
But to get things changing, you need to first provide a path for people to go through. It’s not enough to say things are bad, it’s much better to say “Here’s how I’m doing it and I’ll teach you”.
Here’s an example from our work:
One of our employees really wanted a coffee machine, but we can’t afford one (being a startup and all). So she figured out places where costs can be cut (getting discounts from a couple of suppliers, purchasing cheaper products and so on..) and got back to our CEO with a detailed report on how she already saved the amount needed to purchase a coffee machine in the past month.
She didn’t get up and whine, just made it happen. And our coffee machine is on the way.
What can you do today?
Don’t compromise with what’s under your control.
- If you’re a team lead and you think testing is important, you can make sure tests are being written and review them. But you can’t control the whole organization. so you can only lead by example: show what it can look like with tests. don’t bend over if someone forces you to do what you don’t like. find a way to make things work as long as they are under your control.
- If you are a developer who feels things could be better – don’t complain about it. start making changes in the things under your control. Make yourself an automated build cycle if you think it’s a good idea. run it just for you, but show it to everyone else. You can’t control if they want to use it or not but you can control the fact they you are trying to teach.
- If you are a manager who thinks the org. could be more agile, use your control and start asking for agile results: ask to see the list of tests before a release of the application. don’t accept “no” for an answer. Demand bi-weekly demos of the app.
there is ALWAYS something you can do.
On my first job I was annoyed because everyone had 15” screens. I didn’t want to wait two years to get one, so I got my own screen, in my own money and I had a screen big enough. it’s that simple.
What are YOU going to do about it? Starting Tomorrow?