Archive for 2010

Calling All Belgian Developers

21 commentsWritten on December 13th, 2010 by
Categories: Software Development

About 2,5 years ago, i tried to start a Belgian ALT.NET group. Some people were interested at first and we had a few meetings. After a while though, things slowed down due to a variety of reasons. I do meet up with some of the people who were involved from time to time, and one of the things we all seem to agree on is that the most important parts of those meetings were the informal discussions about our jobs and projects that took place either before or after the actual 'meetings' or 'events'.

I want to get something like that going in Belgium again. I want to talk to other developers who are serious about their job. I want to know what they're doing and how they're doing it. I want to know what people are studying or experimenting with on their own time. I want to know what works for people and what doesn't. And i want us to share that information and that experience. If you feel the same way, please respond to this post with a comment (and do fill out your email address) or email me directly. I don't care how many or how few people respond. If 5 passionate developers respond, it's already a win-win situation for each one of them.

But... there are a few rules that i would like to propose to avoid the same result that we saw with the Belgian ALT.NET movement:

  • If you wanna come to the meetings, leave your ego at home. We are not interested in being a part of your career plan. We just want to share knowledge and experiences.
  • Let's not restrict ourselves to a single technology. It'd be great if these meetings were attended by people who were doing .NET, Java, Ruby, Python, whatever. The goal is to learn from each other and to pick each others brains, and one of the best ways to do that is to look outside of your immediate (technological) environment.
  • Let's keep things simple. Let's not seek out sponsorship. Let's not seek out opportunities to do presentations. Let's just hang out and talk about software development.
  • Let's get together regularly. Twice a month or so. If you can't make a meeting, show up for the next one. Or the one after that. It doesn't matter, as long as we always have a small group of people who show up to talk with and learn from each other.

Who's with me?

Independence Day

21 commentsWritten on December 9th, 2010 by
Categories: Off Topic

I'm one of those rare people who's spent more than a few years with his first employer. In fact, i've been there for 8 years and 2 months now. I spent the first 5 years and 3 months working for a client of ours, and then another 6 months working for another client. After that, i moved to our own office where i worked on some projects at first, and then mostly on our products. I've learned a lot of great stuff during those 8 years, and i've grown a lot as a person as well. But the time has come for some serious changes.

I recently started my own company, called That Extra Mile (no website yet). As of January 3rd, i'm going to be working at a client that i'm very excited about. I also plan on doing some other stuff such as (very) short-term consulting, occasionally some workshops/training and i also want to get into iPhone/iPad (and perhaps Android) development. If you were wondering why it's been so quiet on this blog the past few weeks, now you know why. But now that everything has been taken care of and has been set up properly, things can finally get back to how they used to be around here :)

What Do You Think Of This Hack?

14 commentsWritten on November 16th, 2010 by
Categories: C#, Code Quality

I have a class which exposes a fluent interface to build something. Instances of this class contain some state based on the methods of the fluent interface you called and the arguments you passed to those methods. Now, that state is currently private but it's not private in the "oh my god we need to encapsulate this so nobody can read it!11!!!1" sense. In fact, i actually want to access that state from another class. The only 'problem' is that i don't want to add methods or properties to the class to expose this state, because it sort-of pollutes the fluent interface. I know, that's not really a huge issue but still, it'd be nice to keep the fluent interface clean and focused.

One way to expose this state without polluting the fluent interface is to create a separate interface which defines the methods/properties and then have the class implement that interface explicitly. That way you could only access those methods/properties when you cast the instance to the interface type. While there's nothing really wrong with doing that, i kinda have a bad feeling about that because it introduces an interface which is only there to support this little exercise in Intellectual Masturbation.

Instead, i tried this:

    public class MyClassWhichUsesAFluentInterface
    {
        private List<string> someState = new List<string>();

        public MyClassWhichUsesAFluentInterface SomethingFluent(string blah)
        {
            someState.Add(blah);
            return this;
        }

        // ...

        public static List<string> GetState(MyClassWhichUsesAFluentInterface constructedThingie)
        {
            return constructedThingie.someState;
        }
    }

Is it fancy? nope. Is it cool? nope. Does it work? yup. Is it simple? yup.

Good enough for me.

Favor Value Over Quality

14 commentsWritten on November 11th, 2010 by
Categories: Opinions, Software Development

A mistake that many developers often make is that of putting too much effort into making their code and their designs as good as they can be. Don't get me wrong, good code and good design is obviously important. But what is even more important is that in most cases, someone is paying you to write and/or maintain that code and that person deserves a good return on his/her investment in you. Your job is to create value. Whatever it is that you're working on needs to add value in some way or another.

The most obvious way in which you can create value is when you write code that results in noticeable improvement when it is being executed. It could be a new feature. It could be an improvement to an already existing feature. It could be a performance optimization somewhere. It could be a bugfix. All of these make the software better in an externally observable manner which, like it or not, is all that really matters to the people who are funding your development activities.

Obviously, we all know that good code and good design make software better as well. It just improves the quality of the software in a more internal manner. It's not directly externally observable. It is however quite reasonable to claim that good code and good design lead to sustained productivity while working on the software. It enables the continuous creation of value without making it increasingly expensive.

So focusing on the quality of your code and design is a good thing, right? Of course it is, as long as it doesn't prevent you from actually delivering your software to the people who are supposed to use it in a timely fashion. At some point, you are going to have to accept that you can't spend all that extra time and money to make it perfect. The software you're working on is most likely supposed to reduce costs for its users, or generate money for its owners. As long as it's not being used, it's nothing more than a cost. A big one even.

Focus on creating value. Make sure you keep your code and your design clean enough to achieve that. It's not about how great you think you are. It's not about your ego. It's not about how you can tell people that you've used approach X or pattern Y or library Z in a project that users might not be happy with. It's about delivering the value that you were requested to deliver. Plain and simple.

Check Out PragPub, An Excellent Free Magazine

3 commentsWritten on November 11th, 2010 by
Categories: Software Development

In case you've missed it, as i have for the first 15 issues, the Pragmatic Programmers have an excellent free magazine called PragPub. There's a new issue every month which you can either read online, or download in a couple of formats (pdf, epub, mobi) so you can read it on pretty much every device you want. It's about software development in general, with no particular focus on a certain technology. Just great content with great variety. And it's free. So do yourself a favor, and check it out if you haven't already :)