Hack? Workaround? Agile development? Getting thing done?
I had been working in C# QA team on creating internal tools for more than 4 years. I have a good reputation on quickly turnaround rate on request for new tools and a bad reputation on creating "quick & dirty" solution.
I recently read a book call SQL Hacks which written by Andrew Cumming & Gordon Russell. Inside the book, there is one paragraph which resonate me
"The term hacking has a bad reputation in the press. They use it to refer to people who break into systems or wreak havoc with computers as their weapon. Among people who write code, though, the term hack refers to a "quick-and-dirty" solution to a problem, or a clever way to get something done. And the term hacker is taken very much as a compliment, referring to someone as being creative, having the technical chops to get things done"
Because of the ever changing testing environment/requirements, I prefer application/solution which is extremely flexible and easy to "hack". However, in another term, the application/solution doesn't have a perfect design or following all the best practices available at the beginning.
For whatever reason, agile development suddenly become a big buzz word in the software industry. Basically, people want to develop their software in a way that they could frequently publish their new features/bug fixes based on customer feedback. In another word, does it means agile development is trying to develop something which is easy to "hack"/extensible based on customer feedback? How could you design something you don't know (the customer feedback, the actual needed)?
I know that being "agile" and "get thing done" is not equal to being "hacky" and "quick & dirty". Believe me, I saw a lot of dirty code. However, if people accuse us on providing quick & dirty solution next time, may be we should start convincing them that we are actually trying to be agile and get thing done.