Performance matters. Nowadays web performance matters even more – users will easily go and find another website if yours is responding too slowly. And this can be a matter of hundreds of milliseconds only. This directly translates to less money earned, and in fact can be your “be or not to be” on the market. Although performance is so important from a purely business point of view, it is also very interesting from its technical side. Performance is a fun. You have to understand things deeply, you must know specific technology tips and tricks, be aware of common pitfalls. This is all we, geeks, fans, developers, love to know, isn’t it? Have you ever heard about Mechanical Sympathy?
TooSlowException.com is a blog dedicated to everything related to performance, architecture, Software Craftmanship and Mechanical Sympathy: in general and in details. For example, I believe every aspect of software development lifecycle is (or should be) somehow related to performance because performance itself is a very broad and interdisciplinary topic. Performance should be planned, included into the design, architecture and considered during development. It should be also tested, monitored and validated. The best – continuously validated to track any negative impact of code changes. If something went wrong (and from time to time certainly it will), we should know performance diagnostic and troubleshooting techniques. Even me and you – developers – can be considered as a performance-related resource – regarding its productivity and how we treat all this performance stuff during our everyday work. This is where Software Craftmanship comes into the play at this blog.
Because of so many aspects of performance, architecture, Software Craftmanship and Mechanical Sympathy, I divide articles into one of few categories, which can be seen as levels (or layers) on the topic:
- Hardware/network – this is where everything starts (or ends, depends on how to look).
- System (including drivers, assembly, and virtualization) – how a system works and how it can be optimized is very important. This is a wide category including also things like assembly code and virtualization.
- Platform – do you use Java OR .NET? Their “virtual machines”, memory management and many other elements produce the quite complicated ecosystem that influences performance very significantly.
- Framework/library – any details about specific library or framework goes here.
- Design/architecture – all design patterns and anti-patterns or specific architecture decisions and models. Architecture is a crucial base for everything. A bad design can influence solution’s scalability and performance while a good one can make your application a top-notch service in the world!
- Tools – without a hammer, you will not build a house. Knowing proper tools is always useful.
- Methodology – software development methodologies, life-cycle management, team management and everything related with that.
- Craftmanship – nothing will be working well if you as a Developer, Architect or Tester will not learn, practice and use properly knowledge you gain.
So many levels to investigate. And this is why this is a real fun – it requires in-depth knowledge about particular technology, more aware design, and development process. You do not scratch the surface to “just code” but have to deep-dive into.
I hope you will find this blog interesting!