day in the life of a software engineer | 5 hour productivity | coding my next social media startup

Phil Choi codes a social media app backend while balancing family, fitness, and quitting smoking. He builds a Likes service with pagination and sorting, designs API responses for stats, and debates UI choices like action sheets versus dropdowns for React Native.
Chapters
Was geht ab, Alter? Jo, was geht ab? Ein neuer Tag im Leben, Ein neuer Schuh in einer Meile. Warte, so geht der Ausdruck doch gar nicht. Ein neuer Tag im Leben, Der Himmel ist klar, du kommst durch deine Tür, Alter. Was machst du? Nein, ich rappe nicht, Ich bin nur. Alter, was ist los? Ihr seht heute gleich aus, Das wollte ich erreichen, dieser Look, Alter. Unten blau, oben ein Y Abstand Punkt. Ein neuer Tag im Leben. Welches Wort reimt sich auf Leben? Oh, okay, okay, okay, okay. Bereit ein Steak mit dem Messer schneiden? Ah, Alter, es gibt kein Wort, das sich auf Leben reimt, Alter. Ich meine, ich weiß, ich sollte mir antrainieren, es zu haben, Alter. Was mache ich, wenn du nicht hier bist? Weißt du, so muss man sein verdammtes Leben trainieren, Alter. Okay, alles klar, Ich trainiere für meine Unabhängigkeit, Alter. Alleine wir suchen nach dem Kaninchen, okay? Tokio. Hier kommt so ein kleines Kaninchen vorbei, Bruder. Früher waren es zwei. Ein paar Kinder haben sie umgebracht, Bruder. Ist das dein Ernst? Ja, ein Kaninchen. Ja, heilige Scheiße, Bruder, Deshalb stehen hier auch Schilder, auf denen steht, dass man nicht gewalttätig sein darf. Jetzt rennt hier also ein einzelnes Kaninchen rum, weißt du, was ich meine? Oh, hey, entspann dich. Wie ist dir das aufgefallen, Alter? Ich. Du hast einfach ein gutes Auge. Ich halte einfach die Augen offen, Bruder, ich weiß nicht. Mein Sohn ist im Moment total darauf ab, Tiere zu füttern. Oh man, er sollte sich vielleicht mal. Wir, wir müssen. Wir waren gestern auf einer Ranch. Wir waren schon auf Ranches. Ach, wirklich? Ja, es heißt auf koreanisch Mayeng, Aber wir waren gerade auf einer Ranch. Wir waren gestern auf. Ja, ja, verdammt, wir haben Pferde gefüttert. Der Toki kennt ihn. Ich glaube ja, Alter, die verdammten Kaninchen. Er ist wahrscheinlich der einzige, der nett zu ihm ist. Alle anderen Kinder haben Angst. OK, sieh dir das an, Alter. Verdammt, er verspottet ihn. Okay, das ist hier unser Aufhänger. Dein Sohn ist wie der beste Intro, Alter. Ich schwöre bei Gott, er wollte das Kaninchen füttern, Alter. Echt? Seit er aufgewacht ist. Oh, jetzt ist er. Schau mal. Oh, okay, okay, alles klar, er ist trainiert, er ist trainiert, verdammt. Ja, Alter, ist gut. Okay, okay, OK, Er braucht den perfekten Stock für seine ABCDEFG. Hijkqrstu Z Jetzt Weiß ich wann du das nächste Mal mit mir singen willst? Ich glaube meine Füße werden größer. Alter. Ich war gestern draußen vor Seoul. Ja, wie war das? Wie in Ponshang oder so. Es ist wie Kangwando weit im Osten. Draußen ist gar nichts. Bruder. Wo bist du hingegangen? Was? Warum bist du wegen der Landschaft hingegangen? Ja, das ist cool. Nein, da ist so eine Art Hotel. Es war billig. Okay, wir haben versucht so eine Art Highschool oder College Party in einem der Hotelzimmer zu veranstalten. Oh, wir haben eine Menge Essen und Alkohol besorgt. Oh, okay. Okay. Es war nach ungefähr anderthalb Stunden vorbei, Alter. Die Kinder hatten keinen Bock, Bruder, weil sie ein gleichaltriges Kind haben. Ja, ja, lass uns anfangen. Das Team ist zurück. Garp ist zurück. Wir müssen anfangen an Let's Social Fuck zu arbeiten. Was mache ich nächsten Montag ist cool. Montag ist cool. Ja, das kann ich machen. Das kann ich machen, Bruder. Sie hat Angst etwas zu verpassen, Alter. Wirklich, ich vermisse sie, Bruder. Übernächsten Montag denke ich klappt's noch. Okay, aber dann am nächsten Montag, Alter, müssen wir da Termine machen. Ich kann es trotzdem machen, Alter. Okay, Alter, ich muss am Samstag einen Marathon laufen. Kommst du mir zu, Alter, es ist nur ein 5km Lauf, aber mit Kinderwagen und Kind. Ich laufe einfach nur RHA Kinderwagen. Ja, Alter, ich glaube, ich schaffe einen 5km Lauf. Verdammt. Ja, Alter, du könntest ihn wahrscheinlich tragen und 5km Laufen. Ich könnte wahrscheinlich 10km Laufen. Oh, das hab ich meiner Frau gesagt, Alter. Was? Dass du ihn tragen kannst. Ich könnt ihn tragen und 5 Kilometer rennen, Mann. Punkt. Ja, ja, auf jeden Fall. Weißt du, es gibt die funktionellen Muskeln. Es gibt die ästhetischen Muskeln, aber es gibt auch die funktionellen. Funktional. Ja, die nutzbaren. Oh Gott, das sieht so gut aus, Bruder. Das ist gut. Ich hatte mal einen. Heilige Scheiße. Da unten ist ein beschissener Virus, Bruder. Echt? Wo? Alter, ich habe seit drei Tagen keine Zigarette mehr geraucht. Echt? Daher weiß ich, dass ich nur für die Arbeit und so rauche. Für die Arbeit, Alter. Ja, Samstag, Sonntag, Montag nicht geraucht, Alter. Ich rauche nur an Tagen, an denen ich was erledigen muss. Also rauchst du jetzt im Grunde weniger. Das ist gut. Ich hatte am Sonntag drei Packungen Bonbons und etwas Limonade. Ich glaube, ich werde mit Sprudelwasser und Süßigkeiten aufhören. Ich habe es meiner Frau erzählt und sie meinte, das sei unmöglich. Ich glaube nur drastische Veränderungen, bei denen ich etwas opfere, helfen mir beim Abnehmen und bringen mich im Programmieren weiter. Das muss man nachvollziehen können. Man muss Opfer bringen. Man muss etwas opfern, um sich Zeit zu nehmen. Ja, die drei Säulen. Du weißt Geist, Körper und Verstand. Man kann sich nur für zwei entscheiden. Lernst und trainierst du nur bleibt keine Zeit für Freunde, Alkohol oder sonst etwas. Verstehst du? Oder wenn du Zeit für Freunde und Lernen hast, hast du keine Zeit mehr fürs Trainieren. Verstehst du, was ich meine? Das macht 66 Prozent des Lebens aus. Ich denke darüber nach, warum ich im Moment nicht so viel lerne. Es gibt Zeiten, weißt du? Und ich muss einfach noch eine Zeit brauchen, in der ich mein Aussehen maximiere. Ich muss mein Aussehen maximieren, trainieren und ich brauche einfach eine weitere Zeit zum Lernen. Weißt du? Es ist gut, sich mal auszuruhen, etwas anderes zu tun und dann wieder darauf zurückzukommen. Selbst wenn man zu lange an einem Problem festhält, braucht man einen klaren Kopf und eine andere Denkweise. Wie auch immer, ich bin erst nach meinem 30. Lebensjahr leitender Entwickler. Geworden. Wenn du Kommentare dazu hast, was du opferst, um dir Zeit zu nehmen oder zu etwas, zu dem du immer wieder zurückkehrst, lass es mich in den Kommentaren wissen. Wir antworten auf alle. Es gibt eine Menge Kommentare. Also, M. Es könnte ein bisschen dauern, aber M. Weißt du, wenn ich es kann, kannst du es auch Programmieren. Rettet Leben. Lass uns einfach anfangen zu coden, Alter. Hey, wie geht's Gabe? Hey, wie geht's? Nicht viel. Ich hab dich schon ne Weile nicht gesehen. Ro, wie geht's dir? Ja, mir geht's gut. Mach's gut. Ich hab gerade meinen Unterricht beendet, weil ich Prüfungswoche habe verstanden. Alter. M, hast du es gut gemacht? Ja, Nein, ich glaube, ich habe so ziemlich alles hinter mir. Ich warte nur noch auf den Abschluss am M Freitag und dann bin ich fertig. Okay, cool. Minnie ist auch hier. Ich dachte, wir arbeiten einfach ein bisschen an Land Social. Vielleicht können wir ein bisschen Backend Entwicklung machen, weil ich immer noch am Frontend arbeite. Oder willst du das Frontend mit mir zusammen reparieren. Ja, beides ist möglich. Ich bin für beides zu haben. Das Frontend überarbeite ich gerade ein wenig, weil ich eine andere Styling Bibliothek verwenden werde. OK. Und vieles davon wurde mit so etwas wie oh, lass mich dir mal zeigen, wo ich bin. Das ist also das alte Projekt. Es ist alles fertig und dann habe ich hier das neue Projekt. Ich kopiere den Code, die UI und viele Bildschirme muss ich neu erstellen. Ich habe keine Eile, also mache ich das einfach so. Ich denke, das Backend wäre produktiver, weil ich das alleine mache, weil es einfach mühsam ist. Man muss nur die Dinge rüberschieben und sicherstellen, dass sie funktionieren. Ich hole mir vielleicht noch einen Mentor. Er ist ziemlich cool. Ich glaube, er mag Unity bei Meta. Ich glaube, mein Mongo Express läuft also. Ich logge mich per Localhost 8082 ein und registriere mich, damit du es siehst. Naja, nur um die Datenbank zu sehen, denn wir werden da Sachen speichern und ich denke, es wäre produktiver, wenn du siehst, was in Mongo Express passiert und so weiter. Testen wir den Like Service erstellt letztes Mal. Ich glaube, den haben wir zusammen erstellt. Also was brauche ich? Ich brauche einen Token. Jetzt sollten wir in Kannst du die Likes öffnen und dann kannst du die Likes jetzt dort sehen, Richtig? Die Likes sind da. Ja. Ja, und der Beitrag, der mir gefallen hat, eine der Statistiken. Ich glaube, die erste sollte Gefällt mir lauten und dann ist da noch eine Folgen. Eine Person sieht so aus. Jetzt müssen wir vielleicht auch noch die Likes regeln. Richtig. Also ich denke, es sollte einen Bildschirm dafür geben, wem dein Content gefallen hat oder sowas in der Art. Richtig? Ich denke ja. Ich werde es im HTTP client erstellen. Nennen wir es likes service HTTP. Machen wir es einfach zu gefällt mir angaben nach beitrag. Was sollte hier passieren? Wir sollten ein get on HTTP localhost 3000 v likes ausführen. Wie sollten wir den Endpunkt nennen? Du denkst, dass getlikes einfach alle Likes abruft. Weißt du, was ich meine? Ja. RHA. Wenn ich also auf localhost 3000 V likes gehe, wird kein bestimmter Beitrag angezeigt. Nein, nein, nein. Ich denke, wenn du bei Instagram auf wem es gefallen hat, klickst, wird dir ein Bildschirm mit den Gefällt mir Angaben der Benutzer und all diesen Dingen, wie der Benutzer ID angezeigt, denen dein Beitrag gefallen hat. Siehst du das hier? Süßes Baby übrigens, das süßeste Baby der Welt. M. Wenn du auf wem es gefallen hat klickst, sollte dieser Bildschirm auftauchen und dir anzeigen, wem es gefallen hat. Wir brauchen es jetzt nicht zu schützen. Ein Blick auf den Post reicht. Der Verfasser muss nicht identifiziert werden, Also senden wir einfach diese Anfrage und wir können sehen Moment, ich möchte das hier platzieren. Beitragen. Jetzt müssen wir Wir bekommen Likes. Also müssen wir die Dokumente tatsächlich transformieren. Richtig. Wir müssen also contransform await this ttransform documents. Wir sehen die Benutzer ID mit ID, Namen und Foto. Oder Siehst du das? Ja, das ist es also, was in Mongo aufgefüllt wird, denn es verbindet etwas mit einem ganzen Array und du kannst auswählen, welche du haben möchtest. Wenn Sie also später mit Mongo arbeiten und das Wort populate hören, ist das kein Skript zum Auffüllen, wie wir es beispielsweise bei der Fußball App gemacht haben. Sie erinnern sich, wo wir die Datenbanken und so weiter aufgefüllt haben. Es geht eher darum, die Daten mit den Daten zu füllen, die wir dort benötigen. So funktionieren manchmal Joins in Mongo. Es ist also eine einfache Möglichkeit. Es gibt auch Aggregationen, die ich Ihnen später beibringen werde. An dieser Stelle benötigen wir meiner Meinung nach die Beitrags ID Informationen nicht, da der Client diese Beitragsinformationen bereits auf diesem Bildschirm hat, wenn Sie den Beitrag erhalten. Auf dieser Ebene haben Sie meiner Meinung nach bereits auf die Beitragsdetail IP geklickt. Richtig. An dieser Stelle möchten Sie wahrscheinlich nur wissen, wem der Beitrag gefallen hat. Das ist so ziemlich alles, was Sie wirklich tun müssen. Wir müssen uns noch um die Paginierung kümmern, aber darum kümmern wir uns jetzt nicht. Sende ich die Anfrage, zeigt sie die Likes für den Beitrag mit dieser ID, dann die Likes selbst die Person iteriert darüber und schließlich brauchen wir wohl noch die Gesamtzahl der Likes. Die Gesamtzahl erhalten wir via transform lenkt. Wenn wir diese Anfrage nun senden, sehen Gefällt mir Angaben für die Nachricht und dann die Gesamtzahl. Was wir wahrscheinlich benötigen, ist wahrscheinlich so etwas wie page type string oder optional true und dann können wir das im Grunde in const, post id oder page ändern und dann setzen wir das auf 1 und dann setzt es ctx params gleich und dann können wir einfach ich glaube es ist hier offset limit 0, lass mich das mal testen, um sicherzustellen, dass 0 reinkommt. OK, die Parameter, die find hat, sind populate, field, limit, offset, sort, search, search, fields und query. Lass mich mal kurz einen alten Code anschauen. Entschuldigung, CD Code Apps. Ich weiß nicht, warum dieses Limit nicht funktioniert. Das ist ja der Wahnsinn. Oh, was wäre, wenn wir es einfach auf 1 verschieben und es dann auf 10 begrenzen würden. Also das und dann sortieren wir es nach erstellt am Es ist so ähnlich, als gäbe es diese Bibliotheken, die einem helfen bei 1 zu inkrementieren. Was du also im Frontend machst, ist, dass du scrollst und wenn du dich dem Ende näherst, hast du automatisch diesen Prefetch und dann fügst du der Seite 1 hinzu und dann stellst du diese Anfrage erneut und wenn sie dann wieder scrollen und sich dem Ende nähern, fügst du die Seite hinzu und dann fügst du hinzu und hängst dann einfach diese Kommentare an. Und so funktioniert es im Hintergrund. Ich hoffe das macht Sinn. OK Punkt Du möchtest abgleichen. Okay, das ist ziemlich wichtig für dich. Ich denke es ist ein Abgleich. Du möchtest also die Abfrage stellen, weil du nicht sortieren möchtest, bevor du die Benutzer ID und die Beitrags ID abgleichen oder finden möchtest. Dann möchtest du deine Datenform oder was auch immer definieren, um die Daten aufzufüllen. Dann möchtest du sortieren, kopieren und einschränken. Das ist also die Reihenfolge, in der du das machst. Ich denke, das ist später ziemlich wichtig nur für deine Notizen. Oh, das ist nicht die richtige Entschuldigung. Wenn du ein Backend Entwickler bist und keine Fragen stellen möchtest, dann gib ihnen einfach alles, was sie brauchen und so wirst du es verwenden. Los geht's. Ja, ja. Oder wenn du ihnen nur die Likes gibst, werden sie oh, ich muss wissen, um welche Seite es sich handelt. Ich muss wissen, ob es funktioniert hat oder nicht. Kannst du mir die Gesamtzahl geben? Es ist einfach diese ganze Art von vollständiger API, mit der du ihnen alle Informationen geben musst, die sie brauchen. Und dann kannst du, wenn du mehr brauchst, erstelle ich dir eine neue API. Wir werden dieses hier nicht mehr anfassen. Du kannst also mit dem nächsten Punkt weitermachen. So arbeite ich gerne an Dingen. OK, cool. Lass uns einfach noch eine API machen. Ich denke, welche API sollten wir machen? Sollten wir Kommentare machen? Ja, lass uns Kommentare machen. Ja, du möchtest Kommentare machen. OK, wir erstellen einen weiteren Endpunkt namens top bewertet und wir werden einen Befehl ausführen. Gettp localhost 3000 ap post top rated und dann möchte ich die Kommentare bekommen. Ich meine die Likes. OK, in dieser API senden wir einfach das Array zurück, richtig? Ja. Wie denkst du, sollten wir diese API für den Client gestalten? Weil es offensichtlich vielleicht ein Objekt sein sollte. Wir sollten ein Objekt zurücksenden. Die Nachricht könnte top Beiträge sein. Den Statistiktyp übergeben wir also und wir könnten Statistiktyp eingeben. Hoppla, ich denke auch hier sollten wir es auf etwa 5 oder so beschränken. Richtig? Beitrag posten? Ja. Billy ist hier nun, er sagte, Er kann in 10 Minuten dazukommen. Okay, 10 Minuten. Okay. Soll ich es ihm sagen? Ja, Ja, okay, das ist garbe. Ich weiß nicht, ob du ihn schon mal getroffen hast, aber er ist unser Backend Full Stack Entwickler. Wir chillen also einfach nur. Ja, schön dich kennenzulernen. Das ist der Designer. Wir haben die Designs gesehen, sie sind sehr, sehr schön. Danke. Ich weiß das zu schätzen, aber wie spät ist es bei dir gerade, Billy? Ich denke, diese Fragen sind gut. Es ist wie eine Art Onboarding Ablauf, nachdem wir Was wird passieren, wenn es so weit ist wie Welche Themen interessieren dich? Denkst du, wir sollten es immer so haben? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Was wollen wir noch hinzufügen? Glaubst du, dass es irgendwann so etwas wie ein Scrollen oder so etwas geben wird oder werden es immer so viele sein? Ich denke, es ist besser, Chips zu verwenden, weil es für den Benutzer einfacher ist, wenn wir ein Scrollen ermöglichen. Sie müssen scrollen und finden, was sie brauchen. Es ist also besser, es so zu belassen und OK, du kannst einfach ein bisschen mehr hinzufügen, vielleicht bis zu 20? OK, du solltest es mehr als das machen. Ja, okay, ich mag das Gefühl wirklich, denke ich. Bei diesen Dropdowns werden sie Dachtest du, es wird ein Dropdown wie hier sein oder ein Dropdown wie ein Modal, das auftaucht? Wir können so etwas wie ein unteres Blatt machen. Weißt du, wenn das für dich in Ordnung ist, wie in React, ist es auch hier. Ich denke es ist besser ein unteres Blatt zu verwenden. Ja, das Aktionsblatt. Ja, das untere Blatt. Ich stimme definitiv zu. Dropdowns funktionieren nicht in der App Entwicklung meiner Meinung nach manchmal schon, doch besser. Du weiß, drückst du hier, öffnet sich das untere Fenster. Der Grund ist, dass ich das nicht gemacht habe. Was auch immer für dich angenehm ist, wir können es so machen. OK, Ja, das untere Fenster ist viel besser. M. Ich habe beschlossen die Bibliothek auf diese React Native UI Bibliothek umzustellen und weil Elements ein bisschen alt ist, ich werde diese Dokumentation der Community schicken, um Fragen zu stellen, zu chatten und mit ihr zu arbeiten. Was für ein toller Brocken. Ja, Alter, das ist ein verdammter Programmierer. Das ist verdammt krass, Alter. Billy, du erschaffst eine Identität für uns. Das ist großartig. Eine Liste von Problemen, die gelöst werden müssen und Optionen für Leute, sich selbst als Problemlöser zu markieren, einschließlich der geschätzten Stunden pro Woche, die dafür aufgewendet werden müssen. Diese Funktion wurde gewünscht, doch ich arbeite sie noch aus. Vielen Dank Billy. Ich schätze deine harte Arbeit und Ä, wir sehen uns bald wieder, ja, ja, okay, danke Billy. Bis bald. Tschüss. Punkt. Danke Billy. Danke. Okay, Gabe, du bist raus. Du bist auch raus, richtig, Ich bin raus. OK, bis später, Leute. Pass auf dich auf, Gabe. Ich wünsche dir einen schönen Tag. Bis später, Billy. Tsch. Wir müssen noch ein paar Sachen am Laufen halten. Wir brauchen mehr Entwickler, Bruder. Ja, ja, wir treffen uns wieder mit Joes. Ja, ich glaube am Montag müssen wir ja echte Aufgaben. Ja, mehr Aufgaben und so. OK, Alter, lass uns weitermachen und ja, Alter, ich muss aufhören faul zu sein. Los geht's.
More from Phil

day in the life of a software engineer | 5 hour productivity | building my dev agency 🔥

day in the life of a software engineer | 3 hour productivity | coding my 6-figure community startup

day in the life of a software engineer | 5 hour productivity | coding our sns startup app LFG

day in the life of a software engineer | 5 hour productivity | creating apps that makes big money






