Andrew Stopford's Weblog

poobah

News

Articles

MbUnit Folks

Old Blogs

February 2007 - Posts

Great programmers do not make great software engineers

A post Jeff Atwood started has had some comments from Phil, Ayende, and Jeff. All bring there own interesting views to Jeffs post, I have my own views on this.

In our world you have two kinds of people, programmers and software engineers. I don't believe in such a thing as a good programmer or a bad programmer because everyone judges in different ways and it its very big headed of them to consider another programmer when I am sure they have failings of their own. Such behaviour effects moral, team work and a persons confidence and achieves nothing. Those programmers that consider them selfs 'great and good' and can code amazing algos in 3 seconds can fail at code design and testing, while others can take a little longer but achieve good design, consideration of patterns and testability. Everyone is different and its more about where you want both your self (and prehaps your team) to be with out making it a witchhunt.

Every single programmer should aim to be a software engineer, write great code but consider everyone else, they can design their code in a paper or tdd way, they can test there code and consider testability in their code, they undertstand concepts like patterms and they can consider patterns in their code to help improve their code. These are just a few things but doing we do is much more than bashing the keyboard, even great programmers can churn out plates of pasta with no thought or consideration of anyone else coming to the code. A key example, in my own experince a fraction of programmers (a very small fraction) know how to unit test, a even smaller fraction know what TDD is let alone use it and even smaller fraction still know about BDD. Even so called great programmers do not write unit tests yet programmers who some may consider not so great do, I know who gets the vote there.

I don't believe in stupid interview questions or tests, while they are suppose to give you an idea of persons ability they can very quickly turn into a wits contest and do not reflect on a person at all. Every person is different, some may succeed at these sorts of questions at interview level and some may not. Does that make them a bad programmer, no it just means they need to carefully consider what they are doing. Prehaps rather than asking them to code something (and again everyone approaches a problem in a different way) ask them how they would approach a problem, what steps they would take and where they have used that approach before. It's all about attitude, for any given persons CV you can see if they go the extra miles in their spare time and career. Phil has posted before about a persons involvement in OSS as an indicator and for me it means that a person is willing to work to a given rule set (most OSS projects impose rules) and goes the extra mile.

Let's also not pick on grads, every single grad I have worked with have been open minded, hard working and who are willing to push them selfs to be better and most important of all aim to be software engineers. On MbUnit we were lucky to have Ben Hall join us over his summer break, Ben asked how to muck in with the project and through his hard work is now a core member of the team. I can think of other grads with the same mind set such as Mono's César Natarén and Ben Maurer who have worked hard on Mono and who's ability is with out question.

Basecamp is cool but a catch...

To help manage sub projects of MbUnit I've been using the orginal RoR\Web 2.0 application from the 37signals guys, BaseCamp. It's a nice way of sharing and exchanging ideas, concepts and tasks and a lighter, easier way of project management.

but...

<rant>They offer a 1 company, 1 project for free with X number of projects going up in X price given the number of X. Like most OSS projects out there MbUnit is no company and has multiple sub projects, it has no source of income, no backer and does depend on other companies good will when it comes to 'not for profit' OSS projects. MbUnit's bug tracker and wiki are provided for by companies like this who as long as you can prove your license is a OSS one will happily grant you a license. Huge kudos to them.

As such I emailed the folks at 37signals about using BaseCamp with OSS, prehaps with whole RoR thing I figured I they would grok (funds and lack of in) OSS, I was wrong. They belive the prices they offer suit all folks from not-for-profit to big companies. Hold up, so not-for-profit means that a company makes not one inch of cash, they don't stand to make money from using the service so how does that work out? Hell these guys want to make money, and if others are making money from it then why not, I am all for that. For folks that don't make a dime however its really another ball game and we really do depend on good will. This explains why I can't actually find any OSS projects listed on the website that use BaseCamp. Now folks will say 'well just don't use BaseCamp then', it was great while it lasted but not a bad idea.</rant>

Mono\Ubuntu\MbUnit

MbUnit 2.4 successfully runs on Mono 1.2.3 in Ubuntu.There are a few things to keep in mind about running MbUnit like this due to Mono limitations.

  • The native MbUnit GUI has no support, MbUnit.Cons is however supported.
  • MbUnit rollback attribute for .NET 1.1 and the Performance Assert are not supported, the rollback attribute for .NET 2.0 is however supported.
  • If I ever find the time I'll look at porting the MonoDevelop NUnit support to MbUnit.

    Rhino Mocks\MbUnit
    Ayende has moved the test suite for Rhino Mocks back to MbUnit, great to see.
    Posted: Feb 17 2007, 04:57 PM by andrewstopford | with 1 comment(s)
    Filed under: ,
    Mono C# 3.0 compiler support
    Miguel has a post on updates to the C# 3.0 compiler in Mono. Great to see support for Lambda Expressions and Implicit Typed Parameters being added. The Olive project will add more features such as Linq, more details on that can be found in another of Miguels posts.
    Posted: Feb 16 2007, 10:21 AM by andrewstopford | with no comments
    Filed under: ,
    Castle AR generator in PHP

    (Via Hammet) nice little PHP script for Castle AR code. Would love to see 1-m/m-1/m-m support.

    Developer-Test, Tester-Developer

    Jeffery Palermo has a post on "(good) developers test so do testers develop?". My take on this is that most testers can't avoid writing code because a lot of testing requires customization (and even creation) of tools to meet your testing requirements.  The amount of tweaking requires often requires you write code, any tester that does'nt go to these lengths either has a very rigid, static system to test or is uneffective at automating their testing. Microsoft and Google are mentioned in the posts and the fact there testing postions need coding ability and an understanding of code to test.

    I also noticed in the comments of one post that Jason Huggins has been hired at Google (which continues the recent trend at Google for hiring free and OSS test tool engineers) for those of you that don't know him he founded the Selenium functional web testing tool project at ThoughtWorks.

    Adobe Apollo
    I watched the Ebay demo using Adobe Apollo and I was completely blown away. This post is a bit of a 'handwaving post :)' but I would like to discuss it further with one of the Adobe guys but have misplaced their contact details, so John or any of the Adobe guys if your listening can you drop me a line.
    SQLite
    SQL Lite is a small footprint database written in C. It has a C# wrapper, standard ADO.NET provider but also a vNext provider to hook it into Linq. Mono also has a ADO.NET wrapper and on the ORM side of things NHibernate is supported.
    MbUnit logo's
    Show support for MbUnit on your site/blog with this list of logos and banners from Mark Haley. Please link to http://www.mbunit.com.
    Posted: Feb 10 2007, 04:44 PM by andrewstopford | with no comments
    Filed under: ,
    More Posts Next page »