Sunday, 14 November 2010

Don't Panic

This is not a new area of discussion for me. You will see that a theme runs through my views on software development. It can be summed up to two simple words and one large exclamation mark: Don't Panic!

There will always be deadlines - be they realistic ones or complete death marches.

There will always be defects - found in testing or left to the point of blowing up in a user's browser.

There will always be uncertainty - from not deciding what colour to paint the bike shed to wondering if you should ever have become a programmer.

If you plan on staying around in the volatile world of software then you are going to have to learn to take a few deep breaths and deal with the problem at hand. Fainting at the slightest sign of a challenge is not going to help you work through that issue. Remember that unless you plan on never waking up from your fainting episode then the problem will be there when you are offered the smelling salts.

Do not become one of those people who stands back and has some other calm person fix your issues. Instead, be the calm one. Be the go to person. When the fit hits the shan, don't join the throng of zombie fearing masses. Step back and remember that you are building software, not searching for weapons of mass destruction. A bit of broken code or integration issues will maybe cost some money or annoy a few customers but nobody will die. It is software and it can be fixed.

Rectifying a situation and solving a problem is important but jumping at it with reactions rather than sanity will not bring peace to you or the issue.

What can you do?

  • Walk away for a minute and get your thoughts together;
  • Don't make changes until you know exactly what the problem is;
  • Find someone to discuss the issue with. Explaining it to others can help you sort through it. They may also see something or know something you can't see through the haze of stress;
  • Let the people who are going to be affected know that their may be an issue and actions are being taken to remedy it; and
  • most importantly, DON'T PANIC!

Friday, 5 November 2010

I'm on Triple J


This afternoon, I was interviewed by Triple J journalist Irene Scott for their program Hack. It was all about founding Girl Geek Dinners Sydney.

The story will be broadcast on Triple J at about 15 minutes in to Hack, which starts at 5:30PM EDST. If you miss it, you can hear stream past shows.

I Need A Job


It's true. After finally having the gap year that I never had, I am looking at working again. Back to join the rat race but this time I'm rested after a year old beach volleyball, Darwin sunshine, my mother's cooking and a lot of relaxing.

When I took that break in November last year, it was for an undetermined amount of time since I was unsure of whether I wanted to come back to IT at all.

To screw up a saying: A holiday is as good as a change and a one year holiday can be the perfect cure to ten years of crazy hours in an insane industry, in a manic city.

In the last year, I have worked on and off as an agile coach, a .NET developer, a Java developer, a Ruby trainer and in pre-sales. You probably aren't that interested in the time I spent selling gorgeous jewellery for my sister or the talents I gained in making the perfect coffee in my stint as a barista.

As a true geek, I never really stopped doing what I do best which is building great software. I wrote an iPad app (hasn't everyone), started playing with Windows Phone 7 and eventually started a business of my own, which is slowly growing.

So why am I looking for a job? Because I want to get back in to building good software for clients who care. It's how my brain works. It's what I do. It has to be something interesting and achieve the my driving goal of building software that helps people do their job and that they want to use.

If you need a good agile .NET developer in Sydney then contact me.

Thursday, 4 November 2010

Take 2 Cygwin a day and call me in the morning


For developers who have never ventured out of their Windows environments and in to the world of UNIX based operating systems (like Linux and Mac OSX), the command line is an often under-utilised tool.

This is quite understandable in the case of the Windows command line that lets you relive your early DOS days. With all the lack of power of DOS, the command line was long ago abandoned for many mouse clicks and maybe once in a while a RUN command that is copied straight off the Internet and into the START->RUN control.

For the uninitiated, who have never dropped back to a command line or shell or who never even started there like us oldies, the commands look like line noise. Amusingly enough, those who were not Bourne from a shell probably do not even know what line noise is. Ahh, the days of whistling along to our high speed 9600 baud modems are long and lost along with bulletin boards and green on black screens. Those days are lost because the world has progressed to the point that you need not listen to the squealing down the phone line or force your eyes to work in a Matrix like world.

The good things haven't gone. The powerful languages that let their engineers create low level code like C and C++ are still around. Even if more and more amazing higher level languages appear, there will always be a place for the land of hardcore programming. They are needed. They are powerful tools. Weapons even. When wielded by good software engineers, great things happen. Of course, you do need the high level languages because who really wants to spend all their time perfecting memory management and automation of the reinvention of the wheel.

The other thing that will never leave us is UNIX land. The beauty and capacity of the UNIX tools will never become obsolete. They have been ported to every new environment to follow UNIX and implemented as APIs wherever possible. To live without these tools is for some developers, like cutting off a limb at the neck. It's a horrid disabled world.

Windows is one of these worlds that lacks the default access to UNIX tools. The DOS command line is not a poor substitute because it's not even in the same league. It's like comparing Java as a programming language to pig latin. It's simply a silly and meaningless comparison.

For those of us (usually .NET devs) who must play in an exclusively Windows world, we have a few ways around it. We either have a non-Windows machine at hand or we use Cygwin. Cygwin is a library that provides POSIX functionality in the Windows environment. You install it on any Windows machine (an install that takes at least four coffees) and it gives a UNIX like environment for Windows. The Cygwin commands look like UNIX commands but are actually wrapping Windows system calls that do a similar thing or have been extended to do so.

There are of course limitations to the scope of Cygwin that are based in the fundamental differences between the Windows and UNIX based operating systems. Pretty much, the foundations aren't the same so only so much can be faked. Often that much is enough to provide a developer with these much needed tools.

Now Cygwin on it's own is a nice little tool and a lovely idea but the serenity comes from all the tools that are built on this basic foundation. There are shells that let you believe you could be using bash; text tools like grep; and much more.

The zealots will kick me and say this is a poor replacement in a bad environment. I tend to agree but it's the best thing out there for us .NET devs. How any developer can live without it, is beyond my understanding.

You'll find Cygwin here.

Have fun.