Archive for the 'philosophy' Category

Arguing for software testing in difficult environments

I’m a ThoughtWorker. ThoughtWorks is changing the way that enterprise software is delivered. And with that we take firm stances on heavily debated topics. In previous jobs I’ve tried to push test driven development, unit testing, code coverage metrics, continuous integration… all controversial ‘best practices’. Results were mixed.

A few weeks ago I was at a large web 2.0 social networking site working with selenium grid automation. They were great clients, fully receptive to automated testing. Next week I’ll be heading to another leading internet company to work triage:

  1. Work on troubled teams whose code is poorly tested
  2. Enable groups to test legacy code
  3. Attempt to spread a pervasive test driven mindset.

I’m joining a senior team of ThoughtWorkers and in preparation I’ve thought of various arguments I’ve heard (or used myself) against testing code. I’ll be challenged working with these very experienced people, but I am eagerly looking forward to the experience.

Argument #1

Adding all these tests only makes more code to maintain, debug, and write. This can’t be good - I want less work, not more!

Rebuttal: Would you agree code and requirements often change? Would it be valuable if something could automatically and accurately catch bugs introduced with changes? How about if the original developers are no longer on the project? Testing can enable less work — in a dynamically changing environment. Immediately the work is greater, but over time it is less.

Argument #2

Ok, fair enough, there are some good reasons to do this. BUT, when I want to change something later, I now have two points of failure - the code I’m changing, and all the tests that depend on that code. I haven’t really bought myself all that much security, because if my tests don’t catch the problem well, I’m just as hosed as if I had no tests. Source: first comment from here
Rebuttal:

  1. You get better and faster with tests the more you write them.
  2. By writing tests you further understand the business domain and craft a better thought out solution.
  3. Whenever making changes in the future you actually have 1 + n points of failure. That which you are changing plus the other interacting systems within the code. By writing tests you will automatically catch the interactions, as well as the initial point of failure. Sure the tests need maintaining, but now with two things to maintain, you catch (almost all) these failure points.

Argument #3

I generally think testing is a good idea. But I’m stressed out, I’ll get to it later… tomorrow I’ll add tests… as soon as I get this working
Rebuttal: Take a page from Agile Software Development: Principles, Patterns, and Practices by Robert C. Martin.. He argues for refactoring but since the two concepts are so tightly entwined, I think the argument applies here:

“Refactoring is like cleaning up the kitchen after dinner. The first time you skip it, you are done with dinner more quickly. But that lack of clean dishes and clear working space makes dinner take longer to prepare the next day. This makes you want to skip cleaning again. Indeed, you can always finish dinner faster today if you skip cleaning, but the mess builds and builds. Eventually you are spending an inordinate amount of time hunting for the right cooking utensils, chiseling the encrusted dried food off of the dishes, and scrubbing them down so that they are suitable to cook with. Dinner takes forever. Skipping the cleanup does not really make dinner go faster.”

Skipping testing does not really make software development faster, because changes are guaranteed. (You’ll have to cook another dinner eventually). Without an easy way to baseline and build upon existing code, time is spent bugfixing that could instead be adding features or writing new tests.

Argument #4

I’m awesome. I don’t write bugs. So I don’t need tests.
Rebuttal: Great. I’m excited to be working with you. I’m sure I’ll be able to learn a great deal. I imagine you like fresh challenges. And in six months or a year this current project won’t be as interesting to you as it is today. In fact, you’ll be on to something more challenging and worthy of your awesomeness.

So that means someone else — possibly a junior developer — will be maintaining and working on this code. Without tests, they will be frequently seeking your assistance and guidance to prevent bugs. This is not what you want, is it? You want new challenges, not constantly being hassled by old code. So write the tests now to ensure your ego and intellect can move forward to bigger and better things.

Elaborating and paraphrasing, Neal Ford argued at eRubycon 2007:

Now I look at not testing as professionally irresponsible. I’m paid to create software, to deliver on a client’s business needs. If I don’t rigorously and automatically ensure I have accomplished this with the minimum amount of bugs — I am committing malpractice.

What arguments have you encountered, and how have you responded?

Posted on 17th October 2007
Under: philosophy, technology, software engineering, teaching, leadership | 1 Comment »

Success in Web 2.0 - Notes from Paypal cofounder Max Levchin and YouTube cofounder Jawed Karim

I went to the ACM Reflections Projections conference this weekend. There were top speakers, including the co-founder of Paypal, Max Levchin and the co-founder of YouTube, Jawed Karim. Here are some highlights from their talks.

Max Levchin: co-founder of Paypal.com and current CEO of slide.com

Millionaire Before Graduation: Entrepreneurship in the Post-Post-Bubble Internet

ACM Conference 2

Speaking to an audience of undergrad and graduate students at UIUC, Max stressed if you’re an entrepreneur:

“You should start a company right now.”

But what is an entrepreneur? And what if I don’t have an idea yet?

“An entrepreneur is someone who desperately wants to start companies. He or she doesn’t even care what they are about, or which one.”

The important thing is starting. Max says you’ll never get it right the first time. So start now. Fail a few times while you are young. Paypal was Max’s fifth company. He started his first in his Junior year in college, and every one that wasn’t successful taught him what had to change for the next time.

When you start, the idea is cheap. It’s okay to be mostly interested in starting the company. Some people say in starting a company it is 90% hard work. No, says Levchin:

  • 40% is hard work.
  • 50% is having a great team

When you start a business, start it on the web. Why?

  • It’s really cheap
  • You get really fast feedback

However, don’t start selling something to enterprises. Enterprise sales cycles are slow, expensive, and require loads of salespeople. (You don’t want salespeople on your team early on either. Just tech people.) Make things work, and satisfy your direct-to-consumer audience.

Once you’re up, you need to record metrics on everything. Obsess over all of your data. You’ll discover the pages people actually use is different from what you expected them to use. Iterate. Bring what people use to the front. If you’re still in school, take lots of stat classes. It makes the metrics easier.

Remember you will fail.

Failure is your true test. It’s really good to fail in the beginning… If failing anytime is good: now is best. [So get to work and take risks so you’ll fail, so you’ll learn, so you’ll succeed!]

Tenacity is number one. You must be willing to fail 10 times for success in the 11th.

When you’re succeeding and you need to monetize, Levchin has three strategies:

  1. Advertising - with Google Adsense, and other ad networks
  2. Premium Subscriptions - this is tough though if your competition has these too, and you end up competing on price
  3. Memberships - monthly, yearly, etc.

Jawed Karim: co-founder of YouTube and current masters student at Stanford

YouTube: From Concept to Hypergrowth

ACM Conference 3
Jawed is the 2004 UIUC CS graduate who, after a 5 year tour at Paypal, co-founded YouTube. 19 months after launch, YouTube is one of the most-visited sites on the web.

  • More than 100 million videos are served daily.
  • A new video is uploaded every second
  • The average user spends 30 minutes on YouTube per day

Prior to YouTube, what did video sharing look like? FTP uploads to a private website [or peer to peer] was the best way to share a video. People without websites and technical savy couldn’t share. Downloaders would have to download the full file, have the right codecs, and finally be able to view the clips. Discovering other related videos was not easy, and there was no way to post comments about a video you enjoyed. In 2004 the “Bit Torrent effect” emerged, which was scalable - but it lacked social aspects, simplicity, and was mostly for hard core geeks.

In 2005 Jawed and friends decided to create some sort of video sharing app inspired by Flickr and hot or not.

On Feb 14, 2005, work began.
ACM Conference 1

We launched the site with a bunch of “stupid videos” … except no one one used it but ourselves. We pitched it to our friends. We wrote to all the Wired reporters (no replies). We talked to lots of VC’s (they didn’t call back.)

By May 2005, it was very frustrating. 50-60 videos were uploaded. They had an idea:

We posted an ad to the San Francisco Craigslist asking for girls to post videos to YouTube. If we thought they were attractive, and they posted 10 videos, we would send them $100 via Paypal.

No girls responded.

In June 2005 YouTube got revamped. “Related Videos” was added, to make the site more sticky. And instead of Jawed and co-founders spamming all their friends, they added a button “Email a friend” so the visitors could do that for them. Everything was changed to encourage user interaction. Make people want to spend more time on the site.

August 2005, YouTube gets Slashdotted. Things started taking off from here. The community did things they never expected. People would leave video responses to other people’s videos. So they created the Video Responses product. Pretty soon they had $3.5 Million in capital from Sequoya, and then you all know about the Google acquisition.

One lesson Jawed pushed home was:

Just because experts reject an idea does not mean it is a bad idea! In certain areas, there are no experts.

If you’re out there creating innovation, you may be the expert.

As we look for the next big thing, Karim suggests it will explode from newly emerging secondary technologies. Start a company that will make something that was previously difficult, easy.

And expect failure. Jawed worked on numorous other projects that failed, before hitting big with YouTube including a geographic aware IM client that grew to about 50,000 users before he pulled the plug. An interesting article about him, as the silent YouTube partner, may be found here.

Update 10/28/2006: A video of Jawed’s presentation is now on YouTube, watch it below:


Posted on 22nd October 2006
Under: philosophy, technology, software engineering, conference, entrepreneurship | 2 Comments »

Microfinance to alleviate global poverty through capitalism?

Microfinance in developing nations holds the promise of eradicating poverty through capitalism. Does it work? What is microfinance? Here’s a (biased) video emphasizing microfinance’s benefits.

Mike Murray of Unitus Co-Founder and discusses his initial misconception of the poor in developing countries:

“I thought the poor in developing countries probably lacked work ethic, they didn’t try hard enough. You know if they would just put their shoulder to the wheel, and try a little harder, and maybe wake up a little earlier, and just go for it like we do here in America. Then they’d have a better life. Well shame on me, these people work incredibly hard. They have to, because if they don’t their babies starve and people die. Their life stops! There is no safety net to catch them if they fall.”

Lorene Arey, President of the Clara Fund claims the poor lack opportunity. As opposed to drive or opportunity.

Mana Otero, President and CEO of ACCION International claims there are millions of poor people around the world who have no lack to financial services.

Financial services? Like IRA’s or maybe the new Roth 401(k)? No financial services like loans at reasonable market rates or banks to save their capital.

Enter Microfinance: a method for the poor to help themselves. It came about first in the 1970’s, by giving the poorest people of the world credit. Yup just like mortgages or those credit cards with beefy interest rates that can eat up a person’s income… the power of credit can allow business development in the developing world. Microfinance is explicitly not a gift. It is a loan, repayable at market rates.

Initially organizations would make loans from US$50 to US$150. Recipients would use the loan to buy capital in a small business, then pay it back with interest. It actually works. Today, not in 20 years. Take venture capital and marry it to poverty, you’ll be surprised at the result.

Most surprisingly (if you’re new to microfinance), the repayment rates are exceptionally high (95%). And most of the loans are made to women. They are found to be more responsible with the money, and investing profits from their business into their families. If this interests you, watch at least the first 5 minutes of the video. This video is only 14 minutes.

Has anyone visited a UNITUS funded business? This video is a pitch for their services, anyone have critical reviews on microfinance? Let’s bring about a balanced, critical analysis of this topic. Thanks for finding this link from Ryan, here.

Eric has funded someone through Kiva’s peer-to-peer microlending program. Anyone else?

Unitus is a global microfinance accelerator that acts as a social venture capital investor for the microfinance industry. Unitus identifies the highest-potential microfinance institutions (MFIs) in developing countries and helps accelerate their growth through capital investments and capacity-building consulting, thus empowering them to help exponentially more poor people worldwide. In doing so, Unitus aims to demonstrate that MFIs can be run as profitable, large-scale, poverty-focused businesses with links to local capital markets. As of October 2005, Unitus had seven MFI partners worldwide serving more than 504,000 poor clients.

Posted on 19th October 2006
Under: economics, investing, philosophy, international | 11 Comments »

Broadband as a driver in social progress and economic development

There is an interesting videoconference on Broadband as an economic development driver by Steve Rosenbush, senior Writer at BusinessWeek Online engine.

http://www.iian.ibeam.com/events/mcgr004/14273/index.jsp?autoLogin=false lets you log in. It should be free, although you may need to create an account.

Some interesting tidbits:

  • The US has 94 telephone lines per 100 people.
  • Developing countries may only have 5 lines per 100 people.
  • A 1% increase in phone lines leads to a 3% increase in GDP
  • Nov 2003: 35% of US internet users had high speed access, May 2004: 42%, Dec 2004: 50%, 2005: 53%+

Dr. John Rudledge of Rudlege Capital, LLC (Economic Advisor to Reagan and Bush) talks about what is broadband. He suggests it is a verb, not a noun. It means you’re faster than everyone else. Once the “Pony Express” was broadband, now it is wireless and cable internet, for some it is optical fiber to the desktop. He continues,

“I think of broadband as the Central Nervous System of the economy…. America is not competing for jobs, but capital. Capital makes you productive and allows you to earn a paycheck. We need to learn to compete for capital with other countries in the world who know the importance of telecom capital. … China’s current energy use 20 years in the future (with no conservation) uses more than total world production today. … Because of that impending clash, they are shifting resources from oil and gas industries to IT growth [and efficiency.] … The US is in 16th place in the world telecom speed tables.

Christina Heakart (?) is the Gen. Mgr. of Marketing for Microsoft TV. She points out that the entire broadband revolution is limited to people using PC’s. It’s helped businesses and homes (with PC’s) into the digital age. In 5-10 years broadband will bring it to the TV. We will see the ignition of enormous new amounts of new commerce, new ways to communicate, unite community, and new content. … Bring the TV in as a full citizen to the digital age. TV will become 2-way and no longer 1-way.

Leo Hinderly, Jr (Managing Partner of InterMedia) claims broadband is not available to all and is in fact discriminatory–favoring urban and wealthy areas; rare in rural and poor areas.

Once again, John Rudledge says there is not (or only recently) a broadband policy in the administration. Most pressure for reform has come out of congress.

“5 years ago 40% of telecom equipment was made in the US, now it is down to 20%. R & D is going as well. Because the manufacturing factor is going, the intellectual aspect is getting more and more important. This year [2005], China will make more engineers than America + Germany + Japan.”

Christine advocates the free market to “wave it’s invisible hand” that will allow economic models to emerge for the digital divide to reunite. Most people that are poor don’t have PC’s. They have TV’s but not PC’s. It doesn’t matter if they have broadband in the home if they can’t use it.

About Christine’s point with poor not having PC’s — the open source community in Chicago has been working on creating free machines in exchange for volunteer hours building refurbished PC’s out of donated hardware. I’ve been volunteering there, and I encourage you check out their website at www.freegeekchicago.org With some digging, you can even find some pictures of me, I suspect.

Then they go into a lengthy Q & A where I stopped watching. I’m tired and can use my sleep to arrive at work early and get my laptop to then meet with Chris Perry, CEO and Frank Gruber, blogger extraordinaire (and tech event planner) two fascinating entrepreneurial types.

Posted on 7th June 2006
Under: economics, philosophy, technology, international, globalization | No Comments »

Why I started a blog on economics, finance, technology and innovation

I am a software developer who’s invested in the markets since I was 12 years old. I find economics, finance, technology, investing, fascinating and by publishing to this blog, I hope to meet other like minded people and become a better investor, entrepreneur, and business person.
My goals for this blog are as follows:

  1. Provide aggregated, useful information to investors, technologists, business people and other professionals.
  2. Provide you regular postings of interesting finance and economics related insights.
  3. Teach economics principles and the benefits of open markets.
  4. Highlight interesting fringe areas of economics, such as microfinance, economically tied social issues, and social entrepreneurship.

Topics I plan to cover:

  1. Economics as it relates practically to investments
  2. Technology as it relates to software developers’ careers
  3. Trends as they provide business opportunities and spark innovation
  4. Globilization and its ramifications to all nations
  5. Inequity and social (in)justice in developing nations

You can see this has a focus in international, technology, and economics topics. I look foward to any feedback, please email talk (at) econtechblog.com

Posted on 22nd May 2006
Under: philosophy | 3 Comments »