November 0806

Build bespoke app or use 3rd party tools

When I started my new job, well on day 2 actually, I went into a meeting with my manager and his manager and was given a very quick presentation on the new BIG project that I was brought in to lead on. At the end of which they asked whether I thought we should buy in a 3rd party solution, such as Moodle or whether I would recommend building one from scratch.

Well there's a big part of me, as a developer, that just wanted to write the whole application; hell that's why I'm a developer. But the deadline was quite tight and starting with something that's already been developed and has been tested and is widely used seemed a good idea. So after saying how much I'd like to write it from scratch we agreed that, given the timescales, it would be prudent to investigate 3rd party solutions that could be used as a base and extended upon. A quick chat to the new team and a search of Google turned up Sitefinity as a viable option; viable because it's a .net application and one of the primary reasons for developing something new was to move away from ColdFusion and to use VB.NET as the company already employs a number of quite experienced VB developers, and also because its so cheap... and written to be extended and worked on through Visual Studio. 

However... I'm now beginning to regret my decision a bit. Support response time is 48 hours (though often much longer), though the support is usually very good it doesn't usually solve the problem but simply moves the goal posts a bit. Case in point, I've been trying to extend the features, something that it is designed to support (though the tutorial series promised for August 2008 still hasn't been completed), but am having difficulties because I simply don't understand their API and find their documentation lacking in examples or simply nothing more than a list of properties. I have had a support ticket open for 2 months for one problem. On the face of it the problem is pretty simple; I need to allow admins to add job vacancies, with a pdf attachment and dates for final applications. There's even an existing module that does everything I need and more, but though customising it should be relatively simple - hell I should be able to just use Reflector and see how their version is doing things and follow that logic right? Well yeah - but its not having any of it.

So really it comes down to me being unable to decypher the error messages and debug effectively because I haven't written the entire application so I don't understand what's going on or where things are going wrong. Sure the help could be better, but honestly I don't expect someone to come round and sit with me to help me do my job, so I can't and wont complain (further) about the help because much of the help has been superb. But should we (and by we I mean developers of all sorts) use 3rd party products as part of a larger project and when things go wrong be left looking sheepish and waiting for support to get back to us, or should we try to re-invent the wheel every time we start something, even though there's a guy selling wheels next door?

Permalink | Comments (4)

Comments

  1. Alex United Kingdom Alex (Thursday, November 13, 2008) #

    Hi simon, interesting post.
    At first it seems to be such a good thing to use 3rd party solutions that have already been written and are "cheap". But as with all good things, once you start using these solutions they do the initial job so well and quickly that you have more time for "other" features. You are wowed by what you can do with this new piece of software and want to push the boundaries further often to breaking point. This is when i find that these things tend to go bang and you are left in a fix as you didnt write the original solution and quite rightly, the 3rd party dont really want to give too many of their secrets away as it might affect of future revisions and releases.
    Personally I think that the best solution is to look for frameworks that enable rapid application time but you actually code the underlying solution to your requirements. As you are the author, or your company, you will know what you have written and be able to expand upon it with no problem. This is one of the main reasons I am seriously moving away from MS based products and the whole environment generated around it. MS stuff is fantastic, .NET, ASP.NET AJAX all excellent offerings to name but a few however its dumbing down too much for my liking and whilst these things are free to download, the tools needed to render and author apps built on these are most often not free or cheap at all. Understandably companies will want return on their investments for writing their 3rd party offerings and as MS licensing and so on is hardly cheap fees are often involved as the whole environment is fundamentally based on revenue and sales.
    Im finding more and more that the Open Source community is a great way to develop your skills. I know MS is finally moving that way but it still ends up with them looking to build their underlying product ie Windows, .NET or whatever. Whilst i'm on this point i have noticed a couple of developments out of the whole issue of ASP.NET base jscript engine now utilising jQuery. I think it is alarming that the minimizes size of package has risen from around 30k to almost 50. Is this a coincidence or just a bloating in size dues to the dumbing down features that are added for convenience.
    In conclusion, I can see your regret about adopting a 3rd party solution at the base of your project, and the subsequent reliance on the company to assist if you need to mould to your own needs. The million dollar question is asked time and time again about knowing your complete requirements for a project before you set out on it. The answer to which would be priceless to anyone!

  2. SimonMartin United Kingdom SimonMartin (Thursday, November 13, 2008) #

    On reflection I think the issue is really how much you understand what is happening with the 3rd party tools / have the ability to modify what happens.
    Tools like Visual Studio or Dreamweaver are fantastic because we can get on with the interesting bits of programming and I'm becoming a huge fan of CodeRush and Refactor! Pro as they make my job easier. I could write a website using just notepad, but that would be irresponsible as I am being paid to get the job done in a reasonable time frame.

    Also I don't have the time, or inclination, to write an online wysiwyg editor such as the RadEditor by Telerik - to be honest I can't think of any company that would let their developers have that much free time that they could write an in-house solution to rival that, though arguably there are some very good (light weight) javascript implementations that provide most of the power that's needed. You are then relying on the users having JavaScript enabled, whereas a component / dll should simply run.

    I disagree with the Open Source stance you've taken a little. Generally OS projects come with none or very little support, the documentation is often sketchy (if there is any). I'm not saying I'm not a fan of the OS, I happen to think its a great concept but it cannot compete with a commercial company that has time and money to invest in a product. Sure php is a hugely successful language, but is it as robust and feature rich as ASP.NET. Certainly the support isn't as polite! MS are making some considerable moves in this direction, CodePlex and ASP.NET MVC for example. I agree it is nice to be able to contribute to something and see that project adopted in the wild, but that happens as part of my job, because of that I don't need to develop my skills in the Open Source community.

    There are free tools available from MS for development, and cheap developer alternatives. But if you want to be a developer you have to invest both in terms of time spent at a keyboard learning your trade as well as in the tools you need; Carpenters don't get given their tools for free, why should we? MS have an initiative to give away full professional versions of their development tools to students (DreamSpark) and most hosting companies offer MS Windows hosting for almost the same as Linux / php (which is Open Source and therefore free... so the difference in price must be all they are charging for the Windows license else they're making a killing selling what's otherwise free!)

  3. Alex United Kingdom Alex (Friday, November 14, 2008) #

    Some fair points but I think people are too quick to take 3rd party solutions. I agree with the time saving element but my issue is that using 3rd party tools often leaves us bereft of fundamental skills. The easy option is not always the best and most professional and can often lead to trying to push square pegs in round holes. As with regard to OS documentation being scant or inefficient i think that depends upon the skillset of the person requiring the documentation. Django, my current favourite framework, has probably some of the best documentation out there has numerous open source plug ins as well as a complete e-book that supplies a step by step process through the fundamentals of using the framework.
    In the open source community there are thousands of solutions out there from which you can learn. They differ in terms of support and documentation as well as quality in the first place, but i think it would be pretty foolish to implement a 3rd party solution into your products for which there was no documentation. Use of such a solution would strike me as a last ditch effort and raise alarms bells over the the inuition and skill levels involved in the whole process.

    Interesting thoughts though.

  4. SimonMartin United Kingdom SimonMartin (Friday, November 14, 2008) #

    Hi Alex,

    I think we're both saying that there is a place for 3rd party tools, but really they are not to be relied on to patch up shortcomings in our knowledge. I could write a forum system / blogging engine from scratch, but for a commercial project (unless the client has asked for a bespoke solution for some reason) I wouldn't have enough time to and so using a 3rd party solution like YetAnotherForum or phpBB makes sense. It's when they go wrong or you need to do something slightly differently that problems set in, but you'd think that most problems have already been ironed out.

Comments are closed