A False Sense of Security with Test-driven Development

Test driven development is great as long as you have proper tests. The problem is that it’s very hard to predict enough edge cases to cover the field of possible scenarios. Code coverage analysis will help developers make sure all code blocks are executed, but it doesn’t do anything to ensure an application correctly handles the variations in data, user interaction, failure scenarios, or how it behaves under different stress conditions.

The fact that tests are helpful, but never complete is something most developers are already conscious of. The danger is that better tests make worse developers! It’s very easy to lean too heavily on passing tests, wildly changing code until the light goes green without spending enough time thinking through the application’s logic.

I’m basically saying that, psychologically speaking, passing tests gives us a false sense of security. They can be a distraction from carefully crafted and thought through code. That’s why I advocate writing tests only for the purposes of regression testing. It should be a follow-up step, not an integral part of initial development.

Democracy 2.0 with Micro-voting

The democratic process hasn’t changed much. The public elects a representative, representatives make decisions. The average citizen is essentially limited to three tools for affecting change. First, we elect the politician who best convinces us they’ll make the decisions we would want to make. Second, we can send correspondence to our representatives hoping to influence their decisions. Third we can hold protests and demonstrations to broadcast our opinions.

But there can be a better way. Modern communication tools allow the public better access to government and can revolutionize the democratic process by voting directly on the issues. Using internet, text message, and phone voting systems citizens can be directly involved in the decision making process. The role of the representative is reduced to more of an organizer than a decision maker because constituents decide most of the issues themselves. This is democracy 2.0 not because of the invention of new tools, but because it changes the way people behave. I believe we’re headed in the direction of popular governing, but it’s not a perfect world.

Old school tools of Democracy 1.0

There are three essential tools. Ballot voting is infrequent and highly constrained. Decisions are simply yes/no or choose your favorite candidate. No second choices, no weighted scores.

Correspondence with representatives is a free-form way to express opinions and ideas, but it is usually ignored or not accurately counted because representatives simply can’t handle the volume. It lacks transparency and accountability in that only the representative knows the aggregate opinion. Sending correspondence requires knowledge of the system and time.

Protests show what a sample of the population thinks about an issue. To decision makers it roughly quantifies two things about an issue; proportion of the constituency and intensity of the opinion.

There’s a better way with Democracy 2.0

With more ubiquitous methods of communication we now have the tools for a more involved democracy. One where citizens can become more involved in the decision making process. The ease of arranging “micro-polls” through the web, text message, or telephone is such that we can weigh in on any range of issues. By making these polls open and transparent and frequent, we could have truly participatory democracy. Micro-polls can be used to develop policy decisions with rapid iteration harnessing the “wisdom of the crowds”. Determine weather any actions should be taken, then what kind of action until the constituency arrives at the most agreeable outcome.

Round 1:
Poll: Should the federal government adopt policies to reduce the number of illegal immigrants?

Round 2:
Poll: Which method of reducing the number of illegal immigrants do you most agree with?
— Forced deportation
— Keeping non-citizen status, but documenting and taxing
— Naturalizing to eventually be US Citizens

Round 3:
Poll: As non-citizen, documented workers the following services and taxes should be imposed:
— All normal social services and medicare except social security and impose all normal taxes except social security
— No social services and impose all normal taxes except social security

Public surveys on non-policy issues such as a yearly report card for representatives give feedback so they can do their job better without waiting for the next election cycle. Constituents rate various qualities on their representative on a scale from 1 to 10. Descriptive statistics would provide more valuable information such as standard deviation and a breakdown of ratings by demographics.

Crowd sourced idea generation could lead to novel solutions for hard problems. Anyone can submit ideas and the best ideas are voted up. Discussions revolve around the ideas to help them mature.

The web could be used as an official forum for discourse between a representatives and their constituency where everyone gets a voice. Think of it as a town hall meeting on a national scale. Voting and crowd filtering would make quality questions and comments raise to the top while trolls and inappropriate comments would be voted down and hidden by popular disapproval. The forum also gives the representative a venue for communicating their personal beliefs beliefs on the issues as a well informed, political professional. This is where the organizing and rallying happens.

By being more involved in decisions and having a high frequency of iteration, it strengthens the feedback loop that citizens feel through exercising their rights. Psychologically, many people would feel more connected to the democratic process and would hopefully be willing to contribute a greater amount of mental energy toward the running of their country through greater sense or ownership.

Not without it’s problems

No political system is perfect. While Democracy 2.0 could be a vast improvement, it doesn’t solve every problem of Democracy 1.0 and it also exposes new dangers. People are quick to point out that electronic voting is unsafe and error-prone. There are secure, open source options, but that is the subject of many other blog posts. Some countries like estonia already employ internet voting using the national ID card as authentication. Great care would need to be taken by the election commission to certify any system used.

The general public is often more susceptible to manipulation by persuasive individuals than an elected official would be. News pundits and politically motivated propaganda is no stranger to Americans today, but the effect could be even greater when the people have greater control over more decisions and it could result in a detrimental effect. Democracy depends on a well-informed public and that value is something we need to instill in our culture regardless.

Mob dynamics don’t always result in the best decision. There are numerous studies showing how the sense of moral responsibility declines in groups more than when acting individually. And sometimes the “most agreeable” compromise is worse than either extreme. We’ve all heard the maxim “A camel is a horse designed by committee.” This is where the role of an inspirational representative is so important in getting their constituents behind a cause and guiding the conversation toward an optimal outcome.

The idea of a representative has been necessary because people don’t have time or knowledge to wisely vote on every issue, so they instill their trust in their elected official. That problem is still valid, but there are ways of having it both ways. For example, if a constituent doesn’t vote, their vote could be allocated to the representative. Alternatively, those who care deeply about an issue will be represented and those who care less will not be heard. Voting is and always should be optional.

There is still a lot of thought and experimentation that needs to go into Democracy 2.0, but we can move forward in baby steps.

More Resources