Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Of course you will need a programming language! But what other things that you should know before you build your first steps for a large website which will be for the community!

  • What else do you need to learn in the programming language itself?
share|improve this question

closed as not constructive by Walter, Yannis Rizos Apr 19 '12 at 12:21

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
If you wish to manipulate these foolish mortals, you should know: (foolish human) sociology, (foolish human) psychology, etc. –  muntoo Feb 24 '11 at 0:10
7  
This is one of those questions where I feel that the (slightly bastardised) maxim, "If you have to ask, you probably shouldn't do it." applies. –  Orbling Feb 24 '11 at 0:23
1  
The most important thing to learn is how to wisely spend the billions of US $$$'s you'll make. –  S.Lott Feb 24 '11 at 0:38
2  
What you need to know is that the social media bubble is over-inflated right now. –  Job Feb 24 '11 at 2:39
1  
The market. You are competing against several very large, well established companies. How do you expect to turn a profit? –  P.Brian.Mackey Feb 24 '11 at 3:15

4 Answers 4

But what other things that you should know before you build your first steps for a large website which will be for the community!

The most important thing to know is that you'll never build a large web site.

No one builds a large web site.

They build a small web site which grows.

Never think "big". Always think "useful".

If you have the right features and more people come to you, then you can think about big. Later. After you've achieved "useful"

share|improve this answer
    
This comment hit it square on the head, these sites did not start off huge they started of small and grew. (And had growing pains along the way) –  Zachary K Feb 26 '11 at 20:05

A similar questions was asked, Amount of man hours to write a social network, to which I gave an answer that I will summarize here:

  • Language: You need to not only know "a language" you need to know enough to choose one which will suit your needs. One that is:

    • Popular. If you become the next Facebook, you're going to need a lot of developers. Facebook reportedly has nearly 500.
    • Scalable. Nearly any language can be scalable - if you have the know-how to mess with the internals. That article is all about how Facebook hacked PHP to be scalable: PHP extensions in C++, rewriting parts of the Zend Engine, and eventually writing a compiler which transforms PHP into C++ code and then compiles it.
  • Architecture: One you've chosen a language, how will you build an architecture that will scale? It's unlikely that any framework is going to help you unless it's already an open-source social network platform (maybe), or you plan on just dumping it and rewriting everything as soon as you've got a few hundred thousand users.

  • Data Structures: Having a complete understanding of Graphs (and implementations of them) will be essential in building any kind of social network that will scale. Other data structures will be needed for statistical data, large file storage, etc.

  • Databases: You're going to need to understand both horizontal and vertical database scaling. You'll likely need to understand what data you will need when and where, so that your statistical aggregate data can be pulled from an immensely large, fast-read, low-insert database. (See http://www.facebook.com/note.php?note_id=89508453919)

  • Features: Depending on your features, you may need to know about several different things:

    • News feed. Pulling in data from all features of the application for hundreds of connections per user, scoring it for importance, and displaying it in real-time. Realize that the uniqueness per user of the scoring relevance and sheer number of concurrent users makes caching of any kind an insanely difficult problem.
    • Photos/File uploads. Not just your average photo sharing site. How/when are thumbnails generated, stored, and served? What about full size images? These must come from a CDN of some kind otherwise you'll quickly be overloading the bandwidth of your average data center plan. How do they get there? What about user interface? Multiple uploads, invalid images, live editing (rotating, etc.)? What about tagging?
    • Security/Permissions. This one is a beast. Just the architectural concepts alone, let alone coding it in a way that doesn't bring down your servers the first time you need a complicated check (All wall posts and photos and comments that I can see from a friend of a friend). On Facebook, not only can every category of data have custom permissions, but almost every post can too! In the end, the UI must also know ahead of time what the permissions will be so you don't present the user with invalid links.
    • Likes/Connections/Social Graph. If you thought the graph you created with friend connections was insane, now extend it to the ability for every one of your users to "like" anything on the internet. Create a full-fledged API for this, and allow content-owners to come into Facebook after the fact and access the page created by this data.

Some of the knowledge of how this stuff works is pulled from Facebook Engineering team's Notes, which is an absolutely indispensable resource if you are developing in this space.

share|improve this answer

Probably who all it applies too, and what constraints you have. There are alot of factors in building a website like:

  • Demographic (Who does this apply to)
  • Cost (how much will it cost to maintain this site)
  • Language (What programming language should I write this in?)
  • Size (can I write this on my own in a decent amount of time......do I even know how to?....will I need help?)
  • Is it needed (Is there a site that does the same thing.....but better than something I could do? If so is it really neccesary to make another one?)

Just some things to consider...

share|improve this answer

Large systems that work came from small systems that worked. Fame and fortune are things people fall into while following their passion.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.