Incremental/iterative development: Breaking down work

Over the past couple of years I’ve worked on several different applications and one thing they had in common was that they had a huge feature which would take a few months to complete and initially seemed difficult to break down. Since we favoured an incremental/iterative approach to building these features and wanted to add value in short feedback cycles ...

Read More »

Tie Your Shoes and Pull Up Your Pants

What slows down the development of software? Think about this question for a bit. Why is it that as most software evolves it gets harder and harder to add features and improve its structure? Why is it that tasks that would have at one point been simple are now difficult and complex? Why is it that teams that should be ...

Read More »

How to dynamically modify model meta data in ASP.NET MVC

Normally you just add the [Required] attribute to a view model to make it required. But I needed a way to configure whether a field to be required or not. The requirement was that it should be configured through web.config:                       <appSettings> <add key='ticket-cat1-required' value='true' /> </appSettings> Having to modify ...

Read More »

Avoiding Procrastination Through Pairing

Have you ever been working through a problem only to hit a roadblock that leaves you stuck, not knowing what to do next? What did you do next? Chances are, if you are like most programmers, you took a moment to check your Facebook, your email or perhaps your RSS feed. If you sat down and really thought about what ...

Read More »

Output Caching in ASP.NET MVC

Although nowadays most of us have broadband connections, resource caching is important as loading a resource from your local HD is (by now) still faster than fetching it remotely. In this post I’d like to explore how to control the ASP.net MVC caching behavior and its effects when using ajax requests for retrieving data. Default ASP.net MVC Caching Behavior If ...

Read More »

10 Software Documentation Best Practices

Perform documentation as required (e.g. %10 of total production time). No documentation is never a good solution as much as excessive documentation. It may include code documentation, requirement specifications, design documents, test documents, user manuals etc. Those documents are needed to be managed and shared also, by using version controlling tools and/or web based platforms. Code documentation is important. Best ...

Read More »

Building a Leak-Proof Eventing Model

One of the main features of the .NET Framework is to provide automatic memory management via garbage collection. You might think this would solve the problem of memory leaks in managed applications, but the effectiveness of the garbage collector can be hampered by your code. The GC will not release memory from objects that have root references, which can be ...

Read More »

Learning to Learn

I’m not good at many things. Let me rephrase that. I’m not naturally good at many things. There are many people who are smarter than me, process things quicker and overall just have a better aptitude for almost everything I do. I’ll freely admit, I’ve been pretty successful in my field and in life in general. (At least according to ...

Read More »

Fast Feedback

Writing good software is all about getting feedback, quickly. Does it compile? Does it function? Does it build? Does it deploy? Does it do what the customer wanted? Does it actually work? Every step of the way we have feedback loops, to improve the software. The faster these feedback loops are, the faster the software improves. Builds Don’t you hate ...

Read More »