Monday, February 5, 2007

Work Ethics and Self-Improvement (2007 edition)

My uncle and I were talking tonight about him getting a new bigscreen TV, and how all the ones he's looked at were quite expensive (and more than he wanted to pay).

My first thought was "So, you want a big screen plasma or LCD display. That's expensive... and stupid - a TV can't make you money, there's no way to recoup (or get any return on/profit from) your investment. So you gotta figure out a way to make the money for the TV make you money (then use it to buy the TV, if you really want it."

I avoid large purchases that don't make me money. My iPod was purchased to be a music machine on the road and while I'm programming away from my music collection, and to act as an external hard drive. My Nintendo DS is a good game machine, but it also has a web browser for it, and I recently acquired the stuff so I can code my own DS applications. I bought my XBox with the idea of "Hey, everybody else has one, I can have some fun, and maybe I can store stuff on the hard drive".

Back to my uncle, I said: "Well here's an idea. Write a few articles for engineering magazines. It'll take you 3 months or so an article, and the tech environment will change. Another 6 months to get paid gives you all sorts of time to do research. When the money finally comes in from the articles you'll have money to pay off the TV"

He said: "Good idea, but it won't work: I'm a terrible writer."

This puzzles me. If you know you have problems in an area, explicitly go out and work in that area and get better, be more productive, and increase your earning potential. (Yes, I feel hypocritical recommending that my uncle increase his learning potential as he makes probably twice to three times as much money as I. But he only makes twice to three times as much.)

As an example, I've become a much better writer over the last 4 years. I'm much better at phrasing sentences to state only one thing and mean unequivocally what I want them to mean. I don't know if technically I'm any better (except in two or three specific areas), but I hope I'm a clearer writer. I got that way on purpose, with practice, and I had a reason (ambiguity with clients, or in technical explanations, is to be avoided).

I know I'm not a skilled writer, even today - I can only do about one or two technical articles a year because the process of writing takes me a long time. This is certainly somewhere I can improve. I do, or think I do, produce clearer copy.

Writing and communicating are two skills critical for knowledge workers, and if you sit in front of a computer all day you're a knowledge worker.

So why the HELL are you not improving yourself!!!!

As a sidenote, I've also surprised my Uncle by mentioning computer language improvements in his area of expertise. (He was unaware of the Fortress language coming out of Sun (see also: Fortress Project Home), supposedly a contender to the FORTRAN throne. He's an engineer, and uses FORTRAN a lot.) This was another "excuse me??!" moment. With proper news aggregation you should rarely if ever miss stuff in your domain.

For those of you that feel I'm being overly critical here: Yes, I've talked about how hard-assed I am previously a number of times. First, on depreciating my Powerbook and production machines, and the second on quality and deadlines. My opinion of those "Work Hard, Play Hard" people is that they do too much playing. Move over, let the professionals take a crack at it, amateurs. Real Professionals act it!!!

It's hypothetical (and hypocritical even) to rip on others about improving themselves without also listing how I could improve. Consider it my New Years Resolutions (Do people make resolutions for Groundhog's Day? I wouldn't be so late that way!)

  • Better follow-up on additional work

    I do this really poorly. I either see opportunities and don't follow them up as hard as I could, or keep projects on the back burner longer than they should be. My excuse is "My main project keeps me really busy", but it's kinda a tired one.

  • Better Organization

    I'm working on this, stealing some concepts from GTD (see also: post on some of the pros and cons of GTD and the GTD wallpaper/desktop picture. I haven't yet figured out a good reminder scheme yet though, nor have I actually purchased or read the book. GTD methods smell like money to me (or at best it smells like less stress and more quality work. So yeah, money.). So I should get on it.

  • Improve Workflow

    My biggest productivity tool this year has been TextMate. Imagine a helpful ninja helping you code, swooping in at the appropriate place, making precise cuts, then getting out of the way again. Yeah, it's like that. Still, sometimes I feel really slow (examples of places for improvement in my TextMate workflow: auto-completion, especially for CTAGS. Even Better XCode integration. Split Panes (although I doubt I'll be able to do this myself, but I pine for the day it's implemented). Find In Folders (grep from the command line kinda sucks, and doesn't give me an easy way to open the file once I've found it).

    It's critical as a programmer to be looking at and evaluating your tools with an eye towards speeding your development workflow, and learning new tricks.

    As an example, I recently found out that (in Cocoa - or Cocoa-like - text views) that option-delete deletes characters from insertion point to the next white-space character. (Option-Forward Delete does the same thing, except foward deleting instead of "backwards" deleting). My previous workflow involved selecting the word (option-arrow) and delete. This new way is faster - no leaving the main QWERTY keypad. I'm trying really hard to get this wired into my brain.

  • Think about "lightening up" professional writing

    I'm not so certain about this one. Lately I've been working with someone who isn't used to sending professional emails. After a bit of practice he's alright: still a newbie, but decent once we pounded what was expected into his brain.

    Because of this lack of profession practice, his emails have a certain lightness to them. Nothing inappropriate (and I reined him in a few times from overdoing the cleverness), but the use of the clever side comment or witty turn-of-phrase was a pleasant change of pace. His style allowed me to relax a little when we were collaboratively writing an email, and also may have made those long emails more bearable to the reader.

    Yet I'm unsure what place this gaiety has in professional emails: if a little bit of sugar helps the medicine go down, or if emotions of any kind are inappropriate in the workplace (an impression I seemingly had drilled into my head at business school. Maybe it was just me.). Yet gaiety goes against a pattern of "condense, condense, condense" I've also had drilled into my head. This requires more thought.

  • Learn More

    This is a must. I'm not sure if I should dive deeper into a language I already know (and use a lot: C++, Python, AppleScript) and learn about it at a deeper level, dust off a language I don't use so much and do something with that (Objective-C, FMP, Java), or learn a new language (contenders: Ruby, D, functional programming languages). Or go way off of the Apple home camp (ASP/VB.NET, C#, IronPython, MFC/C++). I'm not really certain yet.

  • Make more money, save more money

    Reduce Debt. Build Capital. Start Piles O' Money. Smarter Money Habits. Live Smart Money Tips. Optimize Optimize Optimize.

  • Be More Efficient in General

    Learn how to parallel process. Not multitasking, where you're switching between tasks frantically, but parallel processing: where two things are getting done simultaneously. Impossible, perhaps. But the impossible makes a worthy goal.

  • Details

    Coding benefits from a QA perspective: "How can I break this? What can I throw at it?" I just wrote the code, so I know its vulnerabilities better than anyone, so test those points and see what happens. Be it through unit tests or building the program and trying it, every aspect of the program should be tested.

    Same with anything really. Read and Re-read writing to make sure, ask: "How could someone break this?". Look for possible logic errors, possible typos, possible places where something got rewritten and cleanup never happened. Optimize.

    Of course, getting all the details perfect is another improbable, but worthy goal.

Ok I think I'm done.

RE "Think about "lightening up" professional writing": There's lightening up, and then there's unprofessional. See DreamHost's Super Lame Apology (Broken Down by Daniel Jalkut.)