The Future of Development Processes
I have worked with several companies over my career and I have worked under a waterfall process, agile (in its many forms (xp, scrum, kanban)), and I have worked a few places with very little process but much at stake.
Allow me to start by saying, I am a huge fan of efficiency and getting things done. Yes, we can debate what "done" is for days, but I'll save that for another post. I have enjoyed the various attempts of Agile that I have seen over the years. People learn, they get better, and they refine. There are definitely some very good parts of Agile, but it is not always ala carte menu.
I have seen people really love the sprint planning, but hated demos and retrospectives. I have also seen that demos are very important to some and they concept of stories seem too tedious to stick with. I have attended training courses, on-site and online from certified experts. I love when people claim to be experts. What defines that expert status for your area? It is often subjective, that is a topic for another post too.
If you have a certification because you attended a course, workshop, or paid a lot of money for something, but have never implemented your "theory" in at least 3 real world examples, you are a student and not an expert.
I have changed various corporate cultures over time, and I have tested my theories out on what works and what doesn't. The process for a startup is not the same process for a publicly traded company. Why? Because the actual goals are different. The goal of a startup is to create a product that works better than any market competitor, or be the first to market if there is no competition. The goal of a publicly traded company is to track capital expenditures to decrease cost based on deductions while adding functionality to an existing, often legacy, product to keep recurring revenue and improve the day-to-day work of the client. The goal of a game company is to create something that is addictive, easy to play, hard to master, and creates a social buzz increasing visibility.
The first thing that any development organization is to be honest with themselves and realize what are you really trying to do? Are you simply trying to increase profits? That motive often fails in the long run as a primary goal, because passion is often lost. What problem are you trying to solve for your clients? What really is wrong that you are fixing? Another scenario may be this, "we have a solid customer base, but we want to make things better for them" So ask this: "What do they hate doing on a DAILY basis?". I worked for one place, that knew there customers hated doing their annual report, it usually took 2 days to put all the data together and it was so annoying for them. They focused on that because they asked their client what they wanted fixed, and asked them at that particular time in the year when they were doing that. They missed, the other 363 days of how they have daily reports that took 2 hours a day to put together and had to gather data from 3 different spreadsheets. THAT was the real problem they should have fixed. So ask the right question on what are you trying to do?
The next thing that I have seen work better than any other process is to hire GREAT people. Great people can often replace some problems in the process because they are simply smart. They do the right thing based on what they have done in the past. Good people often stumble over process because they want to make a good impression. They want to track everything right, attend to every report, and make sure they share at every meeting. Great people smile a lot and laugh. They look at some process they are asked to follow and say it is an interruption, and why do you need that data over a working product? They challenge process but love to produce working products. Those great people often improve your company within weeks and often make everyone around them empowered and happy.
The final piece of the puzzle that I want to discuss here is self-awareness. I am not perfect. I make mistakes. I love my mistakes now. They making me better. Don't get me wrong, I LOVE success too. I remember hearing how this young entrepreneur wanted to teach a course on running a business after 5 failed attempts. It is great that he had a lot experience in attempting to run a business, but I would rather take a class from someone who actually is STILL running a business they started. My point is this, be aware of your short-comings, analyze your strengths, find people who can help you in your weak areas. I have heard how people think we need to work on our weaknesses and make them our strengths. That is a waste of time, you are not strong in every area, you never will be. You can be strong in certain areas, and then have people around you who are strong in the other areas. Why not make your strengths even stronger? I am not a graphic designer, I know that. I have played with Gimp, Photoshop, Illustrator, and it is just not who I am. I even took courses to improve that. I actually got a way better solution, I married an artist, singer, painter, graphic designer, photographer. I don't try to do her job and she knows my strengths. Ok, I am spoiled and very grateful to have an amazing wife, but my point is to know your limitations, and then find a great group to provide the support and skills you don't have.
The future of development is always changing, languages, platforms, Gantt charts, Agile process, etc... But the few keys that make any process works is A real vision of what you are doing, GREAT people, and Self-Awareness. You will be amazed at what you can accomplish when you know where you are headed, have great people around you to help, and know that you can't do it all and admit your mistakes early.
Thanks for stopping by... :-)