“Is there a role for Creativity in Software Development?” – A lot of people seem to think not. Software development is considered to be for the “nerdy engineers”, “boring Math lovers”, “non-creative analytical programmers”, “more intelligent folks with little creativity”…
I was mulling over how true this is… I mean the above quotes are a reflection of the general perception of “Software Development”. However, is there really no room for creativity in Software Development?
Let’s pause for a minute to look at the basic definition. One of the best explanations of “Creativity” I found was
Creativity is the bringing into being of something which did not exist before, either as a product, a process or a thought.
You would be demonstrating creativity if you:
- Invent something which has never existed before
- Invent something which exists elsewhere but you are not aware of
- Invent a new process for doing something
- Reapply an existing process or product into a new or different market
- Develop a new way of looking at something (bringing a new idea into existence)
- Change the way someone else looks at something
Now if I view “Software Development” with the above parameters, then YES! Indeed Creativity and Software Development go hand-in-hand. Simply because in Software Development
- One creates software which never existed before
- One has the opportunity to introduce new processes / refine existing processes (either business or delivery)
- One has the opportunity to develop new ways of looking at something (bringing a new idea into existence) – either for customers, enterprises or the developer community itself
- And yes, New software can definitely pave the way for how anyone looks at something!
As I look back at my own journey in Software Development, anyone has the opportunity to be creative in the way you develop software. Looking at the Software Development Life Cycle (SDLC) as it it called in industry parlance, one has the opportunity to be creative in the following
(1) Requirements Capture – The way you capture / elicit customer requirements
(2) Analysis – The methodologies and processes used in Requirement analysis, and how you apply these
(3) Architecture – How you define the software architecture balancing short-term and long-term goals
(4) Design – How you design a software system (The design principles)
(5) Development – How you develop a software system (The tools / technologies / processes / teams / methodologies, etc.)
(6) Testing / QA( Quality Assurance) – How you test a system? (The test plan / strategy / team / test-cases / tools, etc.)
(7) User Support – How you plan to support a software system?
(8) Project / Program Management – How you manage a project / program? (The plan / the resourcing / the location / execution model, etc.)
(9) Post Production Support – How you support a software once it goes-live?
So you see, there is ample scope for one to be creative in the field of Software Development? It all depends on your perspective!