How do you balance work with your SO?

If you “really love her”, then you already oughta know what’s most important. (Most important, not the only thing.)

Her “expectations” are not really expectations. They are cries for help. Listen.
Some of the things we have done:

-We take French lessons “together” and speak French around the house all the time.
-We always eat dinner together.
-We go out somewhere every weekend (usually not my pick).
-We catch up by phone several times a day.

It’s hard to explain, but I have a “more balanced lifestyle” “without” “lower expectations”. You “can” have both. It’s up to you to find a way.

[EDIT: Forgot one of the most important things: Sunday brunch is a big deal at our house. We shop together (the night before), cook together, and sit together for 2 to 3 hours at a table full of great food and 3 newspapers. At first, I thought it was a waste of time, but now I really look forward to it.]

Have you ever been burnt out?

I have been programming continuously for 30 years and I’ve “never” been burnt out. In fact, I’m having more fun than ever. I can’t imagine doing anything else.

I have worked in 88 companies, either as a contractor or an employee. I have seen other scenarios play out many times. I have worked on the worst garbage code and dealt with incredibly nasty and incompetent people almost everywhere I’ve been. But I never let them beat me.

Only I get to decide how I feel about anything, especially work. When things have gone sour, which they almost always do, I have done everything I could to fix them, and when that wasn’t enough, I have moved on. I’ve always felt that one of my biggest strengths was the breadth of my experience. I use almost all of it every time I do something.

There’s now more hope and opportunity for true hackers than ever. It’s just a matter of continually finding your best place. Maybe a small service business. Maybe that perfect job. Maybe a startup. If all else fails, keep the lousy day job and hack away at something cool at night.

If you’re really burnt out, take a break. But make it your decision - don’t let the bastards take your inner hacker away. Ever.

Becoming Senior

There’s a chasm you have to cross to become “senior”, whatever that means. One of the biggest skills you need to learn is not technical. That skill is understanding exactly how to apply our limited resources.

Should we worry about how well a certain module was written? Maybe, maybe not. Sometimes the answer really is, “It runs well and isn’t hurting anything, so let’s leave it alone. Opening up that can of worms dumps 47 new issues into our queue and now is not a good time to do that.” Or the answer may be, “This has to be
made right before we can add these 27 other things to the system or we’ll all be in deep sh*t.” How do you know which? Experience. Understanding the big picture. Understanding your customers and users. Understanding your dev team. You get the idea.

Taking on a lead role is not selling out if it’s used to expand your horizons and make you an all-around better dev person. When you return to full time development, you’ll be light years ahead of those who never had to manage the whole project. A little perspective goes a long way.

Why were you such a late bloomer?

“1955 was the best year for geek births”

For outliers, maybe, but for the rest of us, NO!

I was born in 1955, on the same day as James Gosling, inventor of Java.

But I was not an outlier. I was pretty much a regular person from a middle class family who went to public school and aspired to be the first in my family to graduate college. Here’s the problem with being born “too soon”:

I graduated high school, college, and graduate school “without ever having touched a computer”. Think about that. Neither of my colleges even had a Comp Sci department. I grew up in Western Pennsylvania, far from the leading edges of Boston and California. Nobodyknew anything about computers. They were giant machines that sent your electric bill. Period. Unless you were fortunate to be close to the geek counter culture of Northern California or had parents with millions of dollars, forget it.

I graduated with an MBA and got a job as a restaurant manager (1978 was a lot like 2009). Then I picked up a COBOL book and practically memorized it for a difficult to get programming interview. I got the job and the rest is history.

I often wonder what my life would have been like if I had been born 10 or 20 years later. But it’s a wasted thought. What if I had been born 10 or 20 years earlier. I’d probably be a retired car dealer now.

The great thing is that now it just doesn’t matter. I took a while to get here, but I can’t imagine doing anything  else. Maybe that’s why I’m here so often: making up for lost time.

Is there anything good about my job?

What’s good about it?
What’s good about it?
What’s good about it?

(I had to ask multiple times because we all know that the first couple of answers would be, “Nothing”.)

Every job, no matter how boring, is loaded with “stuff” that you “can” use to contribute to your long term progress.
It may be access to a user who’s an expert in their field and would love to share their expertise.

It may be a project that needs to be done, but no one else has time. And you can learn a lot of unexpected stuff from doing it.

It may be lots of interesting data on their hard drive that you can learn a lot from just by transversing and/or organizing.
It might even be proximity to a quiet coffee shop where no one would miss you.
It could be anything.
So if you’re stuck, then it’s your job to turn lemons into lemonade. (Practice turning lemons into lemonade is an invaluable skill on it’s own; just ask any entrepreneur.)

Now close your browser and make a list of 10 things you can try to get “some” value out of this job while you’re there. Then open your browser back up and let us know what they are.

What athlete are you most like?

Interesting question.

Reminds me of an argument between 2 great billiards players, Willie Mosconi and Minnesota Fats. Willie was the best player in the world at the time, winner of many championships. Fats was a hustler who never won anything except money. Each vowed to kick the other’s butt in a match. Of course, Willie kicked Fats’s butt, to which Fats responded, “So what. If there was money on the table I would have won.”

This article made me realize I am more like Fats than Willie. I have interviewed and worked with many great programmers, but hardly consider myself in their class. They may know 27 ways to sort data, but being like Fats, I only need to know one to get the job done (and take the money).

If there was a competition, they would kick my butt. But if a client had to get something done, I could hold my own against any of them.

A typical scenario I have seen over and over: Competitor A is doing B, so we have to do C. This means that we’ll have to modify our app to get data x from source y and present it to certain people so they have what we need to compete. We’re losing $10,000 per day by not doing this, so we need it ASAP. My solution is rarely optimal, sometimes clever, sometimes not, and often a hack. But it gets done quickly, it works, and it “does the job”.

That makes me more like Fats. But since I still aspire to be more like Willie, I’ll start doing a few more things on these lists.

Are you glad you became a programmer?

One of the best decisions I ever made.

Is is “what I thought it would be”? I don’t know. Because I had no idea what to expect. (I did my first programming on the job; I started before there was much opportunity to do it on your own.)

I have done projects at over 80 companies. I have gotten involved in almost every aspect of the business. I have travelled all over the country, met many interesting people (and friends for life), and have constantly been learning and doing. Oh, and I have earned far more than most of the people I have ever worked with. It wasn’t unusual for me to be earning more than my supervisor and much more than my users.

I have done lots of work on my own and have taken lots of time off between gigs.

Sure, there have been lots of negatives. I’ve even thought of leaving IT and doing something else. I know many who have. But then I think about it and realize that “this” is what I still really want to do.

There have been horrible working conditions, unreasonable people, terrible projects, long commutes, and worst of all, boredom and disapproval on someone else’s project. But instead of whining, I always did something about it. I either fixed what was broken for me or moved on.

Because of modern technology and lifestyle, I am more excited about being a programmer than ever before. I don’t want to sound like an old timer, but I clearly remember how hard it used to be to get good. I had to go to expensive seminars or to one of the half dozen good technical bookstores in the U.S. My first computer cost $6000 (double that today). Now with cheap hardware, google, downloadable environments, on-line forums, and Borders around the corner, everything is so easy! I just can’t get enough.

For someone even mildly interested in programming, I would say, “Go for it!” Get a job and play around on your own. Learn as much as you can, technical and business, and if you don’t like where it’s heading, find a way to make it work for you. Give it a chance. I’m sure glad that I did.

My Typical Day

I am running a marathon, not a sprint, so I frame my long working hours within a “healthy schedule”. My typical day:

7:00 am - immediately start coding last night's plan, then email, headlines
8 to 9 - exercise
9 - breakfast & internet
9:30 to 12 - code
12 - lunch & internet
12:30 to 6 - code
6 - dinner with family (home or restaurant)
7 to 9 - code
9 to 11 - computer off, pencil/paper, analysis, design, detail plan for tomorrow

Exceptions: one to two days per week consulting (still keep my night schedule), one day per week with family, occasional sports on TV. I could keep this up forever.

Why are languages so unimportant?

I am proficient in about a dozen languages, but only use 3. I go back to the SPS, PL1, Fortran, and COBOL days, and would rather chew razor blades than ever use them again. Today, I use javascript on the client and php on the server; I have yet to find a problem I couldn’t solve with them.

In the years in between I discovered BASIC and have found it to be the Swiss army knife of apps. Not the old Dartmouth Basic, and certainly not anything Microsoft bastardized, but there are many other versions that seamlessly integrate with relational data bases that I think are a dream.

It’s actually reached the point where I “think” in BASIC, design my app, and then sometimes write in in javascript or php.

I certainly wouldn’t recommend my approach to someone else, but I think that’s the whole point. Use the right tool for the job and get good at it. I see no need to learn new languages just for the purpose of learning something new. If I get “curious” or want to expand my mind, I can think of several hundred app problems waiting to be solved in any language, take your pick.

Should I keep my day job?

Yes. Here’s why…

You get requirements from your daytime job.

This is so important that when I stopped moonlighting and went full time on my start-up, I kept an outside client 2 days per week. Let me explain…

One of my biggest problems has always been WHAT to build, not HOW to build it. Many successful start-ups have been the result of building what one needed oneself. I just expand “oneself” to include my parttime clients. Think you have needs? Wait til you see the long lists of needs in almost any small business. Sure, I lose a little time in the development cycle, but I more than make up for it at user acceptance time. No cycles there - I already know what they want.