You'd think that Facebook is a simple idea, right? Write a web site for connecting friends together, and get billionaire. So simple!
I've got one glimpse at the difficulty of getting the right concept while writing such an app.
In 2001, at the university, a classmate and I had to do a project for a student counsellor. He wanted a Microsoft Access database application (yes, that was 2001!) for managing his student contacts. Basically he needed *lots* of information in his database - more than we could write in our first year of CS studies. So we wanted to save summaries of discussions with student, their school curriculum, their hobbies etc.
Well that was almost too much, we delivered a prototype with a pretty complex database model (as complex is when you're in the 1st year of CS). An implementation of core functionalities was done, but nothing that got really used.
For some reason I felt unfinished with this project and wanted to get it running so that it could be useful to someone. Also the idea of structuring lots of information about people really interested me, because these are usually very unstructured data.
So I wanted to continue that but I hated Access. In the meantime, I learned the existence of PHP and MySQL, and really liked the concept and the slickness compared to Access. I reused the over-complex model we had. A person could have many addresses, including parents, work, student dormitory etc. You could save the whole study & work curriculum of this person. All this was taking around 30 tables if I remember well.
So I spent one month in the summer learning about PHP & MySQL. It was a very good learning time, as I hadn't much else to do at that time, except learning German - I was planning somehow getting to make an internship or studying in Germany. So I built a few panels around the persons, there adresses and CV... And quickly realized the relations between the persons would be interesting to model and include into that DB. So I began to do that, included 10 test persons in the database, just to realize that... well, that is wasn't really valuable. It's nice but I could as well have taken a piece of paper and drawn the relations between these.
This is around this point that my other plans with Germany and summer job took me much more time - I just let that programming project before I even saw the value. Why wasn't I seeing it? I think one of the reasons was a "geek bias". I was more interested in scientific data (how many person are related to how many in average,...) that on providing my friends a fun tool. And most of all I was also not really seeing the value outside of my home computer, where I wrote this stuff. Had I thought to a public website... Well I didn't, end of the story.
When I heard of Facebook for the first time, I immediately thought of this website I wrote once. That gave me a good lesson about ideas and (not seeing) opportunities.