Oct 12 2011

The Four A’s of Email

I like to adhere to the AAAA rule of email. The four A’s of email reminds you to check you email for four items before you click the send button. Check and double check for correct Address, correct Attachments, correct Attitude and tone and state an Action you want from a recipient.

Recently, a developer in distress sent the following email to the whole company.

I can’t delete any data from any UI screen.

That test doesn’t read like an email, it doesn’t even make sense as a tweet, it’s like an unfortunate cookie message. The email should not have been sent to the whole team, which include sales people, it is to vague, does not have any clear action or request.

Communication is vital for any team and the teams running on full speed need the right level of communication in the right medium. If you are interested in learning how to effectively use email to communicate with your team I recommend the following posts.

There is a fifth A; don’t be an Ass.


Oct 4 2011

People Over Process

Processes are supposed to support people, not people support processes. A process should be documented in one document or checklist or directory or wiki or website that everyone has access to. Everyone should have a copy readily available. It should not be outlined in emails or sporadically over several documents across different locations. Always review the process and remove friction. Try to minimize steps when possible, centralize the information, anoint clear responsibilities, build in safety nets, empower developer to make decisions, let it grow as the team grows. Automate the process as much as you can, make reports people can use, make everyone’s progress visible. For some certain teams, there is diminishing returns for adding more processes.


Oct 1 2011

Team We

Even when I have been the sole developer in a class, interface, module, library, or feature I try to always report progress as “We.” For defects and issues it’s always easy to point out the fault and personalize the problem when it was caused by someone else. Avoid naming names or singling out an individual. Saying “Your broke this” doesn’t make you look better or solve the issue. Restate it as “This was broken by this change list you committed on this date while trying to resolve this other issue.” Don’t personalize blame or fault, and provide as much information as you can gather to better solve the issue. Don’t stop when you find something is broken, or when you find who broke it, find out why it was broken in the first place, and if at all possible suggest viable solutions.

A few days ago, a engineer called me over for some help. He immediately started making using accusatory language as if I had committed some crime. “There is a bug and you wrote this so you did it and you didn’t do it well because there is a bug.” He was pointing to 20 lines of code that I had written over a year ago in a much larger feature whose requirements had changed over time and because of his tone and desperation in his voice I could tell he was lost just dropped the anchor of blame wherever he could. I tried to get focus to the task at hand an not my code and asked a series of questions, what does the system do now? What should the system do? Does this always happen? What is unique when there is an error? Using this approach we found the issue in 10 minutes without staring down the code or focusing who wrote what method.


May 31 2011

CEO of You

I’ve worked for large companies and I’ve worked with small companies. There is a big difference in your day to day responsibilities when working in either of these environments. In a large company, you know your rank, your salary pay, and your place in the org chart. In a large company, you can predict product releases by the conference room schedule months in advance. I remember working on a project in a large organization and I wanted to add a boolean property to a single database table but the there was so much bureaucracy in place that that it took two meetings and the review of the local database expert who used his tenure to carve out a little fiefdom for himself.

It’s completely different in a small organization. In a startup, there is no room for bureaucracies, or org charts with more than two levels, or egos of experts but at the same time everyone is the CEO of something. In a company of less then 10 people, there is no room for middle managers, everyone has to manage themselves, everybody has to be a CEO of something. In such an organization, you may have to be the technical lead, the hiring manager, or the vice president of phone system, or directory of version control, as well as the senior technical writer, and even maintenance guy. In a small organization you have to do it all. In a small organization, when printer is stops functioning you are the printer expert. When the phone system stops functioning, you need to take the lead.

I’ve found that this approach also works for other aspects of life. There are people that wait for a scheduled meeting to to figure out what they need to do next, I like to get done.


May 24 2011

Manage Your Manager, Organize Your Organization

No matter what your position in an organization, no matter your title, or pay grade you often need to manage those you work with. Sometimes you need to manage your own manager, co-workers, and other resources. You might work with the boss that travels often and consistently sends you notes on features and requirements right after client demos. Maybe you may work with a project manager who keeps hand written half crossed out tasks scattered in a series of prints out. Worse yet, you work in a team that delegates work by forwarding and replying to essay length emails.

Highly effective development teams have a series of habits that they routine practice including using a version control system and bug tracking software. As an individual contributor, you also need to develop habits to help you team. Here is a short list of habits you can develop to help you succeed in a team environment.

  • Manage tasks in a single document.
  • Keep lists of work items.
  • Keep correspondence with other short and simple.
  • When email people about separate issues, separate issues in different bullets or different paragraphs.
  • When describing a problem, list possible causes and solutions.
  • Use screenshots and image editing software to help you illustrate your point.
  • Use screenshots and image editing software to help you illustrate your point.

There are a multiple tools to achieve this, you can use Outlook Tasks, Google Documents, Microsoft Project. An effective organization has every member using the best tools available to organize their tasks and those of the people around them. The key to success is to make it easy for yourself and those around you to achieve your goals.


May 23 2011

Retweet April 2011

From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants. If you want to follow the conversation follow me at techknow and/or juixe.

Software Development

  • Thread.sleep(28800000);
  • You don’t need a PHD in PHP to be a great Web Developer.
  • Not Another Expression Language. There should be one expression language to rule them all.
  • I am not afraid of rolling up my sleeves and debugger.
  • It’s a thin line between feature and bug.
  • Code is a blunt instrument.
  • We ain’t afraid of no code block.
  • Web designers are modern day alchemists.
  • If developers are a dime a dozen, then product idea people are a silver dollar a dozen.
  • I don’t read romance novels or non-fiction before going to bed, I read programming language technical specifications.
  • New Name For Rock Band: Death By SQL Injection
  • Let there be code.
  • Just code it.
  • Code the future.
  • Crack the code.
  • Don’t be a code donkey.

Team Dynamics

  • Are you a value creator, subtractor, divider, or multiplier?
  • AWS failure is the perfect storm to the cloud.
  • Stress is excess, we don’t need it in our lives.
  • You can’t buy the scrappy mentality.
  • Scale your thought process.
  • The right time is right now.
  • Strive to do what you do well better.
  • People don’t scale and multi-task as well as computers do.
  • Give a man a thought, and he will think for a day. Teach a man to think, and he will think for himself.
  • You don’t want someone to reinvent the wheel, you need someone that makes it turn!
  • Everyone has great ideas, what is needed is great execution of great ideas.

Product Placement

  • Is Automattic, the company behind WordPress, working on an ad network? With millions of WP blogs out there, maybe it should.
  • Jiffy Lube peeps are great at up selling you on add-on services.
  • Forget HAL 3000, I’m afraid of my iPhone 3000. “I’m sorry Dave, but I’m afraid you can’t do that and I’ve notified the authorities.
  • Google announcing that better ads are coming to GMail is like the power company announcing that a better billing system is coming.
  • I feel like I get more snail mail spam than email spam. I wonder if GMail can also filter out my snail mail spam.
  • If you add up all the zero-day holes in Adobe products, you get a lot of days spent patching and upgrading buggy software.

The Valley

  • Welcome to the Blubble 2.0.
  • The trouble with the blubble.
  • I think we are in a #bubble when a website for listing free crap is valued at multiple millions of dollars.
  • Don’t pivot while you pitch.
  • How do you monetize the bubble?
  • Ah, Silicon Valley, the land of vanity startups, founders with ADD, fan boi VCs, me-to products, one trick apps, companies on pivot mode…
  • Bubbles are like snow flakes, there are no two alike, so we can conclude that this tech bubble I’d different from previous ones.

General Technologist

  • If Arthur Miller were alive today he would have written a sequel to Death of a Salesman called Death of a Social Media Marketing Ninja.
  • You know your service or product is successful if GOOG wants to buy you for a billion dollars, FB copies you, and if MSFT doesn’t get it.
  • Any lawmaker who proposes any bill related to technology should be able to correctly setup a wifi router, Facebook privacy settings, …
  • My iPhone knows too much about me. I think I want a dumb phone, instead of a scheming evil genius phone that is tracking my every move.
  • If TinyUrl was a utilities company it would force upgrade everybody to use smart grid meter and charge us extra to use green friendly links.
  • Twitter management seem to play musical chairs with titles. It seems like everyone at the company has had a turn at being CEO.
  • There are different degrees of open in open platforms, from marketing buzzword open to data portability open.
  • What I learned by reading Rework by 37signals: Emulate drug dealing celebrity chefs and up sale the by-products of what you do.