[{"content":"","date":"1 April 2026","externalUrl":null,"permalink":"/","section":"nadia.fyi","summary":"","title":"nadia.fyi","type":"page"},{"content":"","date":"1 April 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"23 July 2025","externalUrl":null,"permalink":"/tags/resource-dump/","section":"Tags","summary":"","title":"Resource Dump","type":"tags"},{"content":" Intro # Hi, this is a follow-up to Resource Dump I.\n🚀 Startups \u0026amp; Product # startups.gallery\nA list of 900+ outstanding early-stage companies, curated daily.\nPostHog\u0026rsquo;s Guide to Vibe Design\nPostHog engineers\u0026rsquo; tips on creating nice designs when vibe coding.\n💻 Educational # CodeCrafters HTTP Server\nBuild an HTTP server from scratch to learn networking and system programming. Extremely high-quality resource.\nBoot.dev\nFree, gamified learning platform focused on backend development.\nGreat Frontend\nBuild real-world frontend projects to learn and showcase your skills.\nGNS3\nNetwork simulation software for learning networking concepts and protocols.\nSQL Murder Mystery\nLearn SQL by solving a murder mystery with interactive database queries.\n💬 Community # The Recurse Center\nEducational retreat for programmers, in NYC or remote.\ntaro\nAmazing practical advice from tenured industry engineers. Must-read if you want to get promoted.\nLee Robinson\u0026rsquo;s personal website\nLee Robinson was DevRel at Vercel for 5 years and recently joined Anysphere (Cursor IDE). Very interesting insights about work-life balance (or as he prefers to call it: passion + boundaries).\n🔧 Libraries \u0026amp; Tools # Lucia Auth\nOpen source authentication library for JavaScript and TypeScript.\nWappalyzer\nChrome extension that tells you what tech stack any website uses.\nExpressive Code\nEmbed beautiful code blocks with syntax highlighting on your website.\nChrome Task Manager\nApparently web browsers have their own task managers?? Crazy.\n💼 Interviews \u0026amp; Jobs # Sourcegraph\u0026rsquo;s Notion website\nThis is a public resource that has a lot of interesting info about company culture, interview advice, what they hire for, etc.\nLeetDesign\nLiterally Leetcode but for system design, very practical.\nAlphabet150\nIf you\u0026rsquo;ve heard of the Blind 75 and the Neetcode 150, this is basically the Google 150.\nLeetCode Resources\nThe official Leetcode.com cheatsheet!\nVisualgo\nInteractive visualizations of data structures and algorithms.\nThanks 4 reading ! # ","date":"23 July 2025","externalUrl":null,"permalink":"/posts/resource-dump-ii/","section":"Posts","summary":"Intro # Hi, this is a follow-up to Resource Dump I.\n🚀 Startups \u0026 Product # startups.gallery\nA list of 900+ outstanding early-stage companies, curated daily.\nPostHog’s Guide to Vibe Design\nPostHog engineers’ tips on creating nice designs when vibe coding.\n💻 Educational # CodeCrafters HTTP Server\nBuild an HTTP server from scratch to learn networking and system programming. Extremely high-quality resource.\n","title":"Resource Dump II","type":"posts"},{"content":"","date":"23 July 2025","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"3 February 2025","externalUrl":null,"permalink":"/tags/early-career-series/","section":"Tags","summary":"","title":"Early Career Series","type":"tags"},{"content":" Intro # A collection of advice that no one explicitly tells you about performing well in your first tech job.\nThere will come a day (perhaps on your first day, or maybe even every single day) when you are given a task that you have absolutely no idea how to even begin to tackle. If your first response is to panic, keep reading.\nFundamentals of debugging # 🖨️ Print Statements: Use Them (Intelligently)\nA very popular approach to debugging is to simply add a bunch of print statements. This can be done at varying degrees of sophistication:\nconsole.log('here') - caveman approach but it works. assert(result == 42) - simple and effective. Note that your code will likely exit at the first failed assertion, which may or may not be what you want. Logger.info('Extracting the file...') - nice! Not only can you configure the Logger to print any useful additional information you want, but you can also just leave these logs in your code because they (most likely) won\u0026rsquo;t be printed in production. ⚠️ Error Messages: Read Them\nRead it. No, really, read it. And understand it. Sometimes the error is just a typo, an incorrect import path, or expired credentials. Don\u0026rsquo;t spend hours moving files around and adding print statements - read the error message first.\n🐞 Debuggers: Learn Them\nLearning how to use a debugger is one of the best things you will ever do for yourself as a junior developer. You will never need to console.log() ever again, seriously. You can look up debuggers for your specific language or IDE, or watch the best video I could find about debugging:\nSnooping for information # 🔍 If you work at a moderately-sized company, you most likely have access to a ton of written content. You can look up keywords about your problem in:\nInternal documentation like a Confluence, Notion, or other Wiki-type platform. Some companies even have their own internal search engine. Slack messages - you\u0026rsquo;ll be surprised how many times someone has already asked the same question in some random channel. Codebases - maybe someone else has already written a working implementation of what you\u0026rsquo;re trying to do. Try filtering by file extension (e.g. .py for Python files). Document editor i.e. the platform people use to actually write some of the internal documentation. I\u0026rsquo;ve found some interesting tidbits by searching up keywords on Google Sheets. 🌐 If your error message is generic, i.e. it does not contain company-specific information, you can also try:\nGoogle - specifically look for results on StackOverflow, Reddit, or GitHub Issues. Claude AI. The other AI tools suck for coding, but Claude is pretty good. Deepseek is great because it lets you follow its train of thought, but it\u0026rsquo;s down often. Try to use AI only for understanding concepts or generic issues rather than copy-pasting code, which could get you in trouble. Open-source code if applicable - one of my internship projects got derailed because of a bug that was only mentioned twice in the GitHub Issues of the open-source software I was using. Many search engines like Confluence support search syntax\nTalk to a rubber duck # 🐤 Before you reach out to a human, try explaining your problem to a rubber duck. Alternatively, pretend you\u0026rsquo;re doing a presentation about your problem to a child. This practice often reveals logical gaps in your understanding. It\u0026rsquo;s very likely that you will have an \u0026ldquo;aha!\u0026rdquo; moment halfway through your explanation, because you realized something you just said doesn\u0026rsquo;t make sense.\nWhile you\u0026rsquo;re at it, maybe you could even add the explanation to a README or to a document, so other people can benefit as well.\nFinding the right person # 👥 When you\u0026rsquo;ve exhausted your independent problem-solving options, it\u0026rsquo;s time to reach out for help. Here\u0026rsquo;s a recommended escalation path:\nYour fellow junior teammates - they might have faced similar challenges recently or when they were onboarding. Your senior teammates - they tend to be very busy, but oh-so-knowledgeable. People on other teams - if your problem is something your team doesn\u0026rsquo;t have enough experience with. You can find them by asking your teammates, searching Slack messages, or looking at the commit history of relevant codebases. Your manager - they likely have 10-20 years of experience, so who knows what they might know ! Other Slack channels or forums - if no one has been able to help you by now, write an open call for help in relevant channels and cross your fingers. ⏰ While you wait for whoever you contacted to respond, beware of the ticking clock:\nExpect to wait about 2-4 hours for a response, in the meantime try to work on something else or learn something new If you\u0026rsquo;re both in-office, try to find them in person If 12-24 hours have passed, send a follow-up message or tag them in a relevant thread If 24-48 hours have passed, send them a 15min meeting invite - it creates a sense of urgency that some people respond to more than a Slack message. But also, it\u0026rsquo;s time to try messaging someone else. Important - how to DM people # 💬 Don\u0026rsquo;t ask to ask - the way you ask for help can greatly impact how quickly and effectively you receive it. A good sample DM might look like this:\nHi! I\u0026#39;m working on the auth service migration (JIRA-1234) and running into an issue with the token validation. I\u0026#39;ve already: - Checked the API docs - Verified my credentials - Tried the solutions from the internal wiki - Added logging to track the token flow Could you help me understand why the validation might be failing even though the token format looks correct? On communication and visibility # 📢 Being visible doesn\u0026rsquo;t mean showing off - it means being transparent about your work and contributing to the team\u0026rsquo;s knowledge base. Some reasons to strive for visibility include:\nLeaving a trail of your work - this is useful for yourself during performance reviews, and for your teammates if you need to take extended time off or leave the team. Improving team efficiency - your teammates can learn from your process instead of having to make the same mistakes from scratch. Social capital - not only does openness and transparency make people want to help you, but it also creates a sense of competence which might lead to more impactful projects or opportunities being tossed your way. 🔕 You want to be visible without being noisy. Some ways to do this include:\nCommenting on PRs even if you\u0026rsquo;re not assigned as a reviewer, or even if it\u0026rsquo;s your sister team\u0026rsquo;s PR. Make sure to leave thoughtful comments and use \u0026ldquo;we\u0026rdquo; language, for example: Could we consider using async/await here? It might help us handle errors more elegantly. Posting updates in public channels, for example a short celebration message in the team channel when you hit a milestone in your project. Sharing documentation - for example: updating an old README or team wiki, creating a runbook for a common problem, building a knowledge sharing doc, or sharing your notes about a complex concept you worked on. Mentioning others who have helped you! This could be during regular standup or in a public Slack message. Final words # Hopefully some of these strategies are helpful to you.\n🧀 The key takeaway is : your goal is not to never need help - it\u0026rsquo;s to need help on increasingly complex problems! The best engineers are not those who never get stuck - they are those who have mastered the art of getting unstuck :-)\nHave a meme before you go, courtesy of smbc-comics\n","date":"3 February 2025","externalUrl":null,"permalink":"/posts/unblock-yourself/","section":"Posts","summary":"Intro # A collection of advice that no one explicitly tells you about performing well in your first tech job.\nThere will come a day (perhaps on your first day, or maybe even every single day) when you are given a task that you have absolutely no idea how to even begin to tackle. If your first response is to panic, keep reading.\n","title":"Unblocking Yourself 101","type":"posts"},{"content":" Intro # Hi, here is a bunch of random stuff I\u0026rsquo;ve bookmarked over the last year because I found it cool. In no particular order. With a quick summary for your convenience.\n💽 Operating Systems / Linux / Networking # Julia Evans\u0026rsquo; Wizard Zines\nExtremely high-quality, digestible comics about Linux and networking concepts.\nSadServers\nLeetcode for sysadmins. Very fun and nicely made.\nJulia Evans\u0026rsquo; Experiments\nSandboxes to understand and play around with DNS configurations, nginx, and other concepts.\nJulia Evans\u0026rsquo; personal blog\nA mish-mash of entries about operating systems, Linux, networking, and other software topics.\nGeeksforgeeks - Memory Layouts of C Programs\nI\u0026rsquo;ve found Geeksforgeeks content to be generally high-quality, engaging, and easy to understand.\n⌨️ Shell Scripting # 6 Techniques I Use to Create a Great User Experience for Shell Scripts\nA very short article with neat tips for shell scripting that seem kinda trivial and yet make a world of a difference.\nUnix shell script tactics - best practices style guide\nMore coverage on shell scripting tactics and best practices.\n🎁 Startups / Product # The Product-Market Fit Game\nVery nicely written by one of the founders of PostHog, interesting insights for all audiences.\n☁️ Cloud / Infra / SaaS # LocalStack\nRun AWS entirely from your local machine.\nGitpod\nNever manually set up a dev environment again - this is more geared towards organizations but I think it\u0026rsquo;s very neat.\nJam.dev\nMaking bug reports easier.\n🎨 UI / UX # Neobrutalism\nNice retro UI components. They don\u0026rsquo;t work out-of-the-box for mobile apps but I managed to adapt them easily for React Native by asking Claude AI nicely.\nReact Native Paper\nHigh-quality React Native UI components for your cross-platform mobile apps.\n🌐 Open Source # Open Source Guide\nEverything you need to know about open source, from licensing to contributing.\nGood First Issue\nA curated list of beginner-friendly issues from popular open source projects. Makes it easy to get started with contributing to open source.\n💼 Interview Prep # Deep-ML\nLeetcode for Machine Learning.\nCompetitive Programmer\u0026rsquo;s Handbook\nA different (some might say: the original) take on Leetcode.\nMicrosoft - Engineering Fundamentals Playbook\nAn exhaustive list of guidelines and best practices covering every aspect of industry-standard software projects.\nLeetCode was HARD until I Learned these 15 Patterns\nNice illustrations for common Leetcode patterns.\nonsites.fyi\nGlassdoor for FAANG, but more intimate and detailed.\nThanks 4 reading ! # ","date":"2 February 2025","externalUrl":null,"permalink":"/posts/resource-dump-i/","section":"Posts","summary":"Intro # Hi, here is a bunch of random stuff I’ve bookmarked over the last year because I found it cool. In no particular order. With a quick summary for your convenience.\n💽 Operating Systems / Linux / Networking # Julia Evans’ Wizard Zines\nExtremely high-quality, digestible comics about Linux and networking concepts.\n","title":"Resource Dump I","type":"posts"},{"content":" Context # You\u0026rsquo;re a student or recent grad, and you\u0026rsquo;re seeking your first internship or full-time job in North American tech.\nMaybe you don\u0026rsquo;t know where to even start looking, how to apply efficiently, how to network, or how to pass interviews.\nThis guide is for you.\n🧮 What you should expect # Apply to every job that you meet at least half the requirements for. Don\u0026rsquo;t self-select out of opportunities - that\u0026rsquo;s the recruiter\u0026rsquo;s job. Often times, the list of requirements is more like a Christmas wishlist than actual job requirements.\nAfter every ~50-100 applications you submit, note how many invitations to interview you received. Ideally, aim for a 2-10% interview rate - if you\u0026rsquo;re below 2%, it\u0026rsquo;s time to revisit your strategy and/or resume ↓.\nThe most important and underrated tip is to apply the first day a job opens. Do not wait 24 hours to update your resume, do not wait 3 days for your friend to maybe refer you, just apply. Seriously. Often times, recruiters will send a first wave of interview within 24 hours of the job being posted, and it\u0026rsquo;s highly possible that they will hire someone from that batch.\nAlso be aware of traditional tech recruiting timelines - for Summer 2025 roles, start applying as early as Summer 2024. Many students already have their new grad jobs or internships lined up by October of the previous year.\n🗞️ Job boards to check every day # Simplify has a great matching algorithm (if you fill out your profile properly) JobPulse.fyi is also pretty good and community-sourced LinkedIn - paste this in the search bar and create a job alert for it: (\u0026#34;software\u0026#34; OR \u0026#34;engineer\u0026#34; OR \u0026#34;developer\u0026#34;) AND (\u0026#34;graduate\u0026#34; OR \u0026#34;new grad\u0026#34; OR \u0026#34;2025\u0026#34; OR \u0026#34;university\u0026#34; OR \u0026#34;early career\u0026#34; OR \u0026#34;internship\u0026#34; OR \u0026#34;co-op\u0026#34;) GitHub internship repositories like Pitt CSC Careers page of your favourite companies ⏰ Each job application should take you no more than 1 minute (unless there\u0026rsquo;s essay questions). Use the Simplify Chrome extension ↗ to auto-fill them.\nSimplify Chrome extension is a lifesaver\nSubmitting an application # 🖨️ Resumes # There are already a gazillion resources online about how to write an early career tech resume - some better than others. The general consensus for early career big tech roles is:\n1 page long. No exceptions. Seriously. No pictures of yourself, home address, or references. No crazy formatting that is hard to read or not ATS-parseable. Education first, with your expected graduation month and year. Recruiters check this first to decide if you\u0026rsquo;re eligible for internships or new grad roles. Numbers that quantify your impact. See this article for examples. PDF format. No .docx please. 🧠 These guidelines are directly aligned with how recruiters read your resume ↓, which is the most important goal to keep in mind:\nThe only purpose of a resume is to get you an interview. - Ace the Data Science Interview\nThat being said, resumes are not one-size-fits-all and should be thought of as a work-in-progress - you will want to get resume reviews ↓ occasionally.\n☝️ Particularly, if you\u0026rsquo;re applying for multiple different roles, you should have a version of your resume for each role - for example, one for SWE roles, one for Machine Learning roles, and one for Product Management roles.\n🖌️ What template should I use?\nIt doesn\u0026rsquo;t matter a ton - keep it simple and easy to read. You can use this very popular LaTeX SWE resume template ↗, or try out free online tools like flowcv.io.\n💌 Cover letters # Most people don\u0026rsquo;t submit them. They take up a lot of mental energy. Some employers appreciate them. Many employers don\u0026rsquo;t even read them.\nMaybe it\u0026rsquo;s best to save them for companies/roles you\u0026rsquo;re really, really passionate about and a really, really good fit for.\nIf you choose to write a cover letter:\nDo not use AI. It\u0026rsquo;s obvious. Even if you edit it. Do not just re-write your resume in paragraph form. There is no value added from this. See this PostHog article ↗ to get an idea of what makes a good vs. bad cover letter.\nPostHog writers share a lot of useful insights about the hiring process\n🎨 Portfolios # They are not super necessary, and most recruiters or hiring managers will never even see it. If you insist on having one, make sure it looks good:\nUse a ready-made portfolio theme. Unless you\u0026rsquo;re already a web design pro, templates are probably better-looking than anything you can make on your own as a beginner. Showcase high-quality projects. You want people to be blown away by the quality of your work, not underwhelmed. Include GitHub links. Also make sure your README\u0026rsquo;s are well-written and include a GIF of a quick demo. Don\u0026rsquo;t spend too much time on the portfolio website itself - what really matters is the quality of the projects that are showcased.\n📣 Pro tip: If you build someting really cool, talk about it on LinkedIn or other platforms - this is a great way to get some exposure and meet interesting people.\nNetworking and socializing # Understand your recruiters # There is a famous 2018 study ↗ by Ladders Inc, a job search platform, in which they used eye tracking to understand how recruiters parse your resume.\n🪖 Key takeaways from Ladders Inc\u0026rsquo;s study:\nRecruiters spend 7.4 seconds on average reading a resume. Top-performing resumes had simple F- or E-shaped layouts, clear sections with appropriately bolded and bulletted text, and a detailed \u0026ldquo;Objective\u0026rdquo; or \u0026ldquo;Summary\u0026rdquo; section at the top. Worst-performing resumes had cluttered layouts with long sentences, multiple columns, lack of sections or headers, and too many keywords. ⏰ This means that you should structure your resume with the idea that your recruiter will only spend 7 seconds scanning the top left corner of it - so that\u0026rsquo;s where your most striking information should be.\nYou can also check out these articles by PostHog which offer very insightful information on recruiter perspectives:\nWhat startup recruiters actually see when you apply for a job How to get a job at a startup 💭 To better understand the psychology of reading a resume, see this LinkedIn article ↗ by Lee Woodrow.\nRecruiters read resumes in an F-shaped pattern\n💼 Go to career fairs # If you consistently try to make the most out of career fairs, at worst you\u0026rsquo;ll end up with a large LinkedIn network of peers and friends to commiserate with - at best, you\u0026rsquo;ll get a job offer at the event itself.\nHere is everything you should try to do at a career fair:\nSubmit your resume to their database (if they have one) so recruiters can find it in searches Fill out every interest form or email list you can find. After the event, companies will email you special priority links to apply to their jobs Be interview-ready - this can happen on the spot at certain events Talk to at least 3 people who are not company-affiliated - basically try to make some friends Send a LinkedIn invite to everyone you had an actual conversation with (and include a note) 🚨 Popular tech career fairs # Greylock Techfair - a selective SF-based virtual career fair that hosts startups from Greylock\u0026rsquo;s portfolio RTC Virtual Career Summit - a virtual career fair for women+ who are members of RTC LWT Career Summit - a virtual and in-person career fair for LWT members (allies and other LGBTQ+ members are welcome) Out in Tech Career Talks - a virtual career fair for Out in Tech members (allies and other LGBTQ+ members are welcome) Grace Hopper Conference - a virtual and in-person conference plus career fair for women+. Hack the North\u0026rsquo;s sponsors expo CodePath\u0026rsquo;s virtual summit for CodePath students and alumni 💸 Can\u0026rsquo;t afford to attend?\nIf tickets to an event (cough, cough Grace Hopper) are expensive, please do not pay out of pocket. Instead, contact your university department, CS club, or employer and ask them to sponsor you to attend the event. Here is a guide about this ↗, written by the Grace Hopper Conference.\n🔎 Get resume feedback # Building your resume is an ongoing process - you should be updating it every few months, or every milestone you reach. Getting a fresh pair of eyes on your resume is very helpful - try to:\nAttend Resume Review events. These events will sometimes have industry recruiters who can give you key feedback, and you get to connect with them as a bonus. Rewriting the Code is an example organization that hosts such events for women and underrepresented genders in tech. Ask your peers at your school\u0026rsquo;s CS club, women-in-tech groups like WiCS and RTC, or any other private groups. Use an ATS parser like Jobscan to make sure the keywords in your resume match the job description, and that your resume is formatted correctly. Post your (anonymized) resume online and ask for feedback. See the resume review threads on r/cscareerquestions, r/resumes, r/csmajors, and Blind. Make sure to remove your name and any combination of information that someone could use to find you on LinkedIn, for safety reasons. u/unomsimpluboss has a lot of opinions on your resume\nTry to get referrals # Getting a referral for a job often means that at the very least you\u0026rsquo;re guaranteed that the recruiter will actually see your resume, and at best, you\u0026rsquo;ll get to skip the first 1 or 2 rounds of interviews.\n🔥 Warm referrals # The best kind of referrals you can get - these are referrals from people who know you well and can vouch for your skills and character. The more friends you have in your industry, the better your odds of getting a warm referral. To get there, you should:\nMeet a lot of people. Not recruiters or decision-makers - more like your classmates, hackathon teammates, club members, etc. Find out where they want to work, where they\u0026rsquo;ve worked in the past, and if they know anyone who works at your target companies. Be vocal about your goals. You want to be the first person that comes to mind when someone sees an opening at their company. If no one knows you want to be an [insert role] at [insert company], they can\u0026rsquo;t keep an eye out for you. Be reliable. You want people to feel confident that you\u0026rsquo;re a great candidate and will pass the interviews. 🧊 Cold referrals # The bane of every early career professional\u0026rsquo;s existence - they can be awkward and difficult to get. This Reddit post ↗ swears by the formula below:\nSend LinkedIn invites to anyone who is a 2nd or 3rd connection and has anything in common with you. As soon as they accept, send them a message, no longer than 1 paragraph, asking for a referral. 📣 The suggested message template is something like:\nHey, my name is X, and I am messaging you because I am interested in a job at Y. These roles I have sent below seem like a great fit for me, and I would love if you could refer me. I am a new grad interested in ABC. I worked on ABC extensively in [my project/internship/other]. Thank you so much for everything, and have a great day!\nKeep in mind that most people will probably ignore your message or maybe even decline to refer you - that is perfectly fine and does not reflect on either you or them. Just move on to the next person.\nu/texzone has some strongly worded yet insightful advice about cold referrals\n❌ What NOT to do # Do not pay for any career services. Including resume review services, templates, or referrals. There are plenty of free resources available online. Do not blindly follow advice from people who have not recently been involved in recruitment for the specific roles you want. This can include your university\u0026rsquo;s career services, your professors, your relatives, people who live in different continents or are pursuing a different field than you, etc. For example, in Europe, it\u0026rsquo;s common to include a photo of yourself on your resume - this is a big no-no in North America. Don\u0026rsquo;t be disingenuous. People can often tell if you are being fake, and most don\u0026rsquo;t appreciate it. Doing well in interviews # So you\u0026rsquo;ve landed an interview - congratulations 🎉 ! Once again, there is no shortage of information online on how to do well in tech interviews - here is a quick summary:\n👩🏻‍💻 For OAs and technical rounds, complete the Blind 75 on Neetcode and watch his explanation videos. If you\u0026rsquo;ve already completed those, practice solving the most common LeetCode problems your company uses. 🎥 For live coding interviews, practice explaining your thought process using mock interview platforms like Pramp, interviewing.io, or Headstarter. 🫱🏻‍🫲🏻 For behavioural rounds, make sure to practice answering questions using the STAR format (Situation, Task, Action, Result) and learn the company\u0026rsquo;s values and culture. Also make sure to prepare thoughtful questions to ask your interviewers about the role and company - never say that you have no questions to ask. 🔎 Prior to your interviews, gather as much information as possible by searching Glassdoor, Reddit, and Blind. Also ask your recruiter directly for more details on what to prepare and expect.\n🩵 Whatever you do, do not underestimate the behavioural round - sometimes a hiring manager will prefer to hire someone who is not technically perfect but shows strong potential and eagerness to learn over someone who is technically apt but seems difficult to work with.\nRegardless of the outcome of the interviews, try to display good character and keep a good relationship with your recruiter and interviewers - who knows, maybe in the future another role will open up and they will reach out to you again!\nPramp lets you practice live interviews with strangers, professionals, or your friends\nStill can\u0026rsquo;t find a job? # If all this advice still wasn\u0026rsquo;t enough to land you a job or internship, don\u0026rsquo;t panic - there are many other ways in which you can spend your time:\nTry to get alternative experience ↗ - like hackathons, open source, AI training, and a lot more. Build a high-quality project ↗ - and hey, maybe you can monetize it ! Just vibe for a bit - maybe it\u0026rsquo;s time for a well-deserved vacation ? 🧀 Gouda luck :-)\n","date":"28 September 2024","externalUrl":null,"permalink":"/posts/early-career-jobs/","section":"Posts","summary":" Context # You’re a student or recent grad, and you’re seeking your first internship or full-time job in North American tech.\n","title":"Getting a Job 101","type":"posts"},{"content":" Context # You have an app idea but you have no idea how to start building it. Maybe you\u0026rsquo;re at a hackathon and you only have 24 hours, maybe it\u0026rsquo;s to beef up your resume, or maybe you\u0026rsquo;re just doing this for fun.\nEveryone tells you to \u0026ldquo;build something unique\u0026rdquo; and \u0026ldquo;build something high-quality\u0026rdquo; - okay, cool, how?\nThis guide is for you.\nYou don\u0026rsquo;t have to start from scratch # 💰 There are a ton of free boilerplates on GitHub that already contain almost everything you need for a variety of apps. Their documentation often includes a setup guide, which means you can have something up-and-running within minutes.\nEven if you don\u0026rsquo;t want to use them, they can serve as a great reference for what a project should look like.\n🧠 That being said, try your best to understand how the features you are using work - you will be asked about them in interviews.\n🔎 To find more boilerplates on GitHub or Google, look up keywords like saas starter, mobile app boilerplate, etc.\nPick a boilerplate that visually appeals to you and has the features you want to include in your project. Below are some good examples for a variety of projects.\n🖥️ Web apps # The most common kind of project. You can build a web app for almost anything - a SaaS product, a blog, a game, a Chrome extension, a bot, an API, etc.\nDevToDollars has a great web SaaS boilerplate. This is what your website could look like with this template. Rasmic.xyz offers a slightly different SaaS setup. This is what your website could look like with this template. ixartz/SaaS-Boilerplate is another one that offers a ton of features. This is what your website could look like with this template. 📱 Mobile apps # There are two kinds of mobile apps you can develop:\nA native app will only be written in one language (Swift or Kotlin) and will only work on one platform (respectively either iOS or Android). A cross-platform app can be written in a variety of languages and frameworks, and will work on both iOS and Android devices. The most popular frameworks for this in 2024 are React Native and Flutter. ❗ Note that in either case, if you want to develop for iOS devices, you will probably need a Mac.\nIgnite is a really good-looking boilerplate for cross-platform mobile apps. Obytes Starter has a gazillion features for your cross-platform mobile app and offers a detailed setup guide. ❕ You should know that 70% of smartphones around the world in 2024 are Android devices, yet in the US that figure drops to 42%.\n🎮 Games # There are so many types of games you could make that it\u0026rsquo;s hard to recommend basic boilerplates. There are also not many starter kits available for games - you typically use a game engine like Unity or Unreal Engine. Your best bet is to look up YouTube tutorials for the kind of game you want to make.\nRogue-like Browser Boilerplate is a nice 2D dungeon-crawl-style JavaScript game with a lot of gameplay features. 🌐 Chrome Extensions # You can learn more about how Chrome extensions work using the official docs or by checking out this simple freeCodeCamp tutorial.\nchibat is a basic Chrome extension setup written in TypeScript. 🤖 Discord bots # A lot of different use cases for Discord bots: moderation, entertainment, role management, community building, etc. Find tutorials on YouTube, or use something like:\nkkrypt0nn has a lot of stars on GitHub. NamVr has a very simple setup guide. 📦 APIs # If you want to offer a service to other developers, e.g. an endpoint that takes in a birthday and returns a joke, you can build an API. Users would have to send a request (a birthday) to your server, and your server would send back a response (the joke).\nThese boilerplates are production-ready and have a lot of features:\nhagopj13/node-express-boilerplate has 8k+ stars on GitHub and a detailed README. maitraysuthar/rest-api-nodejs-mongodb is another Node.js starter that uses MongoDB as its database. 📝 Blogs and websites # You can get a full-fledged website out-of-the-box using frameworks like Astro or Next.js because they have a million free templates on GitHub.\nSome Astro themes Some Next.js themes Once you\u0026rsquo;re done coding your website, you can check out my other article ↗️ for instructions on how to connect your website to a custom domain and deploy it on the internet.\nWhat to use for the basics # 🚀 Frontend # Use a popular, widely-supported framework like Next.js to build your frontend. There are a billion tutorials online on how to build just about anything with Next.js, and a ton of free templates on GitHub.\nFor beautiful, consistent UI components like buttons, forms, and popups, check out component libraries like shadcn, Material UI, or DaisyUI.\nLastly, Tailwind CSS has become hugely popular for styling - it lets you write the CSS in an easier-to-read format and within the HTML itself, so you don\u0026rsquo;t have to worry about .css or \u0026lt;style\u0026gt; tags anymore.\n🗄️ Backend and database # You can use an all-in-one platform like Supabase or Firebase to provide most of your backend services. These platforms can handle things like authentication, databases, hosting API endpoints, and more.\n🌐 Hosting # Make your project publicly available on the internet using a hosting service like Vercel or Netlify.\nA pretty bold yet not unfounded claim by Supabase\nNow add fancy features # 🕵️‍♀️ Authentication # Allow users to sign up and log in to your app, and control who can access parts of your app.\nSupabase Auth or Firebase Auth. Clerk is a bit more complex to setup, but it\u0026rsquo;s a popular option if you\u0026rsquo;re not using an all-in-one platform. 💳 Payments # Receive or send payments on your app (e.g. monthly subscription).\nStripe is the most popular option by far. PayPal is another option, but it\u0026rsquo;s less developer-friendly. 📊 Analytics and graphs # Track how users are interacting with your app - extremely useful to know what features you should improve, remove, or create. If you have an aspiring data scientist friend, maybe they can do some analyses on the data you collect ?\nPostHog is blazingly fast to setup and gathers a ton of different metrics out-of-the-box. To display high-quality graphs and charts, look into Chart.js or D3.js.\n📡 Real-time features # Show real-time updates to users without having to refresh the page - e.g. a chatroom, a multiplayer game, or a live stock market tracker.\nSupabase Realtime or Firebase Realtime Database. Socket.io is the most widely used library for real-time features. 🧩 Third-party and custom APIs # There are a ton of additional features you can offer by using third-party APIs, like:\nOpenAI to generate AI text. Replicate AI to generate AI images. Google Maps to use maps, validate addresses in your forms, show commute times, and more. WeatherAPI to use weather information in your app. Twilio to handle SMS and phone calls, e.g. to send a verification code or reminders. Spotify API to interact with users\u0026rsquo; Spotify music. 🪝 If you want something more custom-built, like a feature where users can upload a photo and your app tells them what breed of dog it is, you can write your own code (Python and Node.js are popular choices). Then, you can host it as a serverless function so other people can access it via a public API endpoint - use something like:\nVercel Functions or Netlify Functions AWS Lambda isEven API is the most important API you will ever use (jk)\nWrite production-grade code # Repository and docs # 📖 Make sure you have a README.md and follow best practices for it. This file is the first impression anyone seeing your GitHub will have of your project (and thus of your skills).\n📹 At the top of the readme, include a GIF that demos your project - use ezGIF to turn your screen recording into a GIF.\n📁 The way your folders are structured should also follow best practices.\n✔️ Everytime you make a commit, you guessed it - follow best practices.\n📜 Finally, make sure all your features are well-documented. To make your docs prettier and better, you can use something like Mintlify or Docusaurus.\nCode quality # A formatter automatically checks your code against certain formatting rules and fixes it to match them. A linter checks your code for logic errors and styling bad practices.\n🧼 You can install the VSCode extensions Prettier and ESLint to do this for you. If you set them up correctly, they will clean up your code for you every time you save a file.\n✨ This next one might be a bit more of a nitpick, but every coding language has its own best practices. For example, Python conventionally uses snake_case for variable names, while JavaScript uses camelCase. If you\u0026rsquo;re curious, these are well-documented but a bit lengthy to read:\nPython pep8 for Python. Google TypeScript style guide for TypeScript. Google Java style guide for Java. Security # ✔️ Input validation\nMake sure users can only submit the kind of data you expect in your form, i.e. no malicious code or inputs that could crash your app. Zod is a great library for this, and pretty easy to use.\n🔒 Secrets management\nIt\u0026rsquo;s imperative that you do not store sensitive information like API keys and passwords directly in your code (and then publish it to GitHub!!). See how Vercel Environment Variables can handle this for you.\n🛡 Rate limiting\nStop people from spamming requests to your server and crashing it - this is not super simple to implement, but should be considered. Vercel Edge Middleware offers this capability.\nPerformance # 🐛 Figure out your bottlenecks\nUse a tool like Lighthouse to figure out what\u0026rsquo;s slowing down your web app. Is your software slow because you\u0026rsquo;re waiting on too many network requests, or is it slow because your computations take too long to run? For example, CRUD apps are often slowed down by too many network requests to the database (create, read, update, delete).\n🚀 Caching\nStore large data that doesn\u0026rsquo;t change often in a cache, so you don\u0026rsquo;t have to fetch it from the database every single time a user wants to view it. mdn web docs explains how caching works in general. Look up how to implement caching for your specific framework and use case, e.g. react native mobile app caching.\n🖼️ Image optimization If your images are too large and slow down your web app, look into more appropriate image formats, try to compress them, and implement responsive images. Imagemin is a popular image optimization tool.\n🐢 Lazy loading Wait to load certain parts of your app until a user scrolls to them - Cloudflare explains how to do this.\nTesting # If you write a bunch of automated tests for your code, you won\u0026rsquo;t have to worry as much about breaking things when you add new features or fix bugs - your tests will tell you before you even deploy your code.\nThere are many types of tests, with the most common being:\nUnit tests - test individual functions or components in isolation of all other code. Integration tests - test the flow of data between different parts of your code. End-to-end tests - test the entire flow of your app, from the user clicking a button to the server responding. 🧪 Popular libraries to setup and implement tests are:\nJest for JavaScript and TypeScript. Pytest for Python. JUnit for Java. Most testing tools come with a debugger that you can use to programatically \u0026ldquo;step through\u0026rdquo; your code and see what\u0026rsquo;s going wrong at every line - checkout this super helpful video to learn how to use a debugger in VSCode.\n⚙️ Also, you can setup your tests to run automatically every time you push your changes to GitHub using CI/CD (continuous integration/continuous deployment) tools. These tools will only authorize the deployment of your code if all your tests pass. Popular ones are GitHub Actions or CircleCI for any repository.\n🔴 Lastly, you can try to implement error handling and logging in your app. This will help you debug your app more efficiently when things go wrong. Many languages have built-in logging mechanisms, for example see Python logging, or you can use a third-party tool like Sentry.\nMost developers have a love-hate relationship with writing tests.\n💰 Making moneyyyyy # A lot of people have already shared absolute gems on everything you need to know about monetizing or launching a startup - from finding a problem to solve, getting users, building the product, and making money. Some of my faves:\n📹 I built a startup in 31 hours (SaaS) by Marc Lou. 📹 I earn 1,753$/day with this SIMPLE tech stack by Marc Lou. 📖 The Product-Market Fit Game by James Hawkins, the CEO of PostHog. 📹 How to OVER Engineer a Website by Fireship. These resources cover almost everything you need to know about launching a successful, profitable software product.\nBefore you go any further, I really recommend you at least watch the first video on 2X speed - it completely changed the way I think about building monetized software.\nLastly, if you want to raise funding or get close mentorship for your project, check out this section of my other article ↗️.\nMarc Lou is a solopreneur who has launched many failed startups and some highly successful ones.\n🥊 Just ship it # Seriously, just get it out there. Some famous quotes to inspire and encourage you:\nEighty percent of success is showing up. If you\u0026rsquo;re not embarrassed by the first version of your product, you\u0026rsquo;ve launched too late. Done is better than perfect. The best time to plant a tree was 20 years ago. The second best time is now. You don\u0026rsquo;t have to be great to start, but you have to start to be great. ✅ That being said, make sure your app is safe to ship, from a code and security perspective:\nUse tools like the Supabase production checklist or NextJS production checklist. Check out this excellent overview by ByteByteGo on shipping to production. 📣 Get eyes on your product # The last step of shipping your app is to promote it. Some popular options include:\nPost on LinkedIn about it. Note that LinkedIn made some changes to its algorithm in 2024 - read about that here. Post on Reddit or HackerNews. Launch on ProductHunt. A lot of popular software like Notion and Figma were launched on ProductHunt. Run ads ($$$). Pick a platform based on your target audience, e.g. Instagram for social apps targeting Gen Z, LinkedIn for B2B products, Google Ads for general products, etc. 🏁 Finish line # I mean, kinda. Projects are a perpetual work-in-progress - there is no finish line (unless you give up, boo tomato tomato 🍅).\nMake sure to enjoy the process though, celebrate your wins, and keep building.\nIf this article helped you build your first project, improve an existing project, or inspired you to launch something, please let me know 🥺\n🧀 Gouda luck :-)\n","date":"28 September 2024","externalUrl":null,"permalink":"/posts/early-career-projects/","section":"Posts","summary":"Context # You have an app idea but you have no idea how to start building it. Maybe you’re at a hackathon and you only have 24 hours, maybe it’s to beef up your resume, or maybe you’re just doing this for fun.\nEveryone tells you to “build something unique” and “build something high-quality” - okay, cool, how?\n","title":"Side Projects 101","type":"posts"},{"content":" Context # So, you don\u0026rsquo;t have an internship or job lined up. Or maybe you\u0026rsquo;re taking a light courseload and want to upgrade your resume in the meantime. Or maybe you\u0026rsquo;re just looking for something more fun than your regular 9-5.\nHere are some options for you.\n🌐 Contribute to open source # The best thing you can do for your resume as a student is probably contributing to open source projects. This shows recruiters and hiring managers that you can work on a team of experienced developers, write quality code that will be used worldwide, and understand the software development lifecycle.\nHowever, open source can be very daunting for first-timers, so there are several programs that help ease you in and offer structured guidance. Below are some excellent programs that pay good stipends and provide a structured learning environment.\nGoogle Summer of Code involves projects from 200+ organizations such as TensorFlow, Apache, etc. MLH Fellowship has you working on projects from Meta, Google, Amazon, and more Outreachy aims to support underrepresented groups (93% of participants are women) Julia Summer of Code involves projects in the Julia programming language Linux Kernel Mentorship Program involves projects in the Linux kernel \u0026hellip;and more! Two things you must do if you want to drastically improve your chances at getting into these programs:\nRead the application guide for the program and follow it extremely carefully. Reach out to the assigned mentors/maintainers before applying so you can build rapport. You can work on projects like TensorFlow, Apache, and more through Google Summer of Code\nBuild a project # ⛑️ You can join a project-based program or club, like:\nAI4Good Lab is a 7-week AI/ML program for women+ individuals. Develop for Good has you working on a group project for a non-profit. Blueprint has a chapter at many universities, or you can start your own! 👾 Or, you can attend a hackathon, like:\nHack the North is one of the largest hackathons in North America nwHacks is the largest hackathon in Western Canada TechNova is UWaterloo\u0026rsquo;s hackathon for women+ \u0026hellip; and more ↗! 🐙 Or, you can go it solo !\nSee Side Projects 101 ↗ for a step-by-step and some straightforward tips on how to make an impressive, polished side project. And who knows, you could even monetize it!\n💼 Prep for interviews # Google STEP is a developmental internship program that focuses on mentorship Uber Career Prep is an unpaid, 6-month fellowship for undergrads CodePath TIP is a free 10-week Data Structures and Algorithms (aka LeetCode) virtual course \u0026hellip;and more! These might offer a slight advantage when applying for jobs at the company that hosted you, but the main appeal is to have a structured learning experience that focuses on technical and behavioural interview skills.\n🏢 CodePath Emerging Engineers Summit\nCodePath hosts a yearly virtual summit for anyone who has completed or is currently taking a CodePath course. This event had a reputation for yielding a lot of big tech offers, as students were matched with companies ahead of the event and would receive interviews during the summit. I couldn\u0026rsquo;t find any recent statistics on offer rates, but it might be worth looking into.\nCodePath has really good industry connections and a popular career fair for their alumni\n🪙 Fund your business # Thiel Fellowship offers $100,000 to drop out of school and work on your startup Kleiner Perkins Fellowship places you in one of their portfolio companies for a summer internship Contrary Fellowship offers a research fellowship as well as a venture partner program Neo Scholars offers mentorship and resources to build your own startup, as well as fast-tracked interviews with their portfolio companies YC Startup School is a free online class that teaches you how to launch your own startup 👑 Practice leadership # Some companies like to see that you\u0026rsquo;re involved in your community and that you can show initiative. Some opportunities to build and demonstrate leadership skills include:\nCodePath Tech Fellowship is a paid part-time position where you act as a campus ambassador for CodePath courses Canada Learning Code has a lot of volunteer opportunities for teaching coding to various demographics Joining a hackathon organizing committee to show that you can lead a team, manage a project, and work under pressure. Find local hackathons on the MLH website. Joining or starting a school club such as a Blueprint chapter, WiCS, or the Computer Science club. Get research experience # 🎓 You can get support or funding to do academic research through programs like:\nNSERC USRA is a paid Canadian academic research internship for undergrads working under a professor Mitacs offer several national and international funded research opportunities Borealis AI Let\u0026rsquo;s Solve It pairs you with a Borealis AI ML Researcher to build a group project for social good Google CSRMP places you in a pod paired with a Google researcher who can help you navigate things like how to apply for grad school, how to write a paper, etc. 🏀 Or, you can shoot your shot at an AI/ML residency program:\nCohere Research Scholars is a 6-month research internship for people who have little to no experience in ML research OpenAI Residency is a similar 6-month program Meta AI Residency is 1-year long - seems defunct as of August 2024 but keep an eye out for future announcements Apple AIML Residency is also 1-year long Microsoft Cambridge Residency Program is run out of the UK in collaboration with the University of Cambridge Cohere Research Scholars is a relatively new, paid program that aims to support emerging AI talent\nThe end # Hopefully something piqued your interest in this list.\n🧀 Gouda luck :-)\n","date":"19 September 2024","externalUrl":null,"permalink":"/posts/early-career-internship-alternatives/","section":"Posts","summary":" Context # So, you don’t have an internship or job lined up. Or maybe you’re taking a light courseload and want to upgrade your resume in the meantime. Or maybe you’re just looking for something more fun than your regular 9-5.\nHere are some options for you.\n","title":"Internship Alternatives 101","type":"posts"},{"content":" 🤔 Who is this for ? # This is a list of resources you can use to get your foot in the door in the North American big tech software industry. It\u0026rsquo;s a braindump of everything I wish I knew when I was starting out, and it\u0026rsquo;s meant to be a starting point for you to Google stuff, learn about alternative paths, and find your own way. Obviously, it\u0026rsquo;s impossible to list every single opportunity on the planet, so I\u0026rsquo;ve included some search terms you can use to find out more about each topic.\n🚀 Insider tip:\nIf you are a student, sign up for the GitHub Student Developer Pack. It offers a ton of free or cheap perks like web domains, hosting services, canva, courses, etc.\nQuick find # See if any of these apply to you and jump to the relevant section directly:\nI want to be in tech but not software engineering - are there adjacent roles I can pursue? I don\u0026rsquo;t have anything lined up this summer - how can I fill my time and advance my career? I am not getting any interviews or offers - what am I doing wrong? I want to pursue a MSc or PhD - how can I start preparing? I don\u0026rsquo;t have a STEM degree but want to transition to tech - are there any options for me? I would like to build a side project but I\u0026rsquo;m so confused and overwhelmed - where should I start? I feel really shitty about myself and my accomplishments - is this normal? Don\u0026rsquo;t want to be a SWE? # Almost all of the content in this article is geared towards software engineering roles, so I first want to mention some alternative roles you could pursue that involve 0-100% coding and 0-100% other skills. Salaries, working hours, performance expectations, and career growth vary a lot between these roles, so make sure to do your research. Also, the interview process for these roles is probably very different from traditional SWE roles, so make sure to look up the specifics.\n✨ Tech roles that are not SWE Data Analysts / Data Scientists / Machine Learning Engineers use data to analyse past trends and/or predict future ones. Depending on the company, they could be responsible for anything from creating simple dashboards in Tableau to tuning advanced deep learning models in PyTorch. Product Managers are responsible for the success of a product, which means they need to understand the market, the user, the business, and the technology. They spend their time meeting with each department to make sure the product is on track, and they are responsible for the product roadmap. UX/UI Designers are responsible for the look and feel of a product. They spend their time creating wireframes, mockups, and prototypes, and they work closely with developers to make sure their designs can and will be implemented. QA / SDET are responsible for making sure the product works as intended. They might spend their time writing automated tests, manually testing the product, and working with developers to fix bugs. They might also be involved with the release process, CI/CD, and security. Technical Recruiters are responsible for finding and hiring the best talent for the company. They spend their time sourcing candidates, conducting interviews, and negotiating offers. They might also be involved with onboarding, retention, and diversity initiatives. Solutions Engineers / Customer Success Managers / Consultants and similar-sounding titles are responsible for guiding customers (which are often businesses) through the product. They spend their time understanding the customer\u0026rsquo;s needs, explaining how to tune the product to meet those needs, and generally making sure the customer is using the product effectively. To that end, they need to become extremely knowledgeable about the specific product they are supporting. Technical Writers / Developer Relations / Developer Advocates are responsible for creating and maintaining documentation, tutorials, and other resources for developers. This is a relatively new role that is not always clearly defined, but it could involve anything from writing blog posts or documentation to creating video tutorials to speaking at conferences. Tech Support / IT are responsible for helping internal or external users with technical issues. They spend their time answering questions, troubleshooting problems, and escalating issues to the appropriate team. They might also be involved with setting up new hardware, software, or networks. Startup Founders / VCs / CEOs are responsible for the success of the company. They spend their time setting the vision, hiring the team, raising money, and making sure the company is on track to meet its goals. There are many other roles in tech, and the lines between them are often blurry. For example, a Solutions Engineer might also be responsible for some technical writing, or a Product Manager might also be responsible for some UX/UI design. If you\u0026rsquo;re not sure which role is right for you, you can start by looking up the specifics of each role, talking to people who are in those roles, and trying out some projects or internships in those roles.\n⌛ Student opportunities # Freshmen and sophomores # There are many programs specifically designed for first and second year students to get their foot in the door at top tech companies. These are typically paid 12-week internships that put emphasis on mentorship and development by incorporating team rotations, workshops, and networking events.\n🍼 Internships for freshmen/sophomores\nGoogle STEP Microsoft Explore Uber STAR Meta University Duolingo Thrive Jane Street Immersion \u0026hellip;and more! 🔍 freshman internships computer science, programs like google step. Obviously these programs are highly competitive, so you should prepare by building a strong resume and practicing for the interview process. You can find the specifics about the interview processes online - 🔍 google step interview process.\n🛒 Shopify Dev Degree\nIf you\u0026rsquo;re a 1st year or 2nd year (in CS or otherwise), you might still be eligible to apply for the Shopify Dev Degree. This is a fully-paid CS degree at select universities, in addition to multiple paid internship rotations at Shopify for the duration of the degree. This program is obviously very competitive, but it\u0026rsquo;s definitely worth a shot.\n😟 What if I can\u0026rsquo;t get into any of the above?\nYou\u0026rsquo;re welcome to apply to internships that are not specifically targeting freshmen and sophomores. If you find that you weren\u0026rsquo;t able to secure an internship, you can still build your resume in other ways and try again next season.\nRising seniors # The expectation in big tech is that you would intern the summer before you graduate, and towards the end of your internship the company would extend you an offer to return full-time next year without re-interviewing. Some companies offer off-cycle internships (e.g. fall or spring) that can also lead to full-time offers.\nHowever you decide to structure your \u0026ldquo;path to return offer\u0026rdquo;, you probably want your last internship to be at the company you would like to work full-time at. Of course, you can always interview for full-time roles instead of relying on return offers, but keep in mind that interview processes for new grad roles are typically more difficult than for internship roles.\nYou should also be aware that timelines for interviewing for full-time roles can be as early as 12 months before the start date, and as late as 1 month before the start date. For example, Amazon recruits new grads almost a year out (e.g. interview in July 2022 for a start date in May 2023), but Electronic Arts recruits 2 months out. Look up the specific interview timelines for the companies you are interested in. Either way, it doesn\u0026rsquo;t hurt to just start applying early so you get more interview practice and possibly more offers to choose from.\nNot a college student? # If you are not in a 4-year degree, not a CS major, or not in school at all, there are still ways for you to become a software engineer. These programs are typically well-compensated, have a high conversion rate to full-time roles, and span anywhere from a few months to 2 years.\n👴🏻 Apprenticeships for non-traditional candidates\nLyft Software Engineering Apprenticeship Pinterest Software Engineering Apprenticeship LinkedIn REACH Apprenticeship Microsoft LEAP Apprenticeship Dropbox Engineering Apprenticeship Accenture Apprenticeship Spotify Tech Fellowship Airbnb Connect Engineering Apprenticeship \u0026hellip; and more! 🔍 software engineering apprenticeships, machine learning fellowships, non-traditional swe programs. Note that some of these programs might skip a year or be defunct, but new programs pop up all the time as well. If you were not able to secure a spot in an apprenticeship, you can still build your resume in other ways and try again the next season.\n🗄️ No internship, no problem # See Internship Alternatives 101 for a (long) list of other things you can do to fill your time and/or advance your career.\n🏗️ Building a great side project # See Side Projects 101 for a no-BS guide on what to use in your project and how to launch it.\n👔 Applying and interviewing # See Getting a Job 101 for a more detailed guide on how to apply and interview for software engineering roles.\n😟 Managing your mental health # At the end of the day, none of this will matter if you end up falling into a deep depression or having daily panic attacks. Online circles in big tech have a way of exacerbating negative feelings, promoting doomer perspectives, and making you feel bad about yourself. Sometimes, even real-life interactions can result in you feeling like you\u0026rsquo;re not good enough, you\u0026rsquo;re an idiot, you don\u0026rsquo;t know what you\u0026rsquo;re talking about, etc.\nThat being said, here are some tips to keep in mind if you want to mitigate the negative effects on your mental health:\n✅ Make friends, join or start a club, create a study group, and generally build your tiny little community of real-life friends or peers who are on the same journey as you. Share job postings, do mock interviews together, and even discuss things unrelated to tech. This will help you feel less alone and more connected to the world around you. ✅ Support others and celebrate their wins, whether it\u0026rsquo;s your best friend getting their first interview, or a stranger on LinkedIn getting an offer for your dream company. When you spread joy and positivity, you are not only helping your mental health directly, but you will also find that others want to help you and support you back. Your friends\u0026rsquo; successes are your successes too - you not only get to be friends with someone really cool, but you might even get a referral from them later on. ✅ Talk about your struggles while you are facing them. Maybe your friend is also insecure about something you thought they were very confident in, or maybe your classmate failed an interview twice before receiving their offer, or maybe someone you thought were a prodigy at something actually spends hours every day building that skill. Knowing these things while you are going through the same struggles goes a long way in helping you feel less alone and mitigating imposter syndrome. ✅ Pay it forward and pull others up once you get to the top, instead of kicking the ladder. You never know when you might need help again in the future. 🚫 Limit negative interactions by minimizing time spent talking to mean strangers on Reddit and Blind, taking LinkedIn posts with a grain of salt, and taking note of how certain people or communities make you feel. If you find that you consistently come out of an interaction feeling like a loser, maybe it\u0026rsquo;s time to distance yourself. And then, of course, there\u0026rsquo;s the obvious ones: eat healthy, exercise, get enough sleep, take breaks, etc.\n🫂 Thank you for reading # If you\u0026rsquo;ve made it this far, thank you for reading! I hope you took something away from this masterlist and found it somewhat helpful. If you have any questions or feedback, feel free to reach out on LinkedIn or via email.\n","date":"21 May 2024","externalUrl":null,"permalink":"/posts/early-career/","section":"Posts","summary":"🤔 Who is this for ? # This is a list of resources you can use to get your foot in the door in the North American big tech software industry. It’s a braindump of everything I wish I knew when I was starting out, and it’s meant to be a starting point for you to Google stuff, learn about alternative paths, and find your own way. Obviously, it’s impossible to list every single opportunity on the planet, so I’ve included some search terms you can use to find out more about each topic.\n","title":"Start here if you're a student","type":"posts"},{"content":"I didn\u0026rsquo;t know what to put as a cover for this. Sorry if the song gets stuck in your head.\nWhy should I follow this guide? # 🎨 Personal websites can be a great way to showcase your work, share your thoughts, and build your personal brand. You could also use them to host a photography or art portfolio, a blog, a resume, and more.\nMany personal websites are hosted on subdomains like username.github.io or username.vercel.app, but having a custom domain can make your website look more professional and memorable.\n😵‍💫 However, it can be a bit overwhelming to start from scratch and know where to begin. This tutorial aims to simplify the process and guide you through the steps to get your website up and running with minimal effort and a price tag of 0$ (if you\u0026rsquo;re a student).\nThis guide assumes that you have a rudimentary understanding of HTML, CSS, JavaScript, and Git. The terminal commands provided are for a Unix-based system, such as macOS or Windows Subsystem for Linux (WSL).\nStep 1: Generate the files for your website # We will be using an out-of-the-box template from Astro, a static site generator that is easy to use and has a low learning curve.\n❓ What is Astro?\nIt\u0026rsquo;s a modern web-development framework that allows you to build websites using Markdown (.md or .mdx) files. The files are then automatically converted into HTML (.html) as part of the build process.\nThe full list of features can be found in the Astro docs, but some highlights include:\n1️⃣ Better performance, thanks to something called component island architecture.\n2️⃣ Supports popular web frameworks like React, Vue, Svelte, etc.\n3️⃣ Beautiful templates that are community-sourced and freely available for blogs, portfolios, etc.\nThe quickstart guide for Astro is extremely straightforward and easy to follow, but here is the gist of it:\nInstall Node.js if you don\u0026rsquo;t have it already. Run npm create astro@latest in your terminal and follow the prompts. 👏 Done! Now, you can run npm run dev to see live changes to your website as you edit the files in the project.\nThere\u0026rsquo;s a ton of free Astro templates that you can use if you don\u0026rsquo;t like the way this default website looks, or you can just make your own layout.\nThis is what happens when you run npm create astro@latest and then npm run dev\nStep 2: Deploy your website # Deployment is the process of making your website available to the public. - ChatGPT 🤖\n⚙️ The next step is to upload your website\u0026rsquo;s files to the internet (or more precisely, to a server).\nAstro integrates easily with various cloud platforms, including Vercel which is free and easy to use. They even provide a complete guide on how to deploy an Astro website to Vercel - here is the TL;DR:\nRun npx astro add vercel in the project directory. Push your code to a Git repository (e.g. GitHub). Go to Vercel dashboard to sign-in and create a new project imported from your Git repository. ✅ Your website is now deployed and hosted on the internet on a Vercel subdomain (e.g. my-website-1234.vercel.app).\nStep 3: Move to a custom domain # If you are a student, sign up for the GitHub Student Developer Pack. It offers a ton of free and discounted perks for students, including free domain names and hosting services!\n💰 We will use Namecheap\u0026rsquo;s 1-year free .me domain offer (no credit card needed).\nOnce you claim it, search for available .me domain names, add them to your cart, and complete the free order.\n🪙 Note: If you are not a student or can\u0026rsquo;t sign up for the pack, you can still purchase a domain on Namecheap for as little as 0.48$CAD per year.\nThis is what the Namecheap order page looks like - the prices are per year\nStep 4: Connect your website to your custom domain # 🐻 A few more easy steps (bear with me), from the Vercel documentation:\nGo to your Vercel project settings and click on the \u0026ldquo;Domains\u0026rdquo; tab. Click \u0026ldquo;Add Domain\u0026rdquo; and enter the domain name you just purchased from Namecheap. Go back to Vercel and take note of the pair of nameservers (A Record and CNAME). You should see \u0026ldquo;Invalid configuration\u0026rdquo; for both nameservers at this point - that\u0026rsquo;s normal\nGo to the Namecheap dashboard and click on \u0026ldquo;Domain List\u0026rdquo;. Next to your domain name, click Manage \u0026gt; Advanced DNS \u0026gt; Add New Record. Add the nameservers from Vercel one at a time and save. Add two new records - one for of A type with \u0026ldquo;@\u0026rdquo; host, and one of CNAME type with \u0026ldquo;www\u0026rdquo; host\nHurray ! # 🎉 That\u0026rsquo;s it! It might take a few minutes for the changes to take effect, but soon you will be able to visit your website at your custom domain.\nFrom here, you can try:\nCustomizing it by changing the theme or creating your own layouts. Adding content like blog posts, projects, or a resume. Adding integrations like a contact form, Google Analytics, or a newsletter signup. See the Astro docs for an exhaustive list. 🧀 Gouda luck :-)\n","date":"29 February 2024","externalUrl":null,"permalink":"/posts/astro-website/","section":"Posts","summary":"I didn’t know what to put as a cover for this. Sorry if the song gets stuck in your head.\nWhy should I follow this guide? # 🎨 Personal websites can be a great way to showcase your work, share your thoughts, and build your personal brand. You could also use them to host a photography or art portfolio, a blog, a resume, and more.\n","title":"Creating a website for free","type":"posts"},{"content":"","date":"29 February 2024","externalUrl":null,"permalink":"/tags/tech/","section":"Tags","summary":"","title":"Tech","type":"tags"},{"content":"","externalUrl":null,"permalink":"/early-career/","section":"Early Career","summary":"","title":"Early Career","type":"early-career"},{"content":"","externalUrl":null,"permalink":"/resource-dumps/","section":"Resource Dumps","summary":"","title":"Resource Dumps","type":"resource-dumps"},{"content":"","externalUrl":null,"permalink":"/technical-writing/","section":"Technical Writing","summary":"","title":"Technical Writing","type":"technical-writing"}]