Monday, 25 May 2009

Unit Testing JavaScript

  • QUnit is a powerful, easy-to-use, JavaScript test suite. It's used by the jQuery project to test its code and plugins but is capable of testing any generic JavaScript code (and even capable of testing JavaScript code on the server-side).
  • FireUnit is a FireFox add-on which enables us writing Unit Tests for JavaScript.
  • JsUnit is another unit testing framework for JavaScript.
  • WatiN is another unit testing tool for UI and AJAX

More info:

Sunday, 24 May 2009

Lean Principles

The Seven Principles of Lean Software Development
  1. Eliminate Waste
  2. Create Knowledge and Amplify Learning
  3. Defer Commitment
  4. Deliver as Fast as Possible
  5. Respect People and Empower the Team
  6. Build Integrity and Quality in 
  7. See and Optimize the Whole
More Details:

Thursday, 21 May 2009

Best Software Development & Design Principles

I would like to write about what I think are best software development and design principles:

Simplicity
Have you seen spagetty code? I believe in breaking the complexity into smaller and simpler parts so that each part are simple to understand, write and change.

Reusability
Why should you write the same code, like data access layer, 100 times in each application while the pattern of its generation is the same? We should look for patterns where it's simpler to make our codes reusable and packagable. Think about where you can generate code. See how you can design your code to be more reusable or where you can use reliable hirdparty tools; you don't have to write everything yourself, there are plenty of good tools in the market that may meet your needs.

Extensibility
The requiremetns always change. We should think about future in what extent our application is going to be extended and are we designing and developing the components in a way that extensibility will be supported. Think about where you can design the software more configurable.

Iterative Development
You don't have time to sit down and document all peices of requirements and design in the most perfect way. Design, develop and deliver iteratively in short springs/iterations e.g. 1-2 weeks. You will be able to get feedback sooner so that the changes will be made clearer and sooner.

Write Tests
Writing unit and integration tests is sometimes the most boring/challenging and time consuming part but it pays off when you use the right tools and consider the benefits such as high quality, changable software, bug free software, happier customer ...

Refactor
Spend time for refactoring your existing production and test code; refactoring has so many benefits some of which are listed here. Not doing so can lead to have bad spaghetti code that which not only others cannot understand easily but also you yourself won't understand it few months later!

Learn Consistently
Many problems that you are going to solve are alread solved! Spend time regularly to learn more about refactoring techniques, design patterns, and new technologies. Find and read good blogs.

Join Communities of Mutual Interest
You will not be a successful developer if you rely only on yourself always and don't learn from others or share with others. Also you will miss so many opportunities that communities provide. Join forums, such as asp.net or msdn forum, to discuss issues or design/development questions. Join communities. Attend events and meet people with whom you have mutual interest. Go out there, share what you know and learn what others share.


Thursday, 14 May 2009

Refactoring Databases

I haven't yet found time to read the Refactoring Databases book but its main examples can be found here.

Thursday, 7 May 2009

ASP.NET Dynamic Data

ASP.NET Dynamic Data provides a framework that enables you to quickly build a functional data-driven application, based on a LINQ to SQL or Entity Framework data model. It also adds great flexibility and functionality to the DetailsView, FormView, GridView, and ListView controls in the form of smart validation and the ability to easily change the display of these controls using templates.

It's part of .NET 3.5 SP1 and it's added to Visual Studio 2008.