Sunday, March 30, 2014

Lies Lies Lies, yeah, they're gunna get you..

"four agreements": "Be impeccable with your word. Don't take anything personally. Don't make assumptions. Always do your best."

"The liar's punishment is not in the least that he is not believed, but that he cannot believe anyone else." — George Bernard Shaw

From New York Times:

Peter maintains that telling lies is the No. 1 reason entrepreneurs fail. Not because telling lies makes you a bad person but because the act of lying plucks you from the present, preventing you from facing what is really going on in your world. Every time you overreport a metric, underreport a cost, are less than honest with a client or a member of your team, you create a false reality and you start living in it.

You know the right path to take and choose another, and in so doing you lose control of the situation. Now, rather than tackling the problem head on, you have to manage the fallout from the lie. I know people who seem to have spent their entire careers inflating the truth and then fighting to meet the expectations they have set.

Thursday, March 20, 2014

Agile is dead

Agile is dead, long live agility.

Most notable point to take away from the article is what Agile originally stood for in the first place.
Individuals and Interactions over Processes and Tools
Working Software over Comprehensive Documentation
Customer Collaboration over Contract Negotiation, and
Responding to Change over Following a Plan

After years of misunderstanding, misuse and misnomers, this is most likely not what is understood to be agile. So one of the founders, Dave Thomas, co author of Pragmatic Programmer, has declared 'agile' dead, replaced with 'agility', as in 'you’re a programmer who programs with agility'.

Sunday, March 16, 2014

How to Minimize Politics in Your Company

The following is a good article on what a CEO should do to attempt to minimize corporate politics, and it provides some good hypothetical situations to bring up to see if a potential employer is actually doing anything to effectively combat such political machinations.

Source: http://www.bhorowitz.com/how_to_minimize_politics_in_your_company



Political behavior almost always starts with the CEO. Now you may be thinking: “I hate politics, I’m not political, but my organization is very political. I clearly didn’t cause this.” Sadly, you needn’t be political to create extreme political behavior in your organization. In fact, it’s often the least political CEOs who run the most ferociously political organizations. Apolitical CEOs frequently accidentally encourage intense political behavior.

What do I mean by politics? I mean people advancing their careers or agendas by means other than merit and contribution. There may be other types of politics, but politics of this form seem to be the ones that really bother people.

How it happens

A CEO creates politics by encouraging and sometimes incenting political behavior—often accidentally. For a very simple example, let’s consider executive compensation. As CEO, senior employees will come to you from time to time and ask for an increase in compensation. They may suggest that you are paying them far less than their current market value. They may even have a competitive offer in hand. Faced with this confrontation, if the request is reasonable, you might investigate the situation. You might even give the employee a raise. This may sound innocent, but you have just created a strong incentive for political behavior.

Specifically, you will be rewarding behavior that has nothing to do with advancing your business. The employee will earn a raise by asking for one rather than you automatically rewarding them for outstanding performance. Why is this bad? Let me count the ways:
    1. The other ambitious members of your staff will immediately agitate for raises as well. Note that neither this campaign nor the prior one need be correlated with actual performance. You will now spend time dealing with the political issues rather than actual performance issues. Importantly, if you have a competent board, you will not be able to give them all out-of-cycle raises, so your company executive raises will occur on a first-come, first-serve basis.

    2. The less aggressive (but perhaps more competent) members of your team will be denied off-cycle raises simply by being apolitical.

    3. The object lesson for your staff and the company will be the squeaky wheel gets the grease and the political employee gets the raise. Get ready for a whole lot of squeaky wheels.
Now let’s move on to a more complicated example. Your CFO comes to you and says that he wants to continue developing as a manager. He says that he would like to eventually become a COO and would like to know what skills he must demonstrate in order to earn that position in your company. Being a positive leader, you would like to encourage him to pursue his dream. You tell him that you think that he’d be a fine COO some day and that he should work to develop a few more skills. In addition, you tell him that he’ll need to be a strong enough leader, such that other executives in the company will want to work for him. A week later, one of your other executives comes to you in a panic. She says that the CFO just asked her if she’d work for him. She says that he said that you are grooming him to be the COO and that’s his final step. Did that just happen? Welcome to the big time.

How to minimize politics

Professionals vs. Amateurs

Minimizing politics often feels totally unnatural. It’s counter to excellent management practices such as being open minded and encouraging employee development.

The difference between managing executives and managing more junior employees can be thought of as the difference between being in a fight with someone with no training and being in a ring with a professional boxer. If you are in a fight with a regular person, then you can do natural things and they won’t get you into much trouble. For example, if you want to take a step backwards, you can pick your front foot up first. If you do this against a professional boxer, you will get your block knocked off. Professional boxers train for years to take advantage of small errors in technique. Lifting your front foot first to take a step backwards will take you slightly off balance for a split second and that’s all your opponent will need.

Similarly, if you manage a junior employee and they ask you about their career development, you can say what comes naturally and generally get away with it. As we saw above, things change when you deal with highly ambitious, seasoned professionals. In order to keep from getting knocked out by corporate politics, you need to refine your technique.

The Technique

As I developed as a CEO, I found three key techniques to be extremely useful in minimizing politics.

1. Hire people with the right kind of ambitionThe cases that I described above might involve people who are ambitious, but not necessarily inherently political. All cases are not like this. The surest way to turn your company into the political equivalent of the US Senate is to hire people with the wrong kind of ambition. As defined by Andy Grove, the right kind of ambition is ambition for the company’s success with the executive’s own success only coming as a by-product of the company’s victory. The wrong kind of ambition is ambition for the executive’s personal success regardless of the company’s outcome.

2. Build strict processes for potentially political issues and do not deviate—Certain activities attract political behavior. These activities include:
    • Performance evaluation and compensation
    • Organizational design and territory
    • Promotions
Let’s examine each case and how you might build and execute a process that insulates the company from bad behavior and politically motivated outcomes.

Performance and compensation—Often companies defer putting performance management and compensation processes in place. This doesn’t mean that they don’t evaluate employees or give pay raises; it just means they do so in an ad hoc manner that’s highly vulnerable to political machinations. By conducting well-structured, regular performance and compensation reviews, you will ensure that pay and stock increases are as fair as possible. This is especially important for executive compensation as doing so will also serve to minimize politics. In the example above, the CEO should have had an airtight performance and compensation policy and simply told the executive that his compensation would be evaluated with everyone else’s. Ideally, the executive compensation process should involve the board of directors. This will a) help ensure good governance and b) make exceptions even more difficult.

Organizational design and territory—If you manage ambitious people, from time to time, they will want to expand their scope of responsibility. In the example above, the CFO wanted to become the COO. In other situations, the head of marketing might want to run sales and marketing or the head of engineering may want to run engineering and product management. When someone raises an issue like this with you, you must be very careful about what you say, because everything that you say can be turned into political cannon fodder. Generally, it’s best to say nothing at all. At most, you might ask “why?”, but if you do so be sure not to react to the reasons. If you indicate what you are thinking, that information will leak, rumors will spread and you plant the seeds for all kinds of unproductive discussions. You should evaluate your organizational design on a regular basis and gather the information that you need to decide without tipping people to what you plan to do. Once you decide, you should immediately execute the re-org: don’t leave time for leaks and lobbying.

Promotions—Every time your company gives someone a promotion, everyone else at that person’s level evaluates the promotion and judges whether merit or political favors yielded the promotion. If the latter, then the other employees generally react in one of three ways:
    1. They sulk and feel undervalued

    2. They outwardly disagree, campaign against the person, and undermine them in their new position

    3. They attempt to copy the political behavior that generated the unwarranted promotion
Clearly, you don’t want any of these behaviors in your company. Therefore, you must have a formal, visible, defensible promotion process that governs every employee promotion. Often this process must be different for people on your own staff (the general process may involve various managers who are familiar with the employee’s work, the executive process should include the board of directors). The purpose of the process is twofold. First, it will give the organization confidence that the company at least attempted to base the promotion on merit and second, the result of the process will be the information necessary for your team to explain the promotion decisions that you made.

3. Be careful with “he said, she said”—Once your organization grows to a significant size, members of your team will, from time to time, complain about each other. Sometimes this criticism will be extremely aggressive. Be very careful about how you listen and the message that it sends. Simply by hearing them out without defending the employee in question, you will send the message that you agree. If people in the company think that you agree that one of your executives is less than stellar, that information will spread quickly and without qualification. As a result, people will stop listening to the executive in question and they will soon become ineffective.

There are two distinct types of complaints that you will receive:
    1. Complaints about an executive’s behavior

    2. Complaints about an executive’s competency or performance
Generally, the best way to handle complaints of type 1 is to get the complaining executive and the targeted executive in the room together and have them explain themselves. Usually, simply having this meeting will resolve the conflict and correct the behavior (if it was actually broken). Do not attempt to address behavioral issues without both executives in the room. Doing so will invite manipulation and politics.

Complaints of type 2 are both more rare and more complex. If one of your executives summons the courage to complain about the competency of one of their peers, then there is a good chance that either the complainer or the targeted executive has a major problem. If you receive a type 2 complaint, you will generally have one of two reactions: a) they will be telling you something that you already know or b) they’ll be telling you shocking news.

If they are telling you something that you already know, then the big news is that you have let the situation go too far. Whatever your reasons for attempting to rehabilitate the wayward executive, you have taken too long and now your organization has turned on the executive in question. You must resolve the situation quickly. Almost always, this means firing the executive. While I’ve seen executives improve their performance and skill sets, I’ve never seen one lose the support of the organization then regain it.

On the other hand, if the complaint is new news, then you must immediately stop the conversation and make clear to the complaining executive that you in no way agree with their assessment. You do not want to cripple the other executive before you re-evaluate their performance. You do not want the complaint to become a self-fulfilling prophecy. Once you’ve shut down the conversation, you must quickly re-assess the employee in question. If you find that they are doing an excellent job, then you must figure out the complaining executive’s motivations and resolve them. Do not let an accusation of this magnitude fester. If you find that the employee is doing a poor job, there will be time to go back and get the complaining employee’s input, but you should be on a track to remove the poor performer at that point.

Tuesday, March 11, 2014

What you would seem to be..

“Be what you would seem to be - or, if you'd like it put more simply - never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.” -- Lewis Carroll

Monday, March 10, 2014

How to judge documentation in 30 seconds.

Source: http://ericholscher.com/blog/2014/feb/27/how-i-judge-documentation-quality/

 

 A Website

If your documentation is a directory full of files on GitHub, I close the tab. With GitHub Pages, Read the Docs, and other places to host generated documentation for free, not making an effort is unforgivable.
If this is your project, please check out Mkdocs. It is still a new tool, but it will give your users something much nicer. I also recommend Sphinx for the most mature approach to documentation.

 

Prose

If your documentation is generated from source code, I am immediately skeptical. You should use words to communicate with your users, and those words shouldn’t live in your source code. If you included all of the things needed to document a project in source, your code would be unreadable.
So please, use a tool that allows you to write prose documentation outside of your source code. Your users will thank you.
A great start is to read this series on Writing Great Documentation, and the resources on the Write the Docs docs. [1]

 

URLs

There are two things I always look for in the URL:
  • Language
  • Version
Most often, projects don’t have either. Your URL should look something like: https://docs.project.com/en/1.0/

 

Versions

I see versions in lots of documentation, but not nearly enough. If your project has versions, your documentation should too. Not everyone can always upgrade to the latest version. If someone is using an old version, they should have access to documentation for that version.
Along the same lines, you should also have documentation for your development version. If the docs don’t have a version attached, I have no idea if they are up to date or not. You should clearly mark your released versions and development version, otherwise users will get confused.

 

Language

Language is one I rarely see. The software world has a nasty habit of forgetting that the whole world doesn’t speak English. If you don’t provide a language in your URL, you are implicitly sending the message that the documentation will never be translated.
I believe that translating documentation is a really important step towards helping people learn to program. Someone shouldn’t have to learn Programming and English at the same time.
Translations are quite a bit of work, so I understand why many projects don’t have them. But you should at least acknowledge the possibility of translation by putting the language in the URL.

 

Conclusion

That is the 30 second way that I determine if a project’s documentation is worth looking at. These are all hints about if a project actually cares about its docs. If the project doesn’t care about its documentation, that is a good sign that you probably shouldn’t use it.

Friday, March 7, 2014

Bash process subsitution

command >(process list) or command <(process list)

Nifty way of communicating with a process, <(process list) takes output and pumps it into the command, where as command >(process list) provides input to the process from the command.

Source:

Sunday, March 2, 2014

Freedom to fail

Keep finding lots of really good articles on HackerNews..



Recently, the US has been infected by the “failure is not an option” mantra, a toxic hubristic fallacy, disguised as a truism, which promotes the idea that risk can be removed from life; that 100% security and 100% control are possible, even desirable. Those who attempt to remove the possibility of failure, to de-risk financial systems, end up creating the probability of spectacular failure. By removing the option to fail cheap and fail fast, they instead concentrate risk and ensure we will fail hard, fail expensively, fail across the board.

In the 1970s the US developed a policy of forestry that espoused 100% prevention of forest fires; let’s call it “fire is not an option”. This policy resulted in the systemic suppression of small fires and eventually into very unbalanced forest ecosystems where fire is now not just an option, but a certainty of disaster. We now know that fire is a natural part of a forest’s life-cycle. Without fire, the forest floor gets overgrown, making it a source for bigger and hotter fires. When fires break out in a “managed” forest where fires have been suppressed for years, they burn so hot they turn the ground to glass. Fires that were survivable by trees are now so destructive that they denude hills and wipe out the entire ecosystem. Our financial system has become much like a poorly managed forest, harboring within it the increasing probability of a systemic and destructive conflagration.

Capitalism and entrepreneurial innovation require risk, as it is a fundamental component of business evolution. When companies are allowed to fail, their resources get reallocated in the market, just like a fire that converts sparse undergrowth into fertilizer for the next generation of trees. If instead, the failed companies are prevented from failing but are propped up to maintain the illusion of solvency, they fester and consume more and more resources while creating greater and greater risk. Eventually, bail-outs must be followed by even greater bail-outs and then bail-ins. Finally, the systemic risk of too-big-to-fail becomes too-big-to-bail and the economy suffers a conflagration of defaults. De-risking increases the risk of failure and turns localized risk into a systemic risk. If you stop the small fires, you get a fire so big it turns the ground to glass.