Okay, lets say you have an idea, but you lack the technical skills. You assumed you can learn, but failed miserably.
So what to do?
I have witnessed different scenarios, some hire developers but end up failing, some go to development houses to get his project done and some try doing themselves.
All can succeed and fail, each scenario has its ups and downs.
But, unlike real life projects, software development is a bit more complicated. It is like building a block. Lets say you want a 4-floor block. You have an architect, draw it, give it final shape and then start construction, right?
Well, this used to work for software development too. But with today’s competitive market, businesses need more flexibility in terms of increasing the competitiveness. So, lets say you have an idea and somehow you managed to get it going. If you stick to this block example, you will fail, because you wouldnt have the flexibility. What i mean is, lets say as soon as you started you learnt that the area you are building on has a bad climate and you need better materials for isolation that requires additional applications to be used. Now, you had a plan, but that plan no longer works. This is the flexibility that i am talking about.
Most of the companies that i talk to see the bigger picture. They want something fully done, not realizing what they want today will be no good for tomorrow. This is so called “Waterfall” strategy, which hardly works. It might be good for keeping the scope of project limited. Lets say you need an internal software that will do only a certain task, waterfall would be good for that. You can set the deadline, budget, workforce from day one.
But lets say you are entering in e-commerce business. Regulations change everyday, so you need the flexibility of making changes rapidly. This is where the agile methodologies kick in.
I am going to be honest with you, in my humble opinion, this methodologies exist so that business people be forced to follow something. Because when you tell them, they cant have it all, they dont get it. You cant make 9 women give birth in 1 month, right?
So what happens with agile? Well, you stick to an MVP, minimum valuable product. It does one specific thing at first and you continue building on it with increments. There are so called sprints, plannings etc. In scrum you run sprints, that are time boxed events (such as 2-week etc.) in which teams try to get done a task that can be deployed.
I wont get into details of agile methodologies. So for my topic of, software development management, i want to emphasize of planning. Again you can have an idea. But how detailed is that idea?
Lets assume, you want this idea to be developed by a development house. You knock their door and tell them to do your idea. But what are the details? How will it look? What kind of features will it have?
Lets think of your product as your home. You would want a bathroom, kitchen, living room etc. right? When you look for a living you know how big you want it to be, 100 sq meters or so. For the accessories, you want a sofa, for 2 people, red. Here “for 2 people” and “red” are defining characteristics of a sofa. Now in terms of software development, sofa is a feature that is in a room which is a bigger feature in a house which is the end product. Get it?
The good part of agile methodologies and why everyone so bat-crazy about it right now is because with it you dont have to think of the whole at first. You start working with lets say the sofa. After you finish it, you go on with other things, then you finish living room after knowing how many things you want in your living room, because now you can see how big you want it to be.
Another good thing is, you have seen how fast you can build things and you can guesstimate the building time of similar objects. Your speed is called velocity, an indicator of your performance and so on.
This might work best if you have in-house developers. With development houses since they work on man-hour basis it is better that you go with most of the stuff you want and try to have them get done asap. Otherwise it might be expensive.
With in house developers, why this works best is because now you have very specific definitions of what needs to be done. They would know how it needs to be done and its details. Being specific about something makes it easier to develop, because you know what to expect from end result.
I want to summarize. You might have tons of money, but software development is not about the money you have. If you have something on mind, put it on paper first. Try to detail it as much as possible. Think of all the adjectives you can. This will help you to prevent you from disappointments, keep a healthy relationship with your developers. Because with this approach, they can now when they can deliver and since they have a clear idea of what needs to be delivered, they would feel more confident.