Saturday, May 1, 2010

Finding the sweet spot

Often, when developing a project, you might find yourself taking very similar decisions over and over.
When facing a decision there are usually two (somewhat opposite) ways to approach the problem.
As a rule of thumb we try to reach a sweet spot between both poles, taking the best features of each side. Consider, for example, the following issues:

"I will have to carefully design this module while not consuming too much time and resources, since development should progress very quickly"

We believe skipping any of the software engineering phases will most likely result in a product of inferior quality, since you will probably fail to produce high quality software when designing without knowing *what* you are designing, coding without knowing *how* you are implementing, or deploying without having actually gone through testing.
That being said, you can't really go very deep into any of the phases if you really want your development process to be anywhere near agile.

"There are 10 ideas/features we want to include in our product, although we will only be able to include 2 or 3 due to time constraints "

A good rule of thumb would be to only include those features which are tightly bound to the core of your product. Including features which strengthen the core can only help you focus on the important things.
You might find some of the features - which we assume to be outside of the scope of the "core features" - to be very cool, but how do you know your users are going to like it as much as you do? Only your own users can provide you with those features they are looking forward to.

"The implementation of this particular module leaves plenty of room for improvement. "

Again, why start optimizing before you know for certain what parts you should be optimizing?(bottlenecks, etc).
Furthermore, some optimizations may result in code which is more difficult to maintain.

So remember, think before you act, stay simple, be spartan!


  1. Android applications are very famous for in the mobile era.

    Android development is a software stack for mobile devices. It includes an operating system, middleware and key applications. It was purchased by Google in 2005. The Android mobile operating system is based on the Linux kernel. Google and other members of the Open Handset Alliance worked on Android's development and release.

  2. Hmmm….you’ve got me thinking. Are you sure that freelancing is a worthwhile job? Simply put…is it even a `real job’? Your blog is sure to convince even the hardest of skeptics. Maybe it’s time to take a break. There is too much stress around me and I am grateful to you for showing me the way out. Freelancer – it does sound good on my tongue. And you are also telling me that I can make more money from home? I did check on sites like selling my logo design,eye catching logo, which are top-listed heavenly places for the freelancing crowd. They are quite genuine. Finally, I have come to a decision. It is time to move on…as a freelancer!