Archive for August 2009

Running…and Software Development

August 17, 2009

This spring, I took up running.  To anyone who knows me, this comes as a huge surprise.   Up to this point in my life, I have always hated running.  I decided I wanted to get healthier and start losing weight, so I started using the Wii Fit we got at Christmas. I gradually worked my way up to being brave enough to do the running in place exercise.  And I sort of didn’t hate it.  I actually got good at it and was soon running a couple of virtual miles a day.

I thought, “Hey, I can start running outside”.  So I laced up the sneakers and ran to the end of my street ( about 0.6 miles)… and felt like I was going to die.  For the next three days, I felt like my thighs were going to explode everytime I moved.

A couple of weeks later, I tried again.  This time, I got a real running plan and followed it.  It started slowly with more walking than running.  Each week, and later each run, increased the amount of running and decreased the amount of walking.  After eight weeks, there I was running for 30 minutes straight for the first time in my life.

So What Does This Have to Do With Software Development?
I’m in the middle of rewriting an application and trying to upgrade my skills all at the same time.  And my result to date has been much like my first attempt at running.  I think I can do it because I’ve done it before and I start hammering away…and then it doesn’t work and my head starts hurting from not seeing what I should be doing.  I’m trying to run before I’ve built up the mental muscles that support the understanding that I need to move forward.   What I need to do is to start walking and adding my running minutes gradually. 

Who Cares?  Why Is This Important?
I think one of the weaknesses of technical people (myself included) is that we don’t like to admit we don’t know something.  We’re often thrown into circumstances where we have to do something we’ve never done before.  And so we boldy go where we’ve never gone before….and get frustrated.  We may reach  the solution, but we feel like there has got to be a better way.   Sometimes we get lucky in the Google roulette and find a code snippet that will do most of what we need without ever having to think about it.  Sometimes, this is a good thing – especially if it’s for one esoteric feature that a user ABSOLUTELY has to have, but it’s not  part of the core of the application (like say, a routine for changing the colors of the graph reports).  But it’s very easy (and tempting for the sake of expediency) to throw together a whole application of disparate snips of code…and that is a recipe for disaster.

What we should be encouraged to do at our places of work or even on our own, is to embrace the beginner’s mind.  By beginner’s mind, I mean that stage where you go through the basic exercises and start to make the connections that enable you to figure out how to more and bigger things.  In beginner’s mind, you don’t necessary even know what you don’t know.  But you start slow and build the intellectual muscles that you need to start.  And you continue to build those muscles so that you can do more.

How Do You Begin the Journey of a Thousand Miles?
 With a single step, Grasshopper.  By that I mean start at the very beginning.  For me, I’m going back to the .Net books that I have that patiently walk you through the steps to building a .Net application.  No more skimming to find the section that I think will do what I need to do. I also will look at Microsoft’s tutorials online and also squeeze in some online training.  As I learn, I will start to apply each piece to my application, re-enforcing my learning.  To speed up, I have to slow down; move carefully through the preliminaries until I have mastered them.

Because running is just like software development – just because you have been doing for a while, it’s still never really easy – it just gets less painful.

My Ideal Job

August 7, 2009

This started out as a completely different post – one about spending the last month (plus) in Unemployment Nation, but it occurred to me that I should be focused on what I want to do.  I decided that I’ve done enough wasting enough mental energy on my previous job and the way I was discarded…I mean let go. 

Since I’m now looking, I’ve been think about my ideal job.  I’m imaging a place called Utopia Software Company.  Here are some of the elements of Utopia Software Company:

IT/Development  Work is Either THE Product of the Company or an Integral Part of the Company’s Products – In my previous IT jobs, IT was always viewed as, either a necessary evil or a black hole where money was poured with nothing coming out.  When the inevitable tough times would come, IT would be the first on the block.  In my first job, I watched IT get chopped in third. Recently, my IT department of three employees was reduced to one contractor.  The companies I worked for had lots of intelligent people working for them.  Companies where technology (not necessary computer/electronic) are key. You would think that if they could give IT at least some of the resources it needed that there would be a big return for the business.  But what IT got was usually the shaft.

Also, IT had little or no clout within the organization.  Trying to get things done that were needed for the IT organization to work better was damn near impossible.  No one wants to hear that we need a new air conditioning unit for the computer/server room or that we need this or that tool to do our job more efficiently.  And when trying to get the attention of management, if it had to do with IT, forget about it.  As friend of mine said, “You can’t spell shIT without IT!”.

That’s why I want to be part of an organization that either makes software or view software development and the systems as a key part of their business.  IT would not be considered a second rate department, but critical to the success of the company.  I would like to feel valued and supported.

An organization that ACTIVELY supports learning – One of my biggest frustrations with my corporate IT career has been the lack of opportunity for learning, particularly for classes.  I’ve been part of two corporations who SAY they value learning, but I have not seen it pan out.  I have rarely been able to take training I need just to be able to do my job, let alone learn any new skills.  It’s a good thing I can pick things up quickly, because that has been the way I’ve had to learn almost everything.  I did have one good manager who really let me take a number of courses to improve my skills – that was nearly 13 years ago.  I’ve had almost zip since. 

I want to be part of an organization that really encourages learning and gives people the time and resources needed to learn and continue to learn.  Allowing people to take web classes while trying to continue to do support work doesn’t cut it.  If I’m supposed to be learning something, I want to be learning it and concentrating on that. Not trying to learn a new database technology while supporting applications, correcting data entry errors, and fixing printers.

Pay and Compensation

I’ve worked for two companies whose view of pay and compensation couldn’t have been more different.  One paid people in proportion to their performance – the percentage of your raise was clearly tied to your performance that year.  The other company SAID they believed in performance based compensation. But if you worked your ass off or just did what was needed, you might get the same 3.5 %.  The one company expected alot out of you, but actually gave you something back.  Most managers at that company would give you time off if you had to do night or weekend support.  The other company wanted you to work even more than the former, but you were lucky to receive a pittance of an increase and no time off if you had to give up nights, weekends, or even holidays for support.

I want to work for a company that rewards their employees for a job well done with meaningful increases.  If the company expects a great deal of their employees, the employees should expect a great deal in return.  And night, weekend, and holiday support work should be compensated by either time or money. 

Room to Grow

In both my corporate jobs, there really was no place else for me to go.  In my first job, the only way up was into management and at the time, I wasn’t willing to make the sacrifices (move away from my family) to make that happen…I’m still not ready to make that sacrifice.  In my last job, there was, at least on paper, more technical levels for me to pursue, but I knew that no one would want to have someone of that level working in the plant…apparently they didn’t even want to have someone of my level working at the plant…but I digress…

I want a job where there is a technical and management ladder.  I was a pseudo manager for a while (all of the responsibility, none of the power), and I’m not sure I was real great at it then.  I’ve learned a lot since then (particularly what NOT to do) and think I have a better mindset for being a manager, but I still like technical things.  I’m not sure I’m ready to go into management, so I’d like a position where I could advance either technically or managerially.

In Search of Utopia Software Company…

Am I asking too much?  Does this company even exist?  In Central New York (state)?  That’s the kind of company that I would like to build some day, but for now, I’d like to just see on functioning in the wild.  My horror stories of Corporate IT are mild compared to many I have heard with psychotic management and cutthroat politics – I’ve been spared that.  But wouldn’t it be nice to work for Utopia Software Company or at least in the IT department for Utopia where dreams can come true?