Wie kann ich sowas wie Facebook programmieren?

10 Antworten

Hinter einer Seite wie Facebook stehen Millionen von Arbeitsstunden. Aber etwas einfaches in der Art kann man tatsächlich selber programmieren. Mein Rat: fang einfach mit etwas einfachem an. Welche Technologie du dafür verwendest bleibt dir überlassen. Auf der einen Seite wirst du für das sogenannte Frontend HTML und CSS Kentnisse brauchen, später auch Javascript. Im Backend kannst du Java nutzen oder auch PHP, Python, Javascript (Node.js) oder eine von vielen anderen Prgrammiersprachen. Ich persönlich bin kein Fan von Java aber das bleibt jedem selber überlassen.

Also: fang einfach an und ziehe es durch. Für ein solides Grundwissen kann ich empfehlen tatsächlich ein paar gute Bücher durchzuarbeiten. Weitergehendes Wissen findest du im Internet in Form von Artikeln, Tutorials, YouTube Videos und Foren. Das Wissen liegt sozusagen auf der Straße.

Später solltest du dich mit Frameworks beschäftigen denn so gut wie niemand programmiert so was heutezutage noch in reinem Code sondern verwendet einige der vielen Frameworks die einen bei der Programmierung unterstützen. Aber am Anfang solltest du erst mal die Grundlagen ohne Framework lernen.

Android Studio ist für so eine Aufgabe ungeeignet, das verwendest du nur um Android Apps zu programmieren.

Programmiere ist übrigens mehr als nur das Verstehen von Syntax und Strukturen eine Programmiersprache und Auswendiglernen von Funktionsaufrufen. Das ist nur der Anfang. Um ein guter Programmierer zu werden muss man viel über Design Patterns, Best Practices, Automatisiertes Testing, Entwickungsstrategien, Versionenkontrolle und noch viele andere Themen lernen. Es ist ein weites Feld das sich ständig weiterentwickelt.

Woher ich das weiß:Berufserfahrung – 20 Jahre Berufserfahrung

Auch wenn ich es immer gut finde, wenn auch die Jugend was über Programmierung lernen möchte so sehe ich hier keine Chance auf erfolg. Nicht so wie du es darstellst.

Eine Analogie wäre z.B.:

Du hast gerade ein Papierflugzeug gefaltet und möchtest nun allein eine Boeing 747 bauen.

Klingt unsinnig oder? Das selbe gilt auch für deine "Idee"/Wunsch "sowas wie Facebook" selbst zu programmieren. Bei einem realen Flugzeug sieht man immer wie kompliziert und groß das Ganze ist, bei einer Webseite nicht, dabei ist die Webseite wahrscheinlich inzwischen Komplexer als das Flugzeug....

___________________

Du möchtest aber gern Entwickeln? Das ist gut. Setzt dir aber realistische Ziel. Mit deinem jetzigen Wissen nach den Sternen zu greifen wird dich nur frustrieren, denn du WIRST scheitern.

Lerne die Grundlagen. Baue kleine Projekte und lerne. Wenn du dann in einigen Jahren mehr Verständnis für das Ganze hast, DANN und nur dann kannst du die gesamte Angelegenheit objektiv betrachten und den Aufwand abschätzen.

Aber um mal auf deine Fragen einzugehen:

a) Bücher, Internet, Kurse. Quellen für Informationen gibt es unzählige. Danach heißt es üben, testen, ausprobieren.

b) Ausgehend von deinem jetzigen Stand: Ca 5 Jahre Vollzeit (mindestens 40h pro Woche) bis du die Grundlagen wie Programmierung, Frameworks, Softwaretechnologie, Algorithmierung etc. halbwegs drin hast. Im Anschluss wohl noch einige Jahre Entwicklung.

Hilfe in Form von "Fragen stellen und Antwort bekommen" bekommst du überall im Netz. Die Seite Stackoverflow ist dabei für mich als IT-ler sehr interessant. Ist zwar auf English, aber die Sprache musst du sowieso gut beherrschen, da schließlich gefühlt 80% aller Dokumentation und, Erklärungen eh auf Englisch sin.

Hilfe in Form von "Wer will das mit mir zusammen machen": Erstmal gar nicht. Erst wenn du ein Prototyp oder zumindest eine ausgereifte Idee hat wird sich irgendein Entwickler überhaupt für deine Arbeit interessieren. Keiner investiert seine Zeit in das Traumschloss eines Kindes.

c) Android Studio ist eine IDE. Sie ist vorrangig für, "aufpassen", Android Entwicklung ausgelegt. Da du hier aber einen Webdienst aufbauen willst, bietet dir das Ganze keinen nennenswerten Vorteil. Wenn du bei Java bist kannst du einfach Eclipse oder IntelliJ IDEA nutzen.

Woher ich das weiß:Berufserfahrung – Java Entwickler
TeslaRoadster20 
Fragesteller
 09.02.2018, 22:52

danke für dein Kommentar. Ich weiß ich werde scheitern, aber ein Versuch ist es wert.

0

Das Hauptproblem bei solchen Systemen ist nicht der Client, sondern die Datenverwaltung im Backend auf den Servern. Wenn so ein System nämlich wirklich von vielen Nutzern angenommen wird, dann entstehen da tonnenweise Daten, die effizient und ausfallsicher gespeichert werden müssen, und wo insbesondere auch schnelle Such- und Ranking-Operationen durchgeführt werden müssen.

Der Server muss den Clients (also z. B. Webschnittstelle, Apps für die verschiedenen Mobile Devices usw.) Schnittstellen zur Verfügung stellen, über die dann effizient Funktionen wie "gib mir mal die Timeline", oder "hänge da einen Kommentar dran" bereitgestellt werden müssen.

Mit einer relationalen Datenbank wie MySQL o. ä. kommt man bei Projekten in so einer Dimension nicht weiter. Das wäre viel zu langsam. Da müssen eigene Datenstrukturen her, wo insbesondere auch für Ranking- und Empfehlungsaspekte passende Indizes aufgebaut/mitgeführt werden müssen. Diese Daten müssen dann noch dazu sehr effizient gespeichert werden, weil es um sehr große Datenmengen geht, wo man selbst mit heutigen Servern schnell in Speicherplatznot kommt.

Denkbar ist auf der Serverseite eine Realisierung z. B. in C++. Die Sprache eignet sich insofern gut, als dass sie einerseits objektorientiert arbeitet, zum anderen noch sehr maschinennah und damit performant ist. Die OO-Modellierung braucht man, weil dieser ganze Social-Media-Quatsch nunmal sehr gut in (geschachtelten) Objekten abbildbar ist.

Wie solche Objektstrukturen aussehen können, magst Du Dir vielleicht mal am Beispiel Twitter selbst anschauen. Die Twitter-API inklusive des nach außen sichtbaren Objektmodells ist nämlich offengelegt. Da kannst Du Dir mal anschauen, was für Daten grundsätzlich anfallen, und was für Operationen man unterstützen muss.

Das wäre im übrigen auch eine Anregung, wie Du da weiterkommen könntest: anstatt das ganze Ding von vorn bis hinten selbst bauen zu wollen, könntest Du Dich erstmal auf die Clientseite konzentrieren und z. B. versuchen, einen eigenen Client für Twitter zu entwickeln. Oder zumindest für ein paar Basisfunktionen. Da gibt es im übrigen in der Open Source durchaus teilweise auch quelloffene Implementierungen für einzelne Funktionalitäten, wo Du Dir Dinge "abgucken" könntest.

Also erstens Mark Zuckerberg hat nicht ganz Facebook alleine Programmiert.

Ich habe mir selber HTML 4 beigebracht in dem ich mehre Bücher drüber gelesen hab. Jetzt haben wir in der Schule auch Info und ich kann jetzt auch Java, aber was mir hilft ist ich programmiere z.B. gerade ein Spiel und ich kenne einen Befehl oder eine variable nicht, dann guck ich schnell ins Internet und hab die Lösung. Aber ich lese auch gerne abends im Internet PDF´s oder andere Texte die Java erklären. So jetzt sollte A geklärt sein. B: Du wirst wahrscheinlich lange dafür brauchen, aber ich weiß ja nicht genau was du programmieren möchtest.Wenn du mir sagst was du machen willst kann ich dir ja vielleicht helfen. C: Ich kenne mich kaum mit Android Studio aus ich präferiere und benutze Notepad++. Man muss grundlegend auch unterscheiden zwischen App und Website. Aber so ein riesiges Programm wie Facebook kriegst du nie alleine hin ;)