Social factors of software development
For those who have never experienced writing software for a real client, it can be tempting to jump straight into writing the code to get the job done. The lesson learnt very quickly is that developing software for clients is very different to developing the same software as a personal project or a coursework item for a school, college or university course. Both code and hardware system requirements could be exactly the same, but the big difference is the people factor — in the real world, software developers have to contend with social factors that are never part of personal projects or coursework:
Unknown requirements: Unlike coursework where there is a clear specification of what you are expected to create, clients often only have a vague idea of what they want — typically in the form of what it should do and not how it should do it, but there are also times when clients don't know "what" the software should do. A good example of this is how people...