Posts Tagged ‘software’

Google Summer of Code 2011

Friday, April 1st, 2011

Since 2005, Google has led a wonderful open source program called Summer of Code. The goal of that program is to promote open source software development.

Google invites open source organizations to propose ideas that could benefit the world, and asks the organizations to mentor students to develop these ideas and released them as FOSS (free and open source software).

When a student is selected for the program, they work during their summer vacation and receive $5000, a t-shirt, swag and a participation certificate from Google.

Google has run this program every year since 2005, and the results are stunning. Many projects are now used around the world, and  some projects have themselves become open source organizations.

To give you a better perspective about this wonderful effort, here’s an introductory video from one of the participating mentoring organizations for this year’s program:

And here’s a video from Chris DiBona, the manager for the program at Google, on the history and the impact Google’s Summer of Code has had on the open source community.

If you have any questions about the program, please feel free to ask in the comments below.

Small business and startup issues: choosing the wrong software

Tuesday, November 30th, 2010

More than ever, small businesses and startups must execute and bring their software-based products or services to market quickly. As Groupon has demonstrated, there is often (but not always) a huge first-to-market advantage.

One risk of moving fast involves selecting software technologies that allow you to bring your products/services to market quickly, but that ultimately may not easily scale to accomodate increasing traffic.

Of course, you always should strive to pick the best technologies. But what if you make a mistake? What should you do if the software technology you pick doesn’t work for you later on?

We struggled with this issue at crowdSPRING in 2009 and completely refactored 100% of our code by the end of 2009, moving from PHP to Python. It was not a fun process.

I hope you never have to go through anything remotely similar. But if you find yourself in a situation similar to ours – here are five suggestions for what you should do when you find that your existing technology just isn’t good enough.

Do you have other suggestions, based on your experience?

Building Great Software: Less is More

Tuesday, November 23rd, 2010

My experience with crowdSPRING over the past several years has proven to me that with few exceptions, startups and established companies should strive to keep their software features simple. Simple features allow you to release software more often and to iterate and leverage feedback from users.

Time and time again, we’ve made the mistake of over-thinking a feature only to learn that we didn’t do a good job planning and took far too long to release that feature. This is a common problem for young startups. In fact, many startups fail to launch a product because they get bogged down with software development and either run out of money, or are left behind by their competitors.

Over the past year, we’ve done a better job – simplifying our scope and iterating more often. It’s clear to me that what we’re doing now – simple, focused features followed by iteration – is the best way for startups to operate.

In the video, I discuss five reasons why I believe companies should strive to simplify software features. Briefly, those reasons are:

1. it is much easier to focus on simple releases
2. it is much easier to launch a simple product
3. real feedback from users is critical to software development
4. shorter software development cycles are more fun and create more energy
5. better overall product

Please watch the video for a more detailed discussion of the five reasons – and let me know what you think.

Do you agree that startups should simplify features and iterate more often?

Choosing Technologies for Your Web Startup (Part 2)

Tuesday, February 9th, 2010

In Part 1 of this blog series, I presented a rather dysfunctional conversation going on between software consultants and you, their client. I explained what consultants mean when they use the word “productivity,” why it gets convoluted, and how understanding this can lead you to making better choices for your company.

I originally promised that in Part 2 I would go into some specific software products. But I’ve decided to postpone that until Part 3, and first tackle another confusing topic.

Part 2: The Two Meanings of Scalability

Like “productivity,” “scalability” is a ubiquitous buzzword in the consulting world, and is also a pitfall for you.

1. Number of Users

For most web startups, the initial launch of the product would likely have a contained number of users: you, the friends you forced to help you test, and possibly some beta testers. Maybe you’re hoping to be in the tens of thousands in the few months after, with users visiting your site every day. Let’s call that “startup scale.” And perhaps the dream is to have hundreds of millions of users hitting your site constantly throughout the day. Let’s call that last one “Facebook scale.”

Dubai TowerThe shift from “startup scale” to “Facebook scale” can happen quickly, and you want to be sure that you choose the best technology for it. Refactoring your codebase later could prove fatally lengthy and costly.

Is your blood pressure up yet?

So, that was the scary story that will probably prompt you to constantly ask your consultant “But does it scale?” Your consultant, in turn, will walk the fine line of giving you the answer you want to hear while raising the scope and cost of the project, possibly even creating milestones along the way, ensuring an ongoing, gainful relationship.

My advice is to stop badgering your consultant about this.

The jump from “startup scale” to “Facebook scale” will be significant, no matter what your initial choice is. Companies handling each scale look very different: the former likely has a monthly hosting plan with a provider and spends a few thousand dollars a month for a few dedicated servers, bandwidth and tech support; the latter owns one or more “data centers,” huge facilities crammed with rows and rows of machines requiring constant maintenance at enormous costs. All this spells entirely different software architectures and priorities, requiring different kinds of technological expertise. In fact, you will likely need to hire new consultants when you get there.

(more…)