On Questions

First, a question I will answer later. This post is already long enough.

  • Where should I work?

Productive questions are about a journey and a destination.

  • Why am I waiting for rebuilds?
  • How many times am I re-entering my password?
  • Where is my time going?

Non-productive questions are subtle, or not subtle, endless tasks.

  • How should I structure my project?
  • Should I use vi or emacs?
  • How can I generate automatic time reports for my manager?

Why am I waiting for rebuilds?

Answer this and you’ll get minutes (or hours) back per day. Ten minutes a day is a full work week every year. Answer it really well and your co-workers will love you.

  • If your rebuild is living in a C-like world, start looking at ccache.
  • If your rebuild requires waiting for a Tomcat/Apache restart (not reload), fix your deployment scripts.
  • If your rebuild requires pushing to a server since you develop on Windows (or Mac) but have a Linux production environment, get a personal copy of your production environment and work directly in that. This is the cause of many, many ills (and probably worth another post later on.)

Deep down, everything in development is a REPL. Good REPLs are fast.

How many times am I re-entering my password?

If you are entering your password more than twice per working session you either need to learn how ssh-keygen works, you’re working on some kind of login system, you have overly restrictive IT, or something else is quite broken.

Lastpass is a good place to start. Passwords easy enough to type in frequently are a security risk. Passwords too long to type in frequently are potentially deadly to productivity (and expect someone to write it down or store it in an insecure place.)

One-time passwords are a great compromise. I don’t have any research to link to here, so I’ll be quiet.

Related to passwords - proper use of Mosh and Byobu really takes the edge off of logging back in.

Where is my time going?

If you are an engineer, and this might not be a popular opinion, you should not be worried about clocking in a particular number of hours. Hours spent staring at a project are about as useful a metric as lines of code written - which is to say useless. RescueTime can give you some insight, but to be honest, you should already be aware of what dominates your day.

Microsoft Word

You’re either revising your resume or writing endless design docs that nobody will read. In general, the sweet spot is between one to three pages of content. Anything longer is probably a level of detail not appropriate in a design doc - and Word is not a good choice for reference documents. If you’re revising your resume, you probably know what you’re doing. If you’re not certain you do, read this.

Oh, resumes should always be a single page.

Some IDE

If it’s Eclipse, you’re just waiting for it to start, and should switch to IntelliJ (or Sublime Text, although I’ll admit Java is terrible to write without an IDE.) If you’re spending most of your day coding but don’t feel productive…

  • You might be doing just fine. Talk to your manager. Talk to your peers. Don’t humble-brag.
  • You might be in a learning phase. This might be acceptable or you might need training or a re-baseline. Again, talk to your manager and peers.

Every manager I’ve ever had was always happy to talk about how I was doing. They’re graded on your grading, so to speak: take an interest in it and everyone wins. Talking to your peers is trickier - showing that you’re worried about pulling your weight, however, may get you feedback you can’t get any other way.

Code Reviews

Generally someone gets a reputation as being an easy review. You may be that person. You may also just be picking up reviews too often - for example, I have designated times I’ll look at the queue during the day (unless someone specifically asks me for a review - don’t be a jerk.) This is one of the extremely rare social situations where it’s acceptable to just stop and let everyone else catch up.

If someone starts talking about adding a code review process with SLAs…run.

Facebook (or some other egregious waste of time)

You either work for Facebook or you need to be honest with yourself. If you don’t care about your project - and I mean a deep, long-term not caring, not a “this is a bug bash week” or “I’m new and everything is hard” kind of not caring - find something else to work on or somewhere else to work. If appropriate, do meta-work: automate, refine, optimize the pieces that make your job painful.

Non-productive questions?

  • How should I structure my project? It doesn’t matter. You’ll get it wrong until it’s in production. Until long after it’s in production, usually.
  • Should I use vi or emacs? If you know one, use it. If you know neither, Sublime Text. Re-learning a new system “just because” is an incredibly pointless time-sink.
  • How can I generate automatic time reports for my manager? If your manager really cares, you’re either on the path to being fired or your manager is trying to justify your existence. There are better actions in either case.


comments powered by Disqus