7 articles and counting

Don’t Get Stuck in Your Stack

Stuck in your stack? Here’s some helpful ways for you to break free and experience the freedom that best in class, out-of-stack solutions can provide.

I have felt the feelings you feel, closed in, cornered, you have a need and there’s a hole in your technology stack and you just don’t know what to do. Or worse, it’s not exactly a hole, but your stack doesn’t really provide the solution that you’d like but you feel compelled to use it anyway since it’s what you know.  Or even worse than worse, you’re damning the torpedoes and sticking to your stack because you’ve drank so much kool-aide that you can’t help yourself.

Many of us are stack-oriented, we have devoted ourselves to a range of sometimes vendor-specific technologies and we spend our time developing those skills and avoiding others that pretty much do the same thing.  Case and point – PHP and ASP.Net – both are server side scripting technologies used to develop web applications; both can be used as a platform to develop RIAs (rich internet applications) using AJAX, FLASH or SilverLight technology and both require a relatively high level of experience and skill to employ successfully.

You may write an ASP.NET mailer in C# using System.Net.SmtpClient and it might look something like this:

SmtpClient mailer = new SmtpClient("mail.somemailhost.com");

mailer.Send("me@3rdbit.com", "you@yoursite.com", "Yeti Alert", "The Yetis are upon you - flee in terror!");

You’re open source, free love, hippy PHP-using counterpart might use the mail()  method and do it like this:

<?php

mail('you@yoursite.com', 'Yeti Alert', 'The Yetis are upon you - flee in terror!', $headers);

?>

  (pretend that $headers contains the from address)

Both languages are accomplishing the same thing, an email will go out saving someone’s life from an advancing Yeti horde – which, as anyone from Nepal will tell you, is something worth doing.  

I’m not suggesting that there is no difference between PHP and ASP.NET, I’m not advocating that you should use one or the other, I’m just pointing out that two very different tools can be used use to accomplish the same task.  The tools you use will be defined by your chosen technology stack and I’m confident that a Yeti warning system developed using either stack would be successful in saving lives.

There’s nothing wrong with that!

Being stack oriented is a good thing.  You can’t be good at everything and you shouldn’t try to split your time becoming familiar with everything.  You’ll end up knowing a little about alot of things and you won’t be the expert in any.  You’ll be that person at the party who’s heard of that book, saw that preview, read half of that article and almost took that trip.

Choose your weapons wisely, master them and make sure you’re always adding 1 or 2 new weapons gradually.   Stack orientation helps you direct your efforts toward technologies that can be used together to create solutions that any one of them can’t alone.  Certainly the weapons you choose don’t have to be from the same stack though it is often convenient.   Certain stacks work and mesh well together and knowing a combination of them can be a real advantage.

(I will say that if you’re the one developer who can master ASP.NET (VB/C#), JSP, PHP, RUBY, PERL, Python, etc…  Let me know who you are so I can get with all the other mortals and erect a statue in your honor.)

It’s Good, but don’t get Stuck

While it’s good to have your technology roadmap defined don’t be afraid to step outside your stack for solutions, especially if they’re clearly better than what you’ve got to work with.  There’s alot of kool-aide drinkers out there who spend a lot of extra time forcing a known-skill or product into a solution and end up either frustrated or with something that sortive, almost solves the problem at hand. 

Example 1, Lego Starship

I used to work with an Oracle forms based ERP system that became “web-enabled”.  My job existed solely to create applications that plugged holes in the ERP’s functionality/feature set or to create solutions that the ERP was years away from natively.  The developers of  the ERP chose to use PL/SQL Pages to web-enable the product.  (That’s alot like trying to build an interstellar spacecraft out of legos).  PL/SQL Pages was a valid tool in their stack, but they were stuck in their stack and avoided a few other options that could have made their product ALOT more agile, user friendly, maintainable, etc…  As a result of that choice (and others like it) the inability of the application to keep of with my company’s needs forced us to move on.  Though, certainly in this example, these developers were not only stuck in their stack, they were stuck with an aging skill-set.  Don’t do that either – Learn or Die!

Example 2, Me and Source Control

As a Microsoft-stack-oriented developer I too was stuck in my stack when it came to source control.  For years I was using Visual Source Safe for all my source control needs and man was I frustrated.  I couldn’t concurrently work on a file that was checked out by one of my developers, branching and merging was practically non-existent, there was no LDAP integration for security, no native file format storage and it was as slow as Christmas over VPN.  Heck it was just slow in general.

Then I learned about Subversion and VisualSVN.   Talking about the features of each is out of the scope of this post (follow those links for more intel). 

Here was an out-of-stack solution for source control that was clearly a better solution for my team than VSS and it was open source, practically free and ran on Apache!  Shutter – an MS dev group using SVN – watch out for the pitch-forks and torches of the Microsoft Technology Evangelists! 

I soon learned that this particular combination of stacks is actually quite common.  I had stepped out of my stack for a better solution and have never been happier with source control.

Step our of your Stack if the Out-Of-Stack Solution is Better

Don’t be afraid to step out of your stack if another stack has a ready-made solution that you can use.  I challenge every VSS user to compare VSS to SVN.  Get over the fact that it requires an apache server – you can run that on Windows Server and VisualSVN gives you an installer that sets everything up – it couldn’t be easier.  (I’d recommend installing it on a VM, but that’s a post for another day)

Step away from the kool-aide and find the best in class solution that meets your needs and fits into your paradigm.  Don’t go out and install a bunch of Linux servers in your windows server farm just so you can run Apache for SVN.  Your windows server admins don’t really know Linux and you don’t want to have to manage the server.  Likewise, don’t run out and install MONO on your linux box just so you can develop in .NET from a LAMP environment.  If you’re going to develop .NET, buy a Windows Server license, run IIS and do it right.

Use common sense, some stack-combinations work great – if you’d like to develop in .NET and use MySql or Oracle as a DB, do it – it works, I’ve done it and had great results.  Find those combos that make sense and that don’t break your paradigm and work them in.

Example 3, Me and this Blog Engine

Yes, as you read these words you are witnessing another out of stack solution that has made me very happy.  This blog engine, WordPress, is built on the LAMP stack, there’s no MS tech anywhere yet it’s fantastic and I rave about it.  I don’t need it to fit into my development paradigm because I have no desire to extend it or change it.  There are lots of ready-made plugins that do the things that I want a blog engine to do.  The mail source code you see above, for example, is formatted by a plugin written for WordPress that implements an open source JavaScript formatting engine that was written by a Russian guy I’ve never met.  (Which is good cause Russian programmers are scary).  All I had to do was upload a few files and put a single tag around the code – awesome!

I could have spent a lot of time and effort finding a .NET blog engine so I could feel comfortable in the knowledge that if I ever needed to hack the engine I could – though really – I’m not concerned about that.  I’m busy -  I’d rather spend my time working on projects that I feel are important to me and blog engines is not one of them. 

That’s it – Your Turn

I challenge you to review your stack, your tools and the solutions you’ve implemented and look for weaknesses.  If you find one then perhaps there’s an out-of-stack solution out there than you can take advantage of that you may have overlooked before.  I did and I’ve been very happy with the solutions and tools that I’ve found that have enabled me to do things better than I could have on my own by sticking to my stack.

Happy Programming and remember, Don’t Get Stuck in Your Stack!

Leave a Reply

Name (required)
Mail (will not be published) (required)

Your Comments:

Spam Protection by WP-SpamFree