Posted by: ahmedashfaque | January 14, 2015

High level design – finding the right solution

People find it difficult to think about putting a high level design in place on agile projects. Let us put the points straight as to why it is important to do so.

When you start the project, the stakeholders have some idea as to what software product they are going to build. So there are some requirements in hand even if not all of them. Anyways you can keep finding and discovering the right requirements once you start building your product. You will get lots of market feedback when your initial product goes online and users start using your product. These feedbacks will generate the future requirements. So don’t worry about future requirements yet.

Coming back to design, the first thing you need to do is to ask your team how you are going to implement the solution with the initial few requirements. Remember requirement specifications are never come with implementation details. You need to think about implementation details only then you can make your requirements into something concrete. You need to find the right technologies, for your user interface, your business logic and your database. You also need to find out if technologies selected by you for creating the user interfaces will work fine with the technology you will select for building you business logic. If you also need to integrate your solution with some other existing or upcoming application then you really need to think hard how you are going to integrate your application with those other applications.

Productivity is one of the biggest constraints for any software project. If your team is not familiar with a cutting edge technology then it will be waste of time and money to select it. You will be better off to stick to the technology your team is most comfortable with.

People talk of artificial intelligence and how it is going to replace your project team is just an eyewash. Even today most project teams struggle with basic code writing. So forget about fancy jargon and be practical. Artificial intelligence and automatic code generation is something in distant future.

High level design makes sense because even though you can use refactoring to adjust your code for accommodating future requirements; but once you do your technology selection, you can not throw it away in the middle of the project and select some other technology.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s


%d bloggers like this: