Some people in this world are blessed with money and others with time. The ones with time are students and enthusiasts who dream and build their dreams themselves.. hmm enough of philosophy and i will jump into the point..
I had been querying people with experience in web development and especially those who are heroes at social networking platform. Many people build a site either to test their luck or to showcase their talent. You can put it on your resume or a model to attract freelancing jobs.
The first question to ask yourselves is why do you want to build a social media site.. The answer may be anything that convinces you.
Based on your answer for the previous question, the features, budget and other factors matter. For example if you want to grow as a site with million users, then you undoubtedly need a huge budget or good skills with perseverance to start and grow in a lean way.
The technologies which i believe are very basic requirements and the developers need to know are
I remember me working on a project an year ago where we got one of the basics wrong. We chose a HTML + CSS template online but failed to use master page concept there. So every time to update a Hyperlink, we used to modify in around 80 webpages. So master page is mandatory. If possible a different header and footer page.
PHP is called language of the web and around 70% of the sites run on PHP. I dont have any experience on PHP projects. I had used J2EE servlets and JSP. It worked well. I advice you to follow design patterns if i am not wrong. A proper MVC architecture and good separation of code for maintainability, delegation among developers. For Development we used Eclipse and Apache Tomcat Server. If you are a beginner, get familiar with http error codes and make lot of mistakes.
The database choice would be mysql. Its easy to connect and it goes well with PHP. In J2EE I had used JDBC concepts for connectivity. This code should be kept in a seperate layer and if possible store the query in a xml file and read it in runtime. So in java we can avoid compiling and .Class file generation. Get the primary, foreign key relationships correctly and avoid dropping and recreating tables unnecessarily. As you work in a project, you may need to have separate insert scripts to insert data into tables instead of manual entry. use the concepts of indexing to increase the performance.
The above concepts hold good for web application. In social sites, a lot of custom scripts are required. Example upload a photo, organize and edit them online etc. So a lot of hardcore coding is required.
Do you want the page to be rendered slowly or fastly on your client machine. The answer is always fastly. Use Server side Caching to avoid delay and reducing database calls. One of the popular caching is MemCache. I havent used it in real projects.
Its not over, you need to have a testing strategy. Follow micro optimization correctly so that you need to worry fixing bugs while integration. Once integrated you may have new bugs to fix. Once maintenance and enhancement phase starts regression testing is mandatory.
For a social site, growth is necessary but creates new problems. You may need to even buy dedicated hosting and huge server space to store users photos like “A pup eating dog biscuits” and whose size is 4.9Mb. Though its sounds simple.. there are 1000s of such photos that might get uploaded every minute. So you may even have to learn Big Data concepts, Data WareHousing etc..
But dont worry, once you site starts growing. You may either take VC money or your website generated money to hire good talented people and they will do it for you.
Happy prototyping and learning..
Advice you to share the good development practices in the comment threads..