Wednesday, 26 November 2008

CPPing in .NET

I've talked about the trend of developers to use ready made solutions. The idea is simple enough. There is no need to reinvent the wheel. Almost every problem a developer encounters, someone else has already coded a solution. When taken to the extreme, we end with a development technique which can be termed "Copy Paste Programming" (CPP in short). Like anything in life there's a risk involved in this. In many cases code produced using this technique is less understood then code developed from scratch. And in most cases (I have seen) the ready made solution solves a slightly different problem then the one it is applied to. Which at the end leaves us with a piece of code that almost works but we don't know why. Its not that I'm against using other people code. In many cases its the most...

Capability of a Developer

Sometimes in life you join a discussion expecting the least, but surprisingly enough profound wisdom can be found in the least expected places. In a five minutes talk I heard a very wise man give a very good analysis of what is capability. It translate to something like this: Capability of a person is a combination of two elements The "body", which dictates the true ability/talent of the person. The "spirit", which dictates the will of the person. Taken to our domain, a developer capability will be a combination of the his technical knowledge(talent) and his motivation (will). When I want to increase a developer capabilities, I can either try to help him increase his technical know how, or try to help him on his motivation side. For best effect I try them both. ...

Monday, 24 November 2008

Outlook 2007 Hanging

Yesterday, I got into a battle with my outlook (2007). It all started after I received meeting invitation from a friend. Harmless enough isnt it? WRONG!!! When I first tried opening it, my outlook just froze on me. Being used to software crashes,  I terminated the program like I do every time. However for some reason, that stubborn message kept on freezing the outlook each time I tried to open it, and if that's not enough trying to delete it also made outlook freeze. It took me a couple of hours to try various things, but every operation that I tried on that message froze up outlook. I got so desperate so I even tried looking on the net for PST manipulation tools, that will enable me to hack in and make the message go away. (BTW I didn't find any) At the end however, I got lucky....

Tuesday, 18 November 2008

Documentation in an Agile Process

One of the more common misconception about agile is to think that it means no documentation. In the original Agile manifesto we can find that we value: Working software over comprehensive documentation For some reason people mistook this to mean that documentation has no place in an Agile process. In my opinion this is very far from the truth. What I do agree is that the commonly form for documentation i.e. text files, that most people mean when they say documentation, is probably not the best way to get the job done. Why do we write documents? I recently had a nice discussion with Eyal Katz about the need for documents. Eyal listed the following three reasons: To make the writer really think about what he is writing about. For example by writing a design document the designer...

Wednesday, 12 November 2008

Cost of Change – The Fear Factor

Oren has blogged on how to reduce the cost of change. He claims and I agree that Beyond anything else, it is the will of the team to accept the pain of making the change and actually doing this When accepting this mind set its usually a lot easier to find ways of reduce the change cost . i.e. make it easier to change. However I feel there’s another factor in equation, and that is the developer’s inherent fear of the unknown. Time and time again I’ve seen (and did that myself) programmers start implementing a change by attacking its easier parts first, leaving the real hard unknown issues to the end. When adding a new functionality to an existing system for example, there are two main steps: Implementing the new functionality. Integrating it into the given system. In most...

Test Types – Are we confused yet?

Recently I’ve encountered several places which discussed the different type of tests. Here are some terms I’ve seen: 1) Unit tests – the most widely used term, which still I’m afraid is open to interpretation. Up until now I haven't seen a good definition of what is a “unit”. Is it a single class? Is it a single component? where lies the line between different units? 2) Integration tests – again kind of vague, but mostly it means a test which encompass several “units” sometime the entire system. 3) Developer tests – this is a more broader term which means test written by developers. I myself don’t see much value in using it since it doesn’t give any indication to the tests nature . (also what are none developer tests? how to refer to manual...

Tuesday, 11 November 2008

The Future of Unit testing

I’ve recently watched the PDC 2008 panel Session on the future of unit testing. The feeling I took from this session is that Automated testing is here to stay. What gave me the indication that this is true is the fact that although the panel tried to focus on unit level testing, the audience tended to shift the discussion into other zones.Most of the audience questions were dealing with more complex scenarios, going beyond the unit level, that they encounter in real life. For me this gives a good indication that automated unit testing has taken its hold. I’m not sure if my interpretation is not Mistaken, but it seems to me that the available tooling solutions for writing unit tests has matured enough (yes even if you don’t like using mock frameworks) to the point where people are now trying...

Sunday, 9 November 2008

How to know which unit test calls a specific method

From time to time one faces the situation that one of the unit tests written fails inconsistently. The usual scenario is that when run alone the test passes, but when run as part of the entre suite the test blows up. In a lot of cases this results from some left over from previous tests. Here is an example of such a case (taken from Typemock-Isolator support forums - AAA tests pass individually, fail in suite). The reported error in this case indicates that for a mock setup in a given test was accessed in some other test which kind of confused the given test. Solving such an issue usually involves a lengthy Search&Destroy in which most of the work involves finding out which of the test is the one which is interfering with the given test. So here’s some code that should save most...

Thursday, 6 November 2008

The Fifth Value – Respect

There’s a lot to be said about respect but for some reason this value is not stressed enough. I think that much of what troubling the software development world today can be traced back to this value. Lets face it most developers are arrogant bastards(and yes I’m a developer too). Taken from Kent book: Every person whose life is touched by software development has equal value as a human being. No one is intrinsically worth more than anyone else. For software development to simultaneously improve in humanity and productivity, the contributions of each person on the team need to be respected. I am important and so are you. lets take a few examples I’ve encountered (ok, ok I’ve said those): “our customers does not know what they want. Ill tell you what they want” “our test team...

Wednesday, 5 November 2008

The Funny side of Metrics

From time to time I do stumble upon some great post. The following post (yes its an old one): Is it Wise To Aim for 100% NTF? did not only made me laugh it really made me think. Lesson learnt – Using humor to mask Wisdom is really effecti...

Monday, 3 November 2008

The power of combining Unit tests with Integration Tests (conclusion)

Here and Here I explained why I think that unit tests alone or integration tests alone does not do a good enough job at assuring the quality of the product. However, that combining the two test  levels, i.e. investing some of the effort in integration tests and in unit tests is what I call a winning solution. Investing effort on both levels allow one to benefit from both worlds on one side integration test will help in: formulizing the user requirements. make sure that system is working end to end. test non functional requirements on the other side unit tests will help in: driving the design of the system to a better one. give a good coverage of all parts of the system eliminating defects that get shipped with the system. I have been suing this approach in a...

Pages 381234 »
 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons