Saturday, November 03, 2012

Visual Studio 2010 Best Practices by Peter Ritchie (Book Review)

Visual Studio 2010 Best Practices by Peter Ritchie is an interesting book for both beginners and professionals using Visual Studio. Right now, as I am writing the review Visual Studio 2012 would have been launched. Visual Studio has grown to become an application life cycle management tool that it not only covers software development environment and compiler, but it now has also integrated components such as program/task management, code repository, test framework that allows the creation of environment as well as a set of test tools.

So, other than software developers, there will be a lot of software professionals drawn into understanding Visual Studio better. The book can be read through or dive directly into a chapter that is of interest. The first chapter deals with Best Practices, which the author defines what it is and definitely not a once size fit all solution but a series of solution given the context or situation we are in. The author reminds us again that there is no best solution, but with a quick guide for us where to start in the context or situation that we are currently in. In my opinion, this is important as we sometimes expect that the author is tempted to jump straight into the nuts and bolts of Visual Studio without having understand the overarching principle behind it.

In the second chapter, it deals with source code control. Typically, to use the source code control effectively, you would need a consultant to come in and analyse your needs. The author provided a glimpse of different context of which you can tweak or configure Visual Studio to best work for you. Once tweak to your need, it can be a powerful tool to make software development less hassle, effective and source code controlled properly without too much additional efforts. It could speed up development and avoid potential release mix up as well.

The author then shares c# knowledge in Chapter 3 and then low level architecture good practices that is often forgotten in Chapter 4. In the midst of design and coding, it will be hard to catch up on low level architectural practices and very often, in the midst of coding and problem solving, this good practices are forgotten. We'll get some insight from Peter Ritchie in this area. Chapter 5 deals with deployment options, typically the area of installation package that we are accustomed with. This is a big area and Peter concentrates on the commonly used ones available in Visual Studio.

Chapter 6 concentrates on automated testing capability of Visual Studio. Some of the concepts discussed are Test Driven Development (TDD) / Behaviour Driven Design (BDD). I have spent a lot of time in software testing and I found some sound advice on the usage of automated tool to quickly assist development and to share the burden of ensuring bug free system. For example Test Driven Development takes a lot of discipline and time, but done correctly, it greatly improves the product quality. This would be essential especially for projects that has fast release and critical role.

Chapter 7 is an interesting one, as Peter again, based on his experience helps us to optimize Visual Studio and how to make it a better tool for the development team. Maybe it is my choice of books, but I don't see topics on this area a lot, so it helps. It starts from as basic as the recommended computer specifications to creation of project, again looking into the context to best help us to visualize what is best for our situation. Since software developer is going to look at it 8 hours a day, how it is visualize and customization so that it is as developer friendly as they like it.

In Chapter 8 we look at one of the most common headache of software developer, threading. Peter would again, explain what practice best suit your context of situation. This chapter detail some practices for parallelization of code that includes principle, threads, thread synchronization, asynchronous operations, division of labour, task parallel library, Visual Studio 2012 asynchronous programming and reactive extensions.

Chapter 9 helps the reader to appreciate the complexity of distributed system, that is, application that runs from multiple system. This is an important component for big system and enterprise system. Finally, Chapter 10, a chapter dedicated to building web based system, which is important because almost every system is moving towards the cloud and run from the browser. The last two chapters alone of course are big area and could be converted into a volume on its own.

For those who wants to look beyond what is covered in the book, the author also helps by recommending other books in the summary section just in case what was covered isn't adequate. Overall, I feel that this book prepares the reader to be a consultant going into a Visual Studio development team and how to improve the product quality, cost and time, not too much on the nuts and bolts of the setting and configuration. However, this is not a quick fix or typical book that recommends you the best solution. If that is what you are looking for, you may be disappointed. I rate this book 4 out of 5.

~~~ Life is an adventure where we search for the meaning of the outcome.

Twitting Up and Down

    follow me on Twitter

    The Person Behind this Blog

    My photo

    Winson has about 15+ years of working experience, 10+ of which is in the area of Quality Assurance in software/design industry. A senior member of American Society for Quality (ASQ), a member of IIST and an ASQ Certified Quality Manager or better known as Certified Manager of Quality/Organizational Excellence (CMQ/OE), Certified Project Manager (PMP) and Certified Scrum Master (CSM). Currently, he has about 5 years in managerial position in charge of QA Department, managing a team of QA executives and IT Administrator, performing software testing, software quality assurance/audit and process improvement.

    He also handles area of certification and technical partnership for his current organization both for products and the organization. Currently he leads an independent team to study the software testing capability in his organization and suggest improvements for it.

    His passion is in the area of Quality, Process Improvement & Software Testing, and he is also active in Product Certification Processes, Team Building and Training.

    He is a visionary, thinker, motivator, teamwork oriented manager, communicator, proactive and forward thinker, who loves to work with multi-cultural and wide variety of people.