Tuesday, 31 August 2010

MonoDevelop: “Type ‘X’ does not contain a definition for ‘Y’ and no extension method ‘Y’ of type ‘X’ can be found”

Just a quick one here since I seem to keep getting caught out by this one as I develop more with MonoDevelop..

Problem

I am using an extension method, the code is completed fine via the “Intellisense”, correctly identifying that the method is an extension method, but when building, I get the error “Type ‘X’ does not contain a definition for ‘Y’ and no extension method ‘Y’ of type ‘X’ can be found”, and the build fails.

Solution

Dead easy – make sure you have a reference to System.Core. For some reason, some of my projects have not had this – and this is causing the problem. It is just made more difficult since the “detection of extension methods” seems to be working even if the plumbing (System.Core) is not actually in place to deal with them ;)

To add a reference, when the compiler moans, (making sure you are in the file that is not building):

  • Click “Project” in the top menu bar.
  • Click “Edit References
  • On the “Packages” tab, scroll to “System.Core” and whack a check mark next to it.
  • Click “OK”.

Obviously, you need to be running a .NET 3.5 project for these to run – which should the default, but to double-check:

  • Click “Project” in the top menu bar.
  • Click “{Project Name} Options
  • Click “General” under the “Build” section
  • Select “Mono / .NET 3.5” in “Runtime Version
  • Click “OK”.

Now hit “Build” (F8) and all should be well :)

Saturday, 21 August 2010

The “Money Makeover” – The Emergency Fund I

OK, so we've looked at creating our budget, and we have set up our "allocated savings". We have been using this for one month. If you are anything like me, you may have found:

  • You missed a few payments on your original budget and needed to add them to next months.
  • It incredibly hard to stick to the plan and spend only the money you had budgeted.
  • Think that this is all impossible since the slightest deviation from the budget causes problems.

This is where our first key milestone comes in, the emergency fund 1. The idea here is that this is going to be our buffer against those surprises that blindside us and knock us off our important financial journey.

What is the "emergency fund 1"?

Put simply, it's £1000 (or equivalent in your local currency). This should be enough to cover most common emergencies that may arise. Now, I know what you are thinking "OMFGWTFBBQ?! A GRAND! If I could save a grand I wouldn't bloody be here!".

... And you are probably right, but we have also proven we can't save a grand because we always spend it (and then some). So, let's begin shall we?

Getting Started – Attitude Adjustment Required!

This milestone is very simple in concept, but hard to digest because we are not used to having cash around. This is also likely to be the first “chunk” of cash to populate your “allocated savings” – and, if you are anything like me, you are going to look at those zeroes and think “OOOHHH LOOK AT THE COOL THINGS I CAN BUY NOW”.

We can’t do this. And we WON’T do this! The money makeover demands it!

That is my first tip – give the money makeover some character. Give it a name. Call it out. When you give it identity, you will feel like you are letting someone (as opposed to something) down when you fail to stick to our goals. I always joke about it “nope – can’t do that, Mr Makeover says ‘no’”. We need to really get our heads around the fact that we are doing this makeover for a really, really good reason – we want our money back.

If we fail, we let ourselves down, but perhaps worse, we are letting our future down. Who in their right minds wants to shoot themselves in the foot when we can prevent it??

“Emergency”

Repeat after me:

  • An iPad is not an emergency.
  • A holiday is not an emergency.
  • Christmas is not an emergency.
  • That new pair of trainers is not an emergency.
  • That new cell phone is not an emergency, even if your current phone is dead.
  • Bobs leaving party is not an emergency.
  • Catching up with that friend from school is not an emergency.

What I am trying to do here is make you think, what is an emergency?

Struggling? Yeah, me too. The truth is this, there are VERY few things that should actually constitute an emergency. For me, I could only come up with two real things that I thought were truly important enough to constitute an emergency:

  • Urgent medical/dental treatment that I have not had a chance to prepare for.
  • Large, unexpected bills that I have not had a chance to budget for.

What do you notice about these things? I could have prepared for them – and we will be, in the future. However, at this point we are just getting started, and it is going to be some time before we get to that, so we need to create a buffer just in case something happens before we get there.

Creating the Emergency Fund I

As said before, this is dead simple. The emergency fund I is just £1000 in your allocated savings.

However, we should save this as fast as possible – the sooner we are protected from unexpected turns of events, the better.

So, put every spare penny you have towards it, work some overtime, sell some of that crap you never use, stop eating out, have one less beer – do whatever you can to funnel as much into your allocated savings as quickly as possible.

Then What?

Do nothing, leave it in your savings account. When an emergency comes, transfer it into your cash account and make use of it.

BUT, then replace it as quickly as possible again! We must maintain this fund at all costs!

This is our first line of defence, therefore the most likely to get used – we need to make sure it is well stocked to support us whenever it is called upon.

If you don’t find yourself using it, fine – leave it there. Remember, we are not using this for the expected, but rather using it to protect us from the unexpected. Just because you didn’t touch the emergency fund I this month, don’t expect the same next month.

In Summary

I remember when I completed my emergency fund I – it felt like such an achievement! This was the first time in years that I actually had any “real” amount of savings (that lasted longer than a month). It felt great, and it still does – having the safety net really does help take a lot of stress away.

Sure, at this point, it can be hard, since we still have other debt and we have a grand sat here that we could put towards it – don’t be tempted. Remember, this is a safety net – and as with real safety nets – we should hope that we never have to use them. It’s a failsafe,  not a tool for daily use. Don’t panic, we will be getting to that debt soon enough.

As well as giving us the safety net – pooling money into this fund is a great primer for “funnelling cash”  - we are going to be doing this a lot over the coming months/years (depending on how much debt we have) in order to dig ourselves out of the hole we put ourselves in. Learn from it – push yourself. Find money where you couldn’t find money before.

All of the above aside, it’s nice to have a little bit of interest being earned rather than charged for, don’t you think?.. ;)

Wednesday, 11 August 2010

The “Money Makeover” – Allocated Savings

OK, so we have created our budget, we are nearly ready to start really getting underway with our journey, but we have one more thing we must prepare before we set off. This is our "allocated savings".

What is "allocated savings"?

We are going to be saving money, eventually a lot of it - be it for things like loan repayments, vacations, car maintenance - anything. This money is going to need to be "tagged" for certain things to ensure we do not look at our savings and think we can finally realise our lifelong dream of swimming in a pool of chocolate peanuts.

Our "allocated savings" gives us a quick way of seeing what we have in our savings, and what it is for.

Savings need a savings account

Since we need to start saving, it means we are going to be putting our money into a savings account. If you don't have a savings account, then open up one with the bank. Most will jump at the chance and they only take £1 to open. Try to find one that is easy-access since when an emergency occurs, you don't want to mess around trying to get the cash you need.

My bank offers an "online saver" which offers slightly better than the normal savings rates, since it is all managed online. When I transfer money between my current and savings account, the transfer is instant. Great. Job done.

A savings account will enable us to get a little money back on what we put in (don't start making "cha-ching" noises just yet, even returns on high-end savings accounts sucks), which will help soften the blow of all that interest we are paying out the credit card companies and whatnot. So, I really recommend sorting one out. If you can't, then we will need to keep it in your current account, but keep trying every month as your financial situation improves. Ultimately, not having one will cost you money!

Setting up your "allocated savings"

OK, so we have somewhere where we can put our cash. Great, now we need to track what each of those £'s are destined for. If you took my advice when creating your budget and used a spreadsheet, then simply add a new sheet for called "allocated savings". If you didn't, grab a new piece of paper and write "allocated savings" at the top of it. See? Money management is EASY! :) I am going to assume that you ARE using a spreadsheet (and again, if you're not, I urge you to reconsider!).

This sheet is dead easy to set up. All we want is a table with two columns: "Saving For" and "Amount Saved". The "saving for" is just a description of what the cash is in the savings for, and the amount saved is obviously the amount that is in the savings account for it. Smarten up the formatting, setting the "amount saved" to a currency field. To complete, simply add another row at the bottom to calculate the total, using the spreadsheets "SUM" function.

Once this is done, we should have something like this:

Allocated Savings Screenie

* I have added a column for total required so I can have conditional formatting in place.

Using your "allocated savings"

Each month, we are going to be tagging some cash for something. This could be anything, but rest assured there could be money coming in and out each month. This is why I suggested keeping the sheet right next to your budget - you will use it a lot. For now, this sheet is likely empty, so just put some dummy values in like "Item 1" and "£0" and so on. Don't worry, we'll be filling these soon enough :)

So, really simple to use. Each month when you are doing your budget:

  • Move money into the account (either creating a new row to tag what it is for, or adding to an existing one) AND/OR
  • Move money out as appropriate (making sure you take the figure off the tag, or remove it if empty).
  • If the SUM at the bottom of your allocated savings is ever different from your actual balance, then we have a problem and someone (you) has been naughty.

That's it!

Tweaks and Tips

Here are a few tips for keeping your allocated savings informative and easy to use:

  • When saving towards a fixed amount for something, set up "conditional formatting" on the cell to highlight it red until that figure is met - and then make it green. It can be real nice to see the little green lights popping up as time progresses.
  • If you find you are having problems with your "allocated savings" coming out of sync with what your actual account balance is, try moving the sheet to a "transactional" model. Rather than just add and remove amounts from a single figure, give all additions and subtractions their own line and a description and date. You can then use things like PivotTables to summarise the data for you (giving you the total figures) but you will be able to trace account changes back to a date to see where the discrepancy arrived between the sheet and your account statement. This obviously takes a bit more time, but the additional data should really help until you get OK with just having the summary figures.
  • Play with the formatting and structure! If you are not too keen on the way I do it, make your own! So long as the sheet makes it easy to track savings, it's all good!

Happy saving! :)

Monday, 2 August 2010

The "Money Makeover" - Step 1: The Budget

The first thing we are going to cover with the makeover is the budget. The budget is what holds it all together and allows you to ensure you are doing the best with your money from month-to-month.

Why Draw Up a Budget?

Having a budget offers the following benefits:

  • You know where your money is going, before it goes there.
  • It allows you to project expenses for the next month and re-balance accordingly. Reducing the "heart attack" factor of some unexpected event.
  • It gives you "the big picture" which can be scary at first (because it illuminates just how much you are spending on debt etc.) but also makes you feel better because it puts things into perspective, assuring you that YOU are in control.
  • Having a budget provides a one-stop shop for accounting things, once set up, it is easy to maintain. Spreadsheet software makes this process even easier.

What Do I Need for a Budget?

I highly recommend using spreadsheet software like Microsoft Office or OpenOffice (free, very similar functionality to MS Office). Using software not only makes the maths easier, but makes it easier on the eye and easier to maintain/reproduce each month (we are going to create a new one each month).

Failing that, a pad and pen will do!

Following this, I will be talking about using a spreadsheet, if you are not using one, then simply write on paper and calculate in your head!

Setting Up Your Budget

OK, so open up a new spreadsheet and save it as "Budget". Section off areas of the sheet with the following headings:

  • Savings
  • Household
  • Recurring Credit Card Charges
  • Debt
  • Groceries
  • Personal Care
  • Work Expenses
  • Recreation

These categories are your own choice, but I found these a good place to start.

Now, start going through each category and list EVERYTHING that needs to go in there. And I mean EVERYTHING (this is very important). Be sure to include things like:

  • Vacations. Yes, you should budget for vacation time. We are human and we need a break now and then. Even if it means you just get away for a weekend in a hotel or something. Budget for it.
  • Clothing is always something people think they can do without.. Can you? "Sorry I am not wearing any pants today guys, no budget for it". Are you serious? Even if you put a small about away just in case you need new shoes or something.
  • Recreational time be it going out for a few drinks, or a meal with the better half. Budget for it, this is equally as important as vacations.
  • Odd bank charges and the like for example, overdraft facilities charge when you use them. Yes this figure will do down each month, but these pounds need to be accounted for.
  • Recurring credit card charges (for things like magazine subscriptions, online services etc.) are often forgotten about since "that just comes off the minimum payment". Well, it DOESN'T. If you have a service (like GitHub or LoveFilm) that costs you per month, budget for it. The fact that it is coming off the credit card means you need to BUY it. Remember, WE DON'T BORROW.
  • Christmas, birthdays and other events. How much do you spend at Christmas? How much do you average a year on birthdays? Take that figure and divide it by 12. Yes, we are budgeting for these events that always "surprise" us too.

Start Adding Some Structure

OK, so at this point, you should have listed EVERYTHING that costs you each month. At this point, my spreadsheet looked pretty messy and disorganised, so let's start tidying it up.

What we need to do is have the fixed payments on one side (such as rent and utilities), flexible payments (such as credit cards) in the middle and cuttable payments (such as groceries, personal care, clothing, recreation) on the other side.

Fixed Payments

These payments are things that are really very unlikely to change and there is not much we can do about them. These are things like rent, household utilities, recurring credit card charges. Sure, we may drop/reduce them, but this is a rare process.

Flexible Payments

These are payments that normally have some kind of minimum payment, but are open to some change. The obvious candidates for these are debt repayments such as credit cards and loans. Now, I know what you are thinking "my loan is fixed-rate". Sure, but what is wrong with you saving the cash to clear it off, putting it in a savings account, letting it drip out, while gaining the interest (thus softening the cost of the debt)? We will go into more detail on this later, just trust me, put your debts in here.

As well as debt, savings should also go in here since these can obviously be adjusted. However, I try to keep the savings in a seperate section since they are a positive action, and there is always an air of negativity around the cells that have the debt figures :)

I'd also recommend that you set up conditional formatting on your cells to highlight if you put the figures below the minimum required payment to make sure you don't under-budget for these items. This section will be getting revamped soon, but for now this is good practice.

Cuttable Payments

These are payments for things like groceries, personal care, clothing, vacations and recreation. I know you are thinking: "WTF? I NEED to eat!". Well, of course you do, but the idea behind this section is that these are payments that are prime candidates for savings. I have literally slashed my grocery budget in half (no, I am not starving or malnourished either). I have also reduced by drinking/partying budget by about 75% and I still get plenty of chances to cut loose and have a good time.

This section is where you are likely to claw back as much as possible to assist in our makeover efforts and are very likely to change regularly, so it helps to keep them out of the way of the other figures.

Let's Start Adding Up and Getting Some Perspective

Right, now we have all the figures in, start adding subtotals for each category that you have created. Once done, you should have some nice "Total" rows on your data with some (often) large figures in. Now add another section to the sheet. In this section we want:

Total Income: (Enter your monthly take-home salary here).
Total Outgoings: Use the "Sum" function to add up all the totals of the individual categories.
Balance: Take the value of "Income" from "Outgoings". This is the killer figure.

Now, if you are anything like me, at this point you may be having a heart attack, on the verge of crying or scrawling your suicide note because there is a large negative difference between the two. Don't panic, this is just us highlighting the problem. If you are actually looking at a positive figure, great! (but keep reading because we can still do something to improve our situation).

We now have perspective, we now know (perhaps for the first time) where our money is actually going.

Let's Make It Work

Now, like I said, at this point my outgoings were more than my incoming salary. No wonder my debt has been mounting! But how do I get the figures to balance?

This is where the "cuttable payments" come in, these are your first port-of-call for stripping back. I will do some posts on tips to make some real savings here, but for now just work on the basis that something has to give. For me, I slashed my "going out and getting wasted" budget first. I knew I was spending far too much on alcohol (I do love my Jack Daniels!).

Keep slashing until you have a balance of zero. If you are comfortable cutting other things, then do so.

Why Zero Balance?

Put simply, if you have spare money, you should be focusing it on clearing debt. We need to get to the point were our money is our own once again.

If you managed to cut a bit more and get a positive balance. Funnel some cash into your "flexible payments", put it on a credit card and help reduce the payments next month.

Our priority here is to clear debt. I cannot repeat this enough. It is not about managing, it is about CLEARING DEBT.

Make sacrifices! Push the boat out!

Our First Months Budget

At this point, we should have a sheet with all our expected payments listed, with total figures for each, total figures for income, outgoings and a final balance figure which should be pretty damn close to zero if not exact (if not, it should be positive).

Be aware that in the first month you are likely to get a few bits wrong. I personally ended up slipping back a little in my overdraft a little because I forgot a few payments that were due. Don't panic, we are not going to suffer too much since we are likely better off than we were last month - now go back make sure you have your major debts covered so you don't get stung bad.

Now you have done this, write the current month at the top of the sheet (or next month if you are planning to start on payday as I did). Then create a copy of the sheet and put the following month at the top of that. That is going to be your projected budget.

As we start rolling with our budget, we are going to be maintaining the two. Our current month will be used for tracking expenses as they go out. The second (following) month's will be updated to adjust expected payments (for example, we may realise we shaved too much off our grocery budget etc.).

Next Step(s)

  • Roll with using the budget for one month.
  • Start getting used (it really does take time) to honoring the limits that you have imposed.
    (And REALLY do this, don't think your overdraft is OK to be used, that's borrowing and WE DON'T BORROW)
  • Keep crossing off the payments as they leave your account(s).
  • Adjust the projected figures as necessary.

The budget is our first tool to helping us with our makeover, next we will cover our first milestone, the "Emergency Fund I".

Need help setting up a spreadsheet? Have the template for my spreadsheet! Yes, this is the exact sheet I use. No, it is not quite "perfect" yet, but it's always evolving! Obviously I have stripped some things out, and left some in - as always, if you have any questions - do ask!

NOTE: The template file on SkyDrive seems to not play nice with the SkyDrive viewer, but the file should be in Excel 2007 format (I created with OpenOffice). If you have any problems opening in either, let me know!

The "Money Makeover" - Introduction

How It All Started...

Recently (about three months ago) I was sat discussing my financial situation with a friend. We were joking about how it seems like no matter how hard we work and how much we push our salary up, we never have cash. Yet, as young adults at college we earned next to nothing compared to what we do now, yet we always had cash in our pockets and were out partying every weekend. Why? What's changed?

I then got talking about this to another friend who then lent me a book. This book changed EVERYTHING. Sounds dramatic I know, but I am really not kidding.

The book is "The Money Makeover" by David Ramsey. I strongly urge you to grab yourself a copy. This is my first tip!

I intend to write a series of blog posts covering what I learned from the book, how I am applying it and the difference it has made to my life in the hope that you too can feel as good as I feel right now!

Before we begin, lets cover a few key issues..

Why Makeover?

Ask yourself why you are here and why are you still reading this post. If you can say any of (or similar to) the following, I suggest you stick around for a bit:

  • "I don't know where my money goes after payday"
  • "I am spending too much on credit cards"
  • "I have an empty bank account, or it's in a negative balance by payday"
  • "I get some savings but then Christmas comes and it's gone"
  • "I can't buy stuff I need, my card is maxed out"
  • "I want more financial security for my family"
  • "I'm trying to clear my credit cards and overdraft but the interest is too high"
  • "I want to have more FUN!"
  • "What money?"

Let's Get Real

Before we start going down the rabbit hole discussing the plan and associated tools, let's have a moment to think about the situation we are in, and perhaps more importantly why we are here.

Ask yourself these questions:

  1. What is your total debt? (Including loans, credit/store cards, borrowing from family/friends, overdraft etc.)
  2. How often do you say things like "I know I was naughty, but..." or "treat yourself"
  3. Do you withdraw cash for fun, because "it's cool you have an overdraft"
  4. Have you recently got yourself a new toy (games console, TV, stereo, laptop, whatever) on the credit card?
  5. Have you paid for it yet?
  6. How much interest have you paid?

Now, when I started my makeover, I went through this same process. Before I started drawing up budgets and plans, I spent some time brainstorming and asking myself many questions like the above. Here are my answers to the above:

  1. No idea. About £20K (I think).
  2. Probably once to twice a week.
  3. Yeah.
  4. Yeah.
  5. No.
  6. No idea.

Starting to see signs of a problem here? I personally (like many others) have a really callous attitude to cash (or should I say "spending cash I don't have"). I viewed credit/overdraft facilities as "my money". Now for the important bit:

This is bull crap.

I was being ignorant and stupid. Note the "I". Stop blaming the banks for everything, our recent (global) financial situation is caused by too many morons like me spending cash they didn't have and couldn't afford to pay back. Don't piss and moan about the banks "making it too easy to borrow". Of course they will! It's a part of their product line that generates revenue (and a lot of it) for them. Would you stop selling too much of your product if it started getting money in the door? Of course not!

So, repeat after me:

"I have been stupid, I need to stop being stupid."

Keep saying this for a bit, it will slowly start to sink in. After a while of going through this, I started to resent and feel angry at myself for my stupidity. This is good. Welcome to the dark side of the force, let's use it.

Let's Face Up

OK, so we have finally woken up and smelled the coffee. We have screwed up. That's OK, we are human. Mistakes are fine, but continually making the same mistakes is NOT fine. Let's be honest with ourselves and think about getting out of this hole.

  • "I made many mistakes, but I am committed to fixing them now"
  • "It's MY money, and I want it to go straight into MY pocket"
  • "Buying on credit" or "buy now pay later" is NOT buying, it's borrowing. We don't borrow, we BUY.
  • People with stuff are not necessarily people with sense*
  • "This makeover is going to be HARD"
  • "I am going to go without now, so I can have more later"

* There was a great quote in the book - "Don't keep up with the Jones', the Jones' are broke". Loved it!

OK, enough lectures and feeling sorry for ourselves, let's get started shall we? :)

The Journey to Financial Freedom - Table of Contents

The Journey to Financial Freedom (AKA the "Money Makeover")

So, here is a round-up of all the "Money Makeover" posts that I have completed. Items without links are pending (and subject to change).

It should be noted that this strategy is largely based on the advice provided by Dave Ramsey in "The Money Makeover" - huge props and credit to him (he is literally changing my life). The posts are based on my take and experience with the strategy as well as lessons learned along the way.

I truly hope you find them helpful :)

Getting Started

  1. Introduction - Covers how it all started for me, why we should have a makeover and some truths that we need to admit before beginning.
  2. Step 1: The Budget - Helps get you started with creating your budget and offers pointers on how to organise it.
  3. Step 2: "Allocated Savings" - Introduces the concept of our "allocated savings" account and how to track our savings.
  4. Milestone 1: Emergency Fund 1 - Our first key milestone in our journey. The creation (and maintenance) of our front-line emergency fund.
  5. Step 3: Cut! Cut! Cut! - Some simple tips and tricks that I have picked up along the way to help try and cut our spending to funnel more cash to where we want/need it.
  6. Milestone 2: The Debt Snowball - Now we have some breathing space provided by our emergency fund, let's get to clearing that debt!
  7. Now, Celebrate! - Congratulations! At this point, you are debt free!
  8. Milestone 3: The Emergency Fund II – Now that we are debt-free, lets focus on getting some real money in the bank for added peace-of-mind and security.

Tips


Posts coming soon..

Here’s future posts I intend to write. Some of these may take a while as I am writing all of these from my own personal experience of the Money Makeover.

  • Investing
  • Buying a Home

Sunday, 1 August 2010

The Polyglot Programmer - Forget Learning the Language, Visit the Country

I have recently started dabbling with Rails. While I am still (extremely) new with the framework, it has really sparked a new wave of thinking for me - which is great timing since I've been feeling like I am in a bit of a learning plateau.

This new wave of thinking is about the "Polyglot Programmer" and what it means to me.

What is a "Polyglot Programmer"?

"Polyglot Programming" in a traditional sense is simply combining multiple languages in application development. The idea being that some languages are "just better" for doing certain pieces of work. Having the ability to switch language to perform said pieces of work can obviously mean increased productivity and improved product output.

Therefore, a polyglot programmer is a programmer/developer that knows several languages, enabling them to switch language as required.

Problems I See

Well, as a concept, the above seems great. Anyone who knows me knows I am all about getting stuff done. However, I think there are several problems that actually prevent a "true" polyglot programmer. Let's think of our "core" language as our "native" language and other language(s) as foreign:

It takes time to learn, for little time used

For 95% of your work (maybe less, but unlikely) you are going to be in your native language. This is where you feel comfortable and most productive. So for just 5% of your work, you are learning a foreign language. Even if it is slightly harder to do something in your native language, it's likely hard to justify the learning required for relatively little usage.

You need to remember that you can switch

In the 5% of instances where a foreign language is appropriate, something needs to "flick a switch" in your brain to make you actually shell out to that language. Based on the fact that you use it less often, this may not happen. TBH, I think I would need to have a "library" of handy things in a foreign language. Almost treating it as a pattern/snippet repository.

The switch may not be so smooth

There may not be integrated IDE support for the foreign language. For example, in the .NET space integration of the dynamic "Iron*" language implementations (Ruby, Python etc) is still underway. Sure, it is being developed, but it's still overhead for the switch.

Your brain just doesn't play ball with the language

The real benefit is learning a language of a different type (e.g. static vs. dynamic, functional vs. OO). However, since you work in one "mode" most of the time, it's hard to let go of that way of thinking, and you end up shoe-horning a different development style into the language. For example, statically-typed peeps have a real hard time NOT putting type-checking into dynamic languages.

The Stack Change

As you probably guessed, I am advocating a stack change rather than "just" a language change. But why? Please note: I have been switching between Windows and C# ASP .NET development in Visual Studio to Ruby on Rails development in Redcar on Ubuntu. Therefore, some of the benefits realised may be simply to to this specific stack change.

You become the tourist

Why is this good? Like actual tourism, it is easier to learn a language when you are in a country that speaks the language you are interested in. If you are in an environment that is more at home with your language of choice, it will be easier to pick it up.

You truly adapt

When you are in a new (and perhaps scary) environment, you quickly learn to change your behaviour. Why? You need to survive of course. This behaviour change causes you to literally become more adaptable. The learning process required to do this is also highly portable and will enable you to think in a more generic way.

You get the full benefit of the language AND it's environment

One common reason Windows developers slam Ruby (and Rails) is because it is dog slow. And this is true. On Windows. When I first started tinkering with Rails it was naturally on Windows. Very soon, I started to get fed up with it, the simplest of code would take forever to run. Then I thought I would try it on Linux (and I wasn't optimistic). I was blown away by the performance difference. TBH, I don't think it runs any slower than .NET and it obviously starts faster (since no compilation is required). I would never have discovered this if I hadn't changed stack.

You get better tooling support

Some things you just have to get straight from the original source. I've been to several oriental restaurants in the UK (both Chinese and Japanese) where they don't serve food with chopsticks. Why? Because many Brits can't eat with them because we don't use them all the time. However, you go to China or Japan and the opposite is true. If you live and work in the environment native to your foreign language you naturally get a better ecosystem to work in.

You get different tools!

Having been a MS developer for years, I have been spending a rather large amount of time in Visual Studio for a long time. And it is a great IDE. However, I have obviously had several frustrations.. Some for years also - "Add Reference" anyone? (they STILL haven't got this right!). Working on a different stack forces you to use different IDE's and supporting toolsets. For example, with Rails, I have fell back in love with a simple notepad and the command line.. Now, I am looking for ways to develop C# ASP.NET apps in the same way, because I am quicker and feel more comfortable with less.

You do it "their" way

I did a fair bit of martial arts when I was growing up. One thing that continued to annoy me throughout this is the common lack of request for tradition in some schools. Some students would not bow, they would show disrespect to their fellow students and even their teacher. They would not do things like "Wai Kru" because they were just there to learn to fight. In the East, these things are the first things they are instilled into students. Discipline and respect breed a better mental environment for a fighter.

Similar to this, you get "the right way" of doing things in a different language and technology stack. Doing it the "right" way will help you realise all the benefits of the switch in the first place. For example, many .NET developers slam the Rails guys as being "stuck up their own ass" and "too opinionated". Frankly, this is true. But it works. "The Rails Way" simply says "look, 95% of the time you are going to want to work like this, so just work like this and you get X, Y and Z for free". Since most Rails guys work in Linux/Mac, it is a lot easier to find out how to do it their way.

You can travel more and feel at home

In time, I will be as good with Rails as I am with ASP.NET. This means that if I so desired, I could get a job working with Rails rather than ASP.NET. Now think, if I was to apply for a position as a Rails developer that can only use Windows with Rails I would get the position? I seriously doubt it. Changing stack to the native stack will simply make you more employable.

In summary...

I am really enjoying working with Rails. It's a fun and productive environment and a breath of fresh air. It is making me think differently about ALL the code I write (be it Ruby or C#), while making me demand more of my toolset and operating environment. All of which are good things. It allows me to pick the best tool for the job and use it in the best way (e.g. I have started a side project that is using both .NET and Rails).

So, if you want my advice:

  • Spin up a VM.
  • Install Linux.
  • Install Rails.
  • Get hacking! :)

I'll be sharing some more tips/links etc. soon, just wanted to get this out so any Ruby/Rails stuff wasn't a surprise. :)