It’s filled with tips, advice and knowledge on writing shrinkwrapped software. Although it contains some .NET-specific content, the bulk of the message is language agnostic.
Entries from November 2006 ↓
JD over at DCS Media published an insightful post titled Top 20 Programming Lessons I’ve Learned in 20 Years. A few highlights:
- Always backup your code
- You are not the best at programming. Live with it.
- Simplify the algorithm
- Reminisce about your code
- No project is ever simple
- Software is never finished
Obvious problems are those that everyone knows the answer to, but are really difficult to solve.
Consider the following:
- “We need an electric car that performs like a gas-powered car.”
- “We need a super-fast web search engine that works.”
- “We need super-fast internet connections to our homes.”
- “We need high speed wireless internet everywhere.”
- “We need a phone/PDA/MP3 player that’s small, easy to use, and has a long battery life.”
- “We need a computer that can predict the stock market.”
If you solved any of these problems you would be in the position to make billions of dollars (as some companies have done). But the technical hurdles are, of course, tremendous.
A few years ago I often heard people saying “We have cell phones and PDAs, when is someone going to combine them?” Everyone knew this was a good idea. The solution was obvious but the technology wasn’t there until Jeff Hawkins and Donna Dubinsky founded Handspring and turned the PDA market – a market they single-handedly created just 6 years earlier – on its ear.
This was round two for Hawkins and Dubinsky. Their earlier venture was a niche tech company you may have heard of, a small shop called Palm Computing. They had released another “obvious” device no one could build called the Palm Pilot 1000 in 1996, and owned the PDA market for many years before leaving the company in 1998, after which it was wrestled to the ground and slapped around with its own hand by Microsoft.
So they left Palm, founded Handspring, and sold it back to Palm in June of 2003 for $170 million in stock. Two swings, two home runs. If they would take my money I’d invest in their next company.
Which brings me to their next company, Numenta (let’s hear it for smooth segues). A few years ago Hawkins wrote a book called On Intelligence, that’s an insanely brilliant look at the structure of the human brain through the eyes of a computer scientist. Numenta, founded by Hawkins and Dubinsky, is using Hawkins’ model of the neocortex to build a new type of memory system called Hierarchical Temporal Memory (HTM). The ultimate goal is to create machines capable of performing tasks that have never before been possible to any practical degree: flexible image recognition, video image recognition, predicting complex systems based on past behaviors, and an infinite number of others. These are all obvious problems people have been talking about for years.
Given their track record, Hawkins and Dubinsky are set to wreak some serious havoc on the world of computer science. Solving obvious problems once again.
Fast Company presents 43 organizations that are changing the world. These organizations have improved the lives of tens of millions of people through technology, microlending, tutoring, mentoring, and a slew of other approaches.
Some notable mentions:
- Grameen Foundation – founded by the 2006 Nobel Peace Prize winner.
- Endeavor Global – created 38,418 jobs in 140 companies, 96% of which stay in business longer than 42 months.
- Heifer International – served more than 7.5 million families since 1944. In fiscal 2004, it placed 384,000 animals; 203,000 livestock offspring were passed on to other families.
- KickStart – Fights poverty in sub-Saharan Africa by selling low-cost technology that dramatically raises farmers’ crop yields and incomes. As a result of their technology, 225,000 people no longer live in poverty.
I’ve been talking with a company located near LAX that meets almost all of Rob’s Criteria for Keeping Your Developers Happy.
As you might expect, they are experiencing quite a bit of success and are expanding like crazy. In fact, they’re looking for four .NET developers from entry- to Mid-level. The key is that you need to have a powerful entrepreneurial drive.
They are a consulting firm that helps companies or individuals get their software product online. This space is booming as people scramble towards the software as a service model. They also cater to entrepreneurs and startups.
The development environment rocks: it’s all new technology (ASP.NET 2.0, SQL 2005, AJAX), small teams (2-3 person teams), short projects (3-6 months), virtually no legacy development, and the pay is good and includes full benefits. Although they’re a consulting firm they don’t have travel requirements. Profit sharing is available.
Bottom line: if the idea of cranking out web applications for entrepreneurs sounds like a dream job, you have at least some .NET experience and you have that killer entrepreneurial drive, drop me a line at firstname.lastname@example.org. Include your resume and a cover letter and “LAX” in the subject.
There are good problems and bad problems when developing software.
A good problem is designing an elegant caching mechanism for your configuration variables, or determining how to architect your service oriented architecture so it doesn’t look like the New York subway system.
A bad problem is figuring out how to re-architect your code to work with a partner whose API goes down twice a day, spending three hours trying to get your code into source control, or filling out ten minutes of paperwork for a five minute code change.
Paul Graham makes mention of this in Taste for Makers:
“Not every kind of hard is good. There is good pain and bad pain. You want the kind of pain you get from going running, not the kind you get from stepping on a nail. A difficult problem could be good for a designer, but a fickle client or unreliable materials would not be.”
And in Great Hackers:
“One of the worst kinds of projects is writing an interface to a piece of software that’s full of bugs…you don’t learn anything from [doing this]. Writing a compiler is interesting because it teaches you what a compiler is. But writing an interface to a buggy piece of software doesn’t teach you anything, because the bugs are random…Working on nasty little problems makes you stupid.”
Bad problems are not interesting, not fun, and they teach you nothing. They create frustration and, given enough of them, will eventually cause burnout.
I’ve seen a string of bad problems last for months, and cause developer after developer to leave a company in search of more interesting work. Bad problems wreak havoc on your ability to meet Rob’s Criteria for Keeping Your Developers Happy.
Look at any large financial institution, government agency, and [insert name of large organization that considers developers to be a cog in their wheel here]. I’ve worked at a few of these companies, and often hear developers who are out of work joking: “If things get bad enough I could always go work for Company X.” Ouch…tell me that doesn’t hurt your ability to find good people.
On the flip side, look at Google, Fog Creek Software, and SourceGear. I’ve never worked at these companies, but evidence is strong that good problems are at the forefront of their agendas. And by some shocking coincidence they get a bazillion resumes for every open position.
A steady stream of good problems is the foundation for keeping your developers happy. Minimizing bad problems and maximizing good problems should be every development manager’s #1 goal.
November 17th, 2006 — Advertisements
OnTime 2007 is a bug tracker, issue tracker, task tracker, and help desk ticket tracker that relies heavily on AJAX. OnTime 2007 is currently in beta, and you can get 3 months of their hosted solution free by signing up here. There’s a video that runs through the AJAX front-end and shows how the new web version responds more like a Windows app. I would like to see a video that steps through the major functionality of the application, as video demos are huge in helping people get a high-level understanding of an application.
One thing I like about OnTime is that their previous version, OnTime 2006, comes with a VS.NET client so you can access it without leaving your IDE (assuming you’re a .NET developer). I’ve seen this attempted before, but it looks like the OnTime guys have pulled it off pretty well. I hope they’re thinking of doing the same for the 2007 version, because this is a major selling point for the .NET shops I work with.
OnTime offers a hosted solution, or you can host it in-house. They also include a feature list & comparison with their competitors (including FogBugz).
OnTime offer the product free for single-users, and are currently offering teams limited beta accounts with 3 months of free hosting service. Pricing starts at $495 for 5 users.
November 14th, 2006 — Cool News, Links & Reviews
Richard Hundhausen will be speaking tomorrow (Wednesday evening) at the next meeting of the San Gabriel Valley .NET User Group. His topic is the SDLC using Visual Studio Team System.
If you live near Pasadena this is a cool oppurtunity to listen to a Microsoft Regional Director, VS Team System MVP, and author of “Working with Visual Studio 2005 Team System.” For $5 you get pizza and a chance to win some just-released books and software (including Infragistics controls).
Doors open at 6pm. For further details, see the SGV.NET website.
November 13th, 2006 — Cool News, Links & Reviews
An MIT-designed whiteboard performs handwriting recognition and real-time physics simulations. How long until someone builds WoW on this thing?
Hat tip to Paul Watson.
November 9th, 2006 — About this Blog
Community Server can’t handle an ñ in the title of a post (Unicode!), so the Spanish speakers out there will have to forgive me.