Ich bin ein aufstrebender Entwickler, der große Systeme wie PayPal erstellen möchte. Welchen Weg sollte ich verfolgen?

8

Ich bin ein Informatikstudent im zweiten Jahr in Äthiopien, Afrika. Wir haben C und C ++ genommen und ich habe mir selbst HTML, CSS, PHP (auch cakePHP Framework) und wenig Javascript, JQUERY und mySQL beigebracht, um kleine Systeme wie Blog zu entwickeln. Aber ich möchte große Systeme bauen, die sicher und robust sind. Ich bin sehr geehrt, sehr intelligente und erfahrene Entwickler hier in SO zu sehen. Ich bin schwankend, was am Anfang zu folgen ist (zB ASP.NET oder PHP) und welche anderen Sprachen oder Systeme ich lernen sollte, um das zu ermöglichen. Danke im Voraus.

PS. Ich kann mit jeder Art von Mathematik umgehen.

    
coderMonkey 31.08.2010, 08:43
quelle

7 Antworten

6

Ich fühle mich wie ein alter Mann, wenn ich das sage, aber mit der Zeit werden Sie feststellen, dass die zwei größten Herausforderungen in der Softwareentwicklung sind:

  • Wiederverwendung von Code - In der Lage, Code zu schreiben, der wiederverwendbar ist. Es ist nicht einmal offensichtlich, dass Code im Laufe der Zeit wiederverwendbar ist, und zwar innerhalb derselben Software, für die er geschrieben wurde . Es ist sehr wahrscheinlich, dass Sie sich beim Öffnen von Code, den Sie vor einiger Zeit geschrieben haben, nach einigen Stunden, in denen Sie versuchen, sie zu modifizieren, nicht mehr in der nächsten Version der Software wiederverwenden, sondern sich neu schreiben. Es ist eine wahre Kunst, Code zu schreiben, der wiederverwendet werden kann, und ebenso ist es eine wahre Kunst, Code wiederzuverwenden. Softwareentwickler wollen das Rad immer wieder neu schreiben und neu erfinden. Es macht Spaß. Aber es wird dich nicht sehr weit bringen.
  • Tatsächliche Verwendung - Es ist nicht offensichtlich, Software zu schreiben, die von Nutzen ist. Denn Softwareentwickler haben völlig andere Erwartungen an Software als die Benutzer ihrer Anwendungen. Wir tendieren dazu, die Dinge zu übersteuern, zu überoptimieren und zu kompliziert zu machen, um zu viele Features zu finden, die wir ebenfalls berücksichtigen sollten. viele Was-wäre-wenns . Wir bevorzugen es, uns auf die interessanten Teile zu konzentrieren, anstatt uns die Hände mit guten Benutzeroberflächen oder anderen langweiligen, zeitraubenden und nicht lohnenden Problemen schmutzig zu machen. Wir produzieren viel, was niemand will oder nutzen kann.

Wie beantwortet das Ihre Frage?

  • Code-Wiederverwendung: Sie müssen dies unbedingt beherrschen. Machen Sie sich mit vielen Bibliotheken und Frameworks vertraut. Entwerfen Sie eine Anwendung und versuchen Sie dann, sie mit vorhandenen Komponenten und Architekturen zu verbinden. Das Schreiben von Klebecodes ist die schwierigste und wichtigste Aufgabe. In Ihrem Streben nach einem solch großen System sollten Sie auch die einzelnen Aufgaben des Systems herausgreifen und versuchen, eigene Komponenten für diese einzelnen Aufgaben zu schreiben. Versuchen Sie, jedes von ihnen robust und wiederverwendbar zu machen. Versuchen Sie nicht, ein ganzes System auf einmal zu erstellen. Du wirst es nicht schaffen. Sie werden wahrscheinlich etwas lernen, vielleicht viel, aber Sie werden scheitern (oder Sie sind ein geniales Genie).
  • Tatsächliche Verwendung: Nun, es ist sehr ehrgeizig, etwas so Großes wie PayPal zu schaffen, aber versuchen Sie nicht, etwas Großes zu schaffen. Versuche, etwas Gutes zu schaffen. Gut, dass es nützlich, verwendbar und gebraucht ist. Du wirst rechtzeitig sehen, das ist schwer genug. Versuche etwas zu erschaffen, das andere nutzen und mit dem du glücklich bist.

Konzentriere dich darauf, bei diesen beiden besser zu werden. Wählen Sie die Bibliotheken / Frameworks / Plattformen / Sprachen, die Sie mögen, und halten Sie für geeignet, um Ihre Aufgaben zu erfüllen. IMHO PHP ist aus mehreren Gründen keine gute Sprache, aber am Ende solltest du das verwenden, was dir gefällt und mit dem du dich gut fühlst. Ich persönlich benutze haXe für meine Projekte. Vielleicht möchtest du es versuchen. Am Ende denke ich, dass Sie viele Sprachen und Frameworks ausprobieren sollten, um verschiedene Konzepte zu verstehen. Die meisten Dinge, die Sie lernen werden, gehen über konkrete Sprachen und Frameworks hinaus, aber Sie können sie nur lernen, indem Sie einige von ihnen wirklich, wirklich gut kennen lernen.

Bevor ich fertig bin, möchte ich Sie auf meine 5 Gebote hinweisen;)

greetz
back2dos

    
back2dos 31.08.2010 18:37
quelle
2

PayPal begann nicht groß - es wurde im Laufe der Zeit groß, weil sie erfolgreich waren. Und sie wurden wegen einer bestimmten Plattformwahl nicht erfolgreich. Sie waren aufgrund ihres Geschäftsmodells aufgrund der von ihnen erbrachten Dienstleistungen und der von ihnen angezogenen Kunden erfolgreich.

Also lerne entweder ASP oder PHP oder beides. Sie sind ungefähr gleich nützlich für einen Programmierer. Und in etwa in der Lage, hochskalierbare Systeme zu unterstützen.

    
Seva Alekseyev 31.08.2010 18:48
quelle
2

Bei großen Systemen dreht sich alles um die Kopplung zwischen Komponenten und Tests.

Kurse wie "Software-Architektur" und "Software-Engineering" sollen Ihnen gut beibringen, wie Sie Systeme entwerfen (Kopplung und Kommunikation zwischen Komponenten richtig gestalten). Ich war ein wenig enttäuscht von meiner Einschätzung der Universität, aber es wird dir helfen, zumindest über die richtigen Dinge nachzudenken.

Dann zum Testen, schauen Sie sich eine Test Driven Development -Methode an. Die Testabdeckung ist sehr wichtig, wenn Robustheit und Sicherheit eine Rolle spielen.

Schließlich könnte ich sogar empfehlen, zu betrachten, wenn Sie aus einem anderen Grund in einen "formelleren" Modus einsteigen wollen Betriebs. Haskell zwingt mehr oder weniger dazu, formeller darüber zu sein, wie man Probleme durch sein Typsystem ausdrückt. (Auch wenn Sie fortgeschrittene Mathematik mögen, werden Sie wahrscheinlich Haskell lieben:))

    
Rehno Lindeque 31.08.2010 18:58
quelle
2

Beginne mit dem, was du weißt. Die großen Probleme, die Sie sehen, sind wirklich eine Ablenkung für jemanden, der bei Null beginnt.

  1. Finden Sie ein Problem, für das Menschen eine Lösung für
  2. brauchen
  3. Schreiben Sie die einfachste Sache, die mit dem funktionieren kann, was Sie bereits wissen
  4. Machen Sie es besser
  5. Sorgen Sie sich später für die Skalierung
Kelly S. French 31.08.2010 18:49
quelle
2

Hier gibt es zwei Ziele. Tackle sie einzeln:

Erstellen von komplexen Systemen:

Große komplexe Systeme entstehen durch zwei Dinge:

  • Eine Vision für ein Produkt oder eine Dienstleistung nützlich und appelliert an einen großen Markt
  • Ein Geschäftsplan, um vom Nullpunkt zur Erfüllung Ihres Ziels zu kommen Vision

Dies zu erreichen, kann die Partnerschaft mit anderen Menschen bedeuten. Klar, du sind an der technischen Seite der Dinge interessiert - das ist Ihre Stärke. Möglicherweise müssen Sie andere Personen finden, die Ihre Vision teilen, um zu helfen Verwalten Sie die nicht-technische Seite der Dinge. Das würde Sachen wie einschließen Kapitalbeschaffung, Promotion und Marketing. Jedes Mitglied Ihrer Gruppe sollte bringen Sie eine andere Kernstärke mit.

Als technischer Führer brauchen Sie ein festes Verständnis für die Anwendung die Architektur. Das ist weniger ein Problem mit Programmierkenntnissen als Es ist zu verstehen, wie verschiedene Entwurfsmuster und Technologien genutzt werden können Deine Tore. Erfahren Sie ein wenig über so viele Frameworks und Entwurfsmuster wie Sie können. Das musst du nicht Werden Sie ein Experte auf jedem von ihnen, bis Sie ein Gefühl für die Stärken haben und Schwäche von jedem in Bezug auf die Anwendung, die Sie suchen bauen.

Generelle CS-Fähigkeiten aufbauen

Theorie wird nie langweilig. Erhalten Sie einen starken Hintergrund in der wissenschaftlichen Seite Ihres Computer-Engineering-Programm. Kurse in Sprachtheorie, diskrete Mathematik, Algorithmenentwurf / -analyse, Computerarchitektur, Anwendungsarchitektur usw. Diese werden Ihnen für den Rest Ihrer Karriere gut tun.

Dann gibt es die praktische Seite des Problems: Über welche Sprachen, Technologien und Frameworks sollten Sie jetzt lernen? um Ihre Karriere zu fördern (mit der Hoffnung, etwas wirklich Großes zu machen). Zu diesem Zweck sind Sie bereits auf dem richtigen Weg. Sei neugierig, exponiere dich so viele Werkzeuge wie du kannst. Je mehr Dinge Sie wissen, desto leichter ist es zu lernen neue. Nehmen Sie sich die Zeit, um zu verstehen, auf welchem ​​Modell jedes Tool basiert und wie Es ist ähnlich wie andere Werkzeuge, die Sie verwendet haben.

Denken Sie daran, dass Programmiersprachen sind nur die "Werkzeuge des Handels", nicht der Handel selbst. Im Laufe der Zeit werden Sie finde neue Werkzeuge und verwerfe andere.

Alles zusammenfügen

Lassen Sie Ihrer Fantasie freien Lauf mit dieser "Killer-App". Freunde machen mit Leute, die Fähigkeiten haben, die deine eigenen ergänzen. Rede und träume über große Dinge zusammen.

Arbeiten Sie an der Entwicklung Ihrer CS-Kernkompetenzen

Machen Sie sich mit so vielen verschiedenen Tools und Sprachen vertraut, wie Sie es gewohnt sind. Erhalten ein Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 gute Kenntnisse über die wenigen, die dir am nützlichsten sind, egal was du gerade machst Moment. Die Beherrschung eines einzigen Werkzeugs kann Jahre dauern, aber lassen Sie es Aktuelle Bedürfnisse müssen Sie anleiten. Seien Sie darauf vorbereitet, dass sich Ihr technisches Tool im Laufe der Zeit weiterentwickelt.

    
NealB 01.09.2010 17:00
quelle
1

Ich denke, es ist keine Frage von Sprache oder Systemen. Wenn Sie ein guter Programmierer sind, werden Sie sich leicht an jede Art von Programmiersprache oder Framework anpassen können.

Für die Art von System, das Sie programmieren möchten, müssen viele Frameworks berücksichtigt werden. alle mit ihren Vor- und Nachteilen. Ich würde vorschlagen, dass Sie versuchen, von Leuten zu lernen, die es schon einmal gemacht haben, sehen Sie, was die großen Unternehmen verwenden, und mehr lernen.

    
slhck 31.08.2010 18:42
quelle
0
  • Wenn Sie beabsichtigen, ein Projekt alleine zu entwickeln, ist PHP in Ordnung
  • Wenn Sie ein Team von Entwicklern aufbauen müssen, würde ich Java
  • empfehlen

Vergessen Sie neben der Sprache nicht den SSL / Verschlüsselungs- / Sicherheitsteil.

Paypal benötigt wie alle Zahlungssysteme einen starken Sicherheitsplan, der implementiert werden muss, um (so viel wie möglich) zu gewährleisten.

  • Der Server ist, wer er vorgibt zu sein (Zertifikat von einer bekannten Autorität unterzeichnet)
  • die Daten können auf dem Weg nicht (praktisch) ausspioniert werden browser <-> server

Siehe HTTPs , SSL

    
Ring Ø 01.09.2010 15:09
quelle