views:

169

answers:

6

I have an idea of a social network website and I will be working on it alone on my free time.

My goals are :

  • get introduced to web development
  • to improve my skills (programming languages, frameworks, scalable architectures, ...) for my personal pleasure and to improve my CV
  • transform the project into a startup if I realize it can be successful, or use the knowledge I learned for other ideas if they come in the future.

So I would like to ask you if you can give me advices concerning the following points (or any other points) :

  • tutorials
  • programming languages and frameworks (I don't mind learning new ones)
  • architecture
  • hardware (do I need many machines for developing, testing, CI, ... or is my 2GB MacBook Pro sufficient)
  • source control, CI, testing
  • with which part should I start ? client side, database, ... ?
+2  A: 

Languages: You can check out Groovy for web dev.

However if you wan't to enhance your CV; Java+JSF looks good also.

Source Control: GIT

You should begin by doing a test database on your development machine and do some simple screens to access the data with Groovy.

I personally loved Groovy however professionally I use Java+JSF frameworks on J2EE big Weblogic servers.

Yeah, not very... Groovy.

Rui
A: 

I would definitely go with Ruby on Rails. The Ruby language is great and the Rails framework is perfect for this kind of stuff. There is a learning curve but it's worth it! You are on a Mac so that's good, because it will already have Ruby and Rails, and you get to use TextMate.

Good places to start would be the Ruby on Rails site. As for learning Ruby I would definitely recommend why's (poignant) guide to Ruby.

As a side note, I would not recommend going down the "social network" path. There is already a crazy number of social networks, and it is probably a bigger job than you realise. Have a read of this before you start.

I also think it would be a big mistake and possibly a missed opportunity if you plan to "transform the project into a startup" only if you "realize it can be successful". You should go into the project with a solid business (or at least marketing) plan or you will fail.

TandemAdam
+4  A: 

To create a new social network on the scale you are probably thinking about is a huge, huge undertaking. It would generally not be an 'introduction to web development' exercise, it would be a 'masterclass in collaborative, experienced web development' exercise - to implement it correctly, anyway.

It seems that to jump ahead and think about languages is missing out a few very significant steps that are required for software design - especially given the number of valid options for languages and platforms. It would be better to start by thinking about some system design: users, use cases, perhaps a range of entity / ERM design; some point after that you might consider backend storage. Thinking about user load, user experience, extensibility and the feature set you could start to weigh up languages and platforms.

That said whenever I have an idea I think is cool I'll usually just do rapid prototyping cycles; but for something as huge as a social networking site it will become increasingly difficult to refactor, especially if it's just you on the team.

Obviously I'm reeling off all this to try to suggest there's a lot of thinking to be done. My actual advice would be - grab a load of paper, sketch out as much as possible, starting at a high level (say, the different screens users will interact with) - solve problems (eg sketch out states of objects) on paper, and start small / aim low to begin with. Better to have a simple messaging system with text and photos (to be honest, to get that polished finished and working well, that's a feat in itself) that works than a haphazard broken buggy extended profile system with messaging, photo galleries, 'wall' system, groups and so on.

There is plenty of tasty technology out there, eg RoR, but with a project as deep as that there will still be a lot of research and head-scratching moments. So having some level of overall project scope will help keep things on track and managable, as will any amount of planning prior to getting coding.

Just some food for thought.!

Kieren Johnstone
A: 

To answer the question: "How to start building a new social network ?"

I would recommend going outside and talking to some real people.

After reading the rest of your question, specifically the part about turning your idea into a startup, I would say again: go outside and talk to some real people. You're not going to take on facebook sitting at home alone chatting with stackoverflow users, but if get out there and discuss your ideas with some other developers in the real world you might some day be able to carve out a niche in the social networking landscape.

Doug
A: 

tutorials

Pick any web development tutorial at random. Seriously. Start with Oracle, IBM or HP. They're all good. Read something. It doesn't matter what.

programming languages and frameworks (I don't mind learning new ones)

Toss a coin. Seriously. If you know nothing, pick any language. If you already know a language, use that. Find a framework in the language you already know.

They're all good. It is exactly a coin toss. The reason there are so many choices is because of this fact: They're All Good.

architecture

What?

hardware (do I need many machines for developing, testing, CI, ... or is my 2GB MacBook Pro sufficient)

This is uninterpretable. Yes, you need a computer. Any computer. What more do you need to know? You don't have a language, tools, framework or concept. So hardware seems a bit premature.

source control, CI, testing

Yes.

with which part should I start ? client side, database, ... ?

Data lasts forever, so the database has to come first.

S.Lott
+1  A: 

Programming language: php

Try to create your own framework. Keep in mind that it have to be fast and minimal to run a social network.

You may want to look into something called PDO for php. Also; you need a database catching system (f.ex. Memcached).

Also standards are a good thing, try to implementate them. Here are some examples:

  • Activitystrea.ms
  • Portablecontacts
  • OAuth
  • OpenSocial
  • FOAF
  • OpenID
  • Xmpp
  • vCard
  • XRD
  • RDF
  • Rss/Atom

There are some projects going on to create new social network, among those you got:

  • Onesocialweb
  • Noserub
  • Diaspora

You may want to check them out. Especially Diaspora could be interesting. If you create a new social network, you may want to add support for users to use their own Diaspora server to host their contact info.

About tutorials: google stuff I have mentioned. Theres enough stuff about most of it. Have fun creating and learning :)

Knarf