Recently I stumbled on a really sensible and frank lecture by Josh Holmes on how to keep things simple in software development. Josh uses Twitter as an example of a simple yet effective/innovative website which, if you scrape away the bell and whistles is a basic communication tool. The concept behind Twitter could actually be created very quickly using existing programming languages and technologies.
Josh goes on to highlight the fears that some developers/teams have when creating a ‘solution’ to a clients request. The result of these concerns is to build a system that is over complicated for the clients requirements.
Many great products are actually built on existing technologies which wrap around a simple-to-the-point concept. Take the Ipod for instance – its just a mp3 player. Cloud computing is built on a bunch of servers that are configured for scaling. Josh mentions the Microsoft Kinect which, under the hood is a bunch of cameras strung together to record a series of responses. None of these are really new technologies but rather sets of existing technologies that are tuned to solve a specific problem.
Josh mentions that as developers we should listen more to user requirements and write code that is relevant to the clients needs. We shouldn’t rush out and use new technologies unless it solves a specific problem or helps you meet a clients requirement.
These are very good points and I will now ask my self the following question when I work on projects:
Is this method, class, dependency actually going to help me meet the needs of the client without over complicating the project?
You can view the talk in full below.