Communication (part 1)

How to Communicate

Sender→Message→Receiver

It doesn’t seem all that complicated. A sender has information that he wants to transmit. A message is created encoding that information. The receiver decodes the message. Thus the information is transmitted. I have made a career out of this basic flow.

​I know better than this. This simple one way message is a datagram. It is essentially useless: that is to say reserved for a special type of message. There is no way to know if the message was received. There is no way to know if the message was decoded properly. The sender transmits information into the void.

Sender→Request→Receiver→Response→Sender

This is much better.​ A sender can now ensure the information in the request was decoded by the receiver well enough to construct a valid response. All of the web is based on this flow of information.

What works for the web does not work for people.​

Time

I have never figured out time. All of my estimates are terrible. On occasion, my estimates have been right, but I chalk that up randomness. I really have no idea how long things will take.

The closest I've come to good estimates is to compare task sizes: "this new task looks to be about as big as that thing I did a month ago; it took me 4 days then, it will take me 4 days now." The problem is I'm bad at comparing task sizes also.

Knowledge

Tripartite knowledge is difficult to obtain in software development. You don’t really know exactly where you are going until you have already completed it. You have a goal in mind in the form of acceptance criteria. You have a toolset in mind that you will begin you work using. You may even have a good idea of what the code will be. The problem is this is not knowledge.

​Working without knowledge is difficult for me. Every project I work on feels helplessly out of control until things settle down just in time for a release. This is why I like refactoring or re-architecting existing code. I have the knowledge in the old code base to refer to when I feel things are not going well.