<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gabrielle Niamat</title>
    <description>The latest articles on DEV Community by Gabrielle Niamat (@pidgey0403).</description>
    <link>https://dev.to/pidgey0403</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F990011%2F23f7326d-f536-4f0e-b755-bd811288412b.jpg</url>
      <title>DEV Community: Gabrielle Niamat</title>
      <link>https://dev.to/pidgey0403</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pidgey0403"/>
    <language>en</language>
    <item>
      <title>Navigating the New Grad SWE Job Hunt: System Design Interviews - Part 2</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Fri, 03 Jul 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/pidgey0403/navigating-the-new-grad-swe-job-hunt-system-design-interviews-part-2-64i</link>
      <guid>https://dev.to/pidgey0403/navigating-the-new-grad-swe-job-hunt-system-design-interviews-part-2-64i</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;Table of Contents&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Part 4: The System Design Interview - Continued&lt;br&gt;
1. Caching 🗂️ &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#1.1"&gt;1.1 What is Caching?&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#1.2"&gt;1.2 Content Delivery Networks (CDNs)&lt;/a&gt;&lt;br&gt;
2. Proxies &amp;amp; Load Balancers 🔀&lt;br&gt;
3. Storage 🗄️&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#3.1"&gt;3.1 SQL vs. NoSQL&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#3.2"&gt;3.2 Object Storage&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#3.3"&gt;3.3 Replication&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#3.4"&gt;3.4 CAP Theorem &amp;amp; Consistency &lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="//#3.5"&gt;3.5 Sharding&lt;/a&gt;&lt;br&gt;
4. Wrap Up&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="p4"&gt;Part 4: The System Design Interview - Continued &lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Hi there, welcome back! 👋🏼 I recognize it's been over a year since my last post; life got in the way, and honestly between work and some personal stuff, writing just wasn't in the cards for a while. But I'm back for 2026, and I'm excited to finally close out this new grad guide before shifting my writing toward more intermediate-level content.&lt;/p&gt;

&lt;p&gt;If you're new to this series, I'd recommend starting from the very beginning &lt;a href="https://dev.to/pidgey0403/series/29032"&gt;here&lt;/a&gt;, or at least checking out &lt;a href="https://dev.to/pidgey0403/navigating-the-new-grad-swe-job-hunt-system-design-interviews-pt-1-2b5"&gt;part 1&lt;/a&gt;, which covers computer and application architecture, networking (TCP/UDP, DNS), and APIs (REST, GraphQL, WebSockets, gRPC). This article picks up right where that one left off - covering caching, proxies, and storage to round out the fundamentals.&lt;/p&gt;

&lt;p&gt;Alright, enough preamble. Let's get into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="caching"&gt;1. Caching 🗂️ &lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 What is Caching?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Caching&lt;/strong&gt; is the practice of storing copies of data in a fast, temporary location so you don't have to fetch it from the original (slower) source every time. The two main benefits are improving performance and reducing load on your databases and downstream services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache:&lt;/strong&gt; A high-speed data storage layer that holds a subset of data so that future requests are served faster than by accessing the primary storage location.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache levels&lt;/strong&gt; - Caching can happen at multiple layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client-side:&lt;/strong&gt; Browsers cache assets like images and scripts locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CDN:&lt;/strong&gt; Edge servers cache content close to the user geographically (more on this below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-side:&lt;/strong&gt; The application caches frequently accessed data in memory using tools like Redis or Memcached.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key terms:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cache Hit:&lt;/strong&gt; The requested data is found in the cache ✅&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache Miss:&lt;/strong&gt; The data isn't found — the system falls back to the primary source ❌&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache Hit Ratio:&lt;/strong&gt; The percentage of requests served from cache. Higher = better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Write strategies&lt;/strong&gt; — when new data is written, you need a way to keep the cache and database in sync:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write-through:&lt;/strong&gt; Written to cache and database simultaneously. Consistent, but slower writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write-back (Write-behind):&lt;/strong&gt; Written to cache first, database updated asynchronously. Faster writes, but risk of data loss if the cache goes down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write-around:&lt;/strong&gt; Written directly to the database, bypassing the cache. Prevents caching data that likely won't be re-read soon.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Eviction policies&lt;/strong&gt; — when a cache is full, something has to go:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LRU (Least Recently Used):&lt;/strong&gt; Removes the item accessed longest ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LFU (Least Frequently Used):&lt;/strong&gt; Removes the item accessed fewest times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FIFO (First In, First Out):&lt;/strong&gt; Removes the oldest item regardless of access frequency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Popular server-side caching tools are Redis and Memcached. Redis is the more common recommendation since it supports richer data structures, optional persistence, and replication — making it useful beyond just caching (e.g., session management, pub/sub, leaderboards).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache invalidation&lt;/strong&gt; (deciding when to remove or update stale data)  is genuinely one of the trickier problems in distributed systems, and it's worth knowing about even if you never have to implement it yourself. The two most common approaches are setting a TTL (&lt;strong&gt;Time-to-Live&lt;/strong&gt;) on cached entries so they expire automatically, or explicitly invalidating cache entries whenever the underlying data changes. &lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Content Delivery Networks (CDNs)
&lt;/h3&gt;

&lt;p&gt;A CDN is a geographically distributed network of servers that caches static content — images, videos, CSS, JavaScript — and delivers it to users from the server closest to them, reducing latency.&lt;/p&gt;

&lt;p&gt;Two main caching models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push CDN:&lt;/strong&gt; Content is proactively pushed to edge nodes before it's requested. Best for content that doesn't change often.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull CDN:&lt;/strong&gt; Content is fetched from the origin on the first request, then cached on the CDN going forward. Better for large sites with lots of assets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;u id="proxies"&gt;2. Proxies &amp;amp; Load Balancers 🔀&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;proxy&lt;/strong&gt; is an intermediary server that sits between a client and a backend. There are two types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forward Proxy:&lt;/strong&gt; Sits in front of the client — the server doesn't know who the original client is. Common use cases: VPNs, corporate firewalls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reverse Proxy:&lt;/strong&gt; Sits in front of the server — the client doesn't know which backend is handling its request. Nginx is a popular example. In system design, when someone says "proxy," they typically mean this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;load balancer&lt;/strong&gt; is a type of reverse proxy that distributes incoming traffic across multiple servers. Common strategies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Round Robin:&lt;/strong&gt; Requests are sent to servers in rotation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Least Connections:&lt;/strong&gt; Traffic goes to whichever server has the fewest active connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP Hashing:&lt;/strong&gt; A client's IP is hashed to consistently route them to the same server — useful for maintaining session state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Regular vs. Consistent Hashing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With regular (modular) hashing &lt;code&gt;(hash(key) % num_servers)&lt;/code&gt;, adding or removing a server causes almost every key to be remapped which is essentially a full reshuffle every time. &lt;strong&gt;Consistent hashing&lt;/strong&gt; fixes this full &lt;code&gt;N&lt;/code&gt; shuffle problem by mapping both servers and requests onto a virtual ring, so when a server is added or removed, only the keys that were assigned to that specific server need to be remapped. This minimizes disruption during scaling and is widely used in distributed caches and databases.&lt;/p&gt;

&lt;p&gt;As an extra fact, reverse proxies also provide SSL termination, security (hiding internal server structure), caching, logging, and response compression — all in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="storage"&gt;3. Storage 🗄️&lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 SQL vs. NoSQL
&lt;/h3&gt;

&lt;p&gt;One of the most common system design questions is: "What kind of database would you use, and why?"&lt;br&gt;
&lt;strong&gt;SQL (Relational Databases)&lt;/strong&gt; store data in structured tables with predefined schemas. Popular examples: PostgreSQL, MySQL. Most use B+ trees as their primary index structure, which keeps data sorted and supports efficient range queries.&lt;/p&gt;

&lt;p&gt;SQL databases follow &lt;strong&gt;ACID&lt;/strong&gt; properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt;tomic: Every operation in a transaction succeeds completely, or none of it does. No partial writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C&lt;/strong&gt;onsistent: A transaction can only bring the database from one valid state to another — no rule-breaking in between.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I&lt;/strong&gt;solated: Concurrent transactions execute independently of each other, as if they were run sequentially.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D&lt;/strong&gt;urable: Once a transaction is committed, it stays committed — even if the system crashes immediately after.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NoSQL (Non-Relational Databases)&lt;/strong&gt; trade some structure and strict consistency for flexibility and horizontal scalability. Instead of ACID, most follow &lt;strong&gt;BASE&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;B&lt;/strong&gt;asically &lt;strong&gt;A&lt;/strong&gt;vailable: The system guarantees availability — it will always return a response, even if it's stale or partial.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;S&lt;/strong&gt;oft State: The state of the system can change over time, even without new input, as replicas sync up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;E&lt;/strong&gt;ventual Consistency: Given enough time, all replicas will &lt;em&gt;eventually&lt;/em&gt; get the update/correct value.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 Object Storage
&lt;/h3&gt;

&lt;p&gt;Object storage is designed for large, unstructured files — images, videos, backups — rather than queryable data. &lt;strong&gt;Amazon S3&lt;/strong&gt; is the most widely used example. Unlike traditional file systems, there's no folder hierarchy — just a flat structure of objects, each with a unique key and metadata.&lt;/p&gt;

&lt;p&gt;Key properties: highly durable, cost-effective at scale, accessible via HTTP API. Not suitable for frequently updated records or low-latency lookups.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Replication
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Replication&lt;/strong&gt; is the practice of copying data across multiple database instances to improve availability, read performance, and fault tolerance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Synchronous replication:&lt;/strong&gt; The primary waits for replicas to confirm the write before returning success. Always consistent, but slower.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous replication:&lt;/strong&gt; The primary confirms immediately; replicas catch up later. Faster, but there's a brief window of inconsistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architectures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Leader-Follower:&lt;/strong&gt; One primary handles writes; replicas serve reads. Simple, but the primary is a single point of failure for writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leader-Leader (Multi-Primary):&lt;/strong&gt; Multiple nodes accept writes. More resilient, but introduces conflict resolution complexity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.4 CAP Theorem &amp;amp; Consistency
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;CAP Theorem&lt;/strong&gt; states that a distributed data store can only guarantee two out of three of the following properties simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C&lt;/strong&gt;onsistency: Every read returns the most recent write, or an error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt;vailability: Every request gets a response (not necessarily the freshest data).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P&lt;/strong&gt;artition Tolerance: The system keeps running even if some nodes can't communicate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since network partitions are inevitable in real distributed systems, &lt;em&gt;P is always required&lt;/em&gt; — so the real trade-off is between C and A:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CP systems&lt;/strong&gt; (e.g. HBase): Refuse requests during a partition rather than return stale data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AP systems&lt;/strong&gt; (e.g. Cassandra, DynamoDB): Stay available during partitions but may return slightly outdated data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This connects to the &lt;em&gt;strong vs. eventual consistency&lt;/em&gt; trade-off: strong consistency guarantees every read reflects the latest write (higher latency); eventual consistency allows brief inconsistencies in exchange for better performance and availability.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Sharding
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sharding&lt;/strong&gt; is a horizontal partitioning strategy where data is split across multiple databases (shards), each holding a subset of the total dataset. It's how you scale a database beyond what a single machine can handle.&lt;/p&gt;

&lt;p&gt;Common sharding strategies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Range-based:&lt;/strong&gt; Partition by a value range (e.g. user IDs 0–25M on shard A, 25M–50M on shard B). Simple, but can lead to uneven load if some ranges are more active ("hot shards").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hash-based:&lt;/strong&gt; Hash the shard key to assign records. Distributes data evenly, but makes range queries harder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Directory-based:&lt;/strong&gt; A lookup table maps records to their shard. Very flexible, but the lookup table itself becomes a bottleneck.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main downside of sharding is that cross-shard queries are expensive and complex. Re-balancing data when adding or removing shards is also non-trivial — another place where consistent hashing helps.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="conclusion"&gt;4. Wrap Up!&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;That wraps up the system design series! 🎉&lt;/p&gt;

&lt;p&gt;Across both parts, we covered computer architecture, scalability fundamentals, networking, APIs, caching, proxies, and storage. As I mentioned in Part 1 — formal system design rounds are rare for new grad roles in Canada, but having a solid handle on these fundamentals will make a real difference when verbal technical questions come up, and it'll set you up well for your first few months on the job.&lt;/p&gt;

&lt;p&gt;Start with the core concepts, practice explaining them out loud, and don't stress about memorizing every detail. The more you read, design, and discuss these systems, the more naturally it all clicks. &lt;/p&gt;

&lt;p&gt;And honestly, I wouldn't worry too much about knowing these topics in detail - I was personally asked about them at a higher level and managers were often impressed that I knew some fundamentals a all!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was written with the help of AI but all thoughts and opinions are my own.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>career</category>
      <category>interview</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>I Signed Up for a Software Engineer Mentor. I Got an AppSec Engineer Instead.</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Sat, 27 Jun 2026 19:57:44 +0000</pubDate>
      <link>https://dev.to/pidgey0403/i-signed-up-for-a-software-engineer-mentor-i-got-an-appsec-engineer-instead-32pd</link>
      <guid>https://dev.to/pidgey0403/i-signed-up-for-a-software-engineer-mentor-i-got-an-appsec-engineer-instead-32pd</guid>
      <description>&lt;p&gt;I've been with my new company for a little over 2 months now. I joined at the end of April as an SWE II (go me 🥹🎉). A few weeks into joining, I saw a post on Slack that our next Women in Tech mentorship cohort was starting. Being brand new, I of course, didn’t hesitate to jump at the opportunity. &lt;/p&gt;

&lt;p&gt;When I signed up, I was determined to get matched with a mentor strong in system design and architectural thinking. What I got instead was an AppSec engineer — and just being honest, my initial reaction was disappointment. System design felt like the move, the natural next step for a fresh intermediate engineer trying to broaden her technical foundation. I knew security was important, of course, but it hadn't felt like the most critical thing for me to be learning right now.&lt;/p&gt;

&lt;p&gt;Two sessions in, I'm still very much a beginner so I hesitated to write this post just yet — but I'm truly already feeling like this pairing has been invaluable. It's changing how I think about the code I ship every day, and I hadn't realized how big of a gap this was in my thinking until someone sat me down and started walking me through it. I'm sharing my learnings here in case you're like me — an engineer who never really considered cybersecurity as something that fell into &lt;em&gt;your&lt;/em&gt; lane.&lt;/p&gt;




&lt;h3&gt;
  
  
  What even is cybersecurity?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1h67461835jw2vjl20s5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1h67461835jw2vjl20s5.png" width="800" alt="Chiikawa thinking" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At a high level I knew what cybersecurity was — or at least I thought I did. My mentor opened our first session with a simple framing: &lt;strong&gt;cybersecurity&lt;/strong&gt; exists to &lt;em&gt;protect networks, devices, and data from unauthorized access&lt;/em&gt; — because unauthorized access leads to fraud, criminal activity, and loss of trust. At a smaller fintech company especially, that trust is everything — it's not something we can afford to lose. Cybersecurity breaches affect real businesses and real money, and if we lose that confidence with our customers, we’re, for a lack of a better term, SOL. &lt;/p&gt;

&lt;p&gt;The whole field is built on three central pillars, called the &lt;strong&gt;CIA&lt;/strong&gt; &lt;strong&gt;triad&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confidentiality&lt;/strong&gt; — data should only be accessible to people who are authorized to see it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt; — data shouldn't be modifiable without authorization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability&lt;/strong&gt; — access to resources is controlled; you get what you need, not everything&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The tricky part is translating those three ideals into how an actual engineering organization operates, which is exactly where different security teams come in.&lt;/p&gt;




&lt;h3&gt;
  
  
  Blue teams, Red teams, and everything in between
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy9vbec27s1e6jw9h6ngf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy9vbec27s1e6jw9h6ngf.png" width="799" alt="Cybersecurity teams" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security teams are typically broken into a few distinct groups — and yeah, they really do go by colours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defensive security (blue team)&lt;/strong&gt; is focused on protection and detection, and there are a few subgroups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SOC (Security Operations Center)&lt;/strong&gt; — monitors all company activity and flags suspicious behaviour. Why is someone from HR accessing an AWS server at 2am? The SOC catches that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident Response&lt;/strong&gt; — steps in when something alarming is confirmed. This is notably different from engineering incident response and something I found pretty cool: you can't just fix it and move on. You have to preserve evidence and chain of custody for potential forensics — treat it more like a crime scene than a bug. You might even tell people not to restart their computers because the data in memory could matter later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threat Hunting&lt;/strong&gt; — proactively digs through existing logs to understand what could have happened if a known vulnerability had been exploited. Sometimes in doing that exercise, they uncover incidents that were actually real.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Offensive security (red team)&lt;/strong&gt; flips the script — instead of defending, you're simulating what an attacker would do. The main approaches are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Penetration Testing&lt;/strong&gt; — actively attempting to find and exploit vulnerabilities before a real attacker does. There are three types: &lt;em&gt;black box&lt;/em&gt; (no prior knowledge), &lt;em&gt;grey box&lt;/em&gt; (some knowledge), and &lt;em&gt;white box&lt;/em&gt; (full knowledge of the system). This is what most fintechs focus on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red Teaming&lt;/strong&gt; — a full 360-degree security assessment that goes beyond the application to include physical access, social engineering, even impersonating employees to see if you can get into a building. This is much broader in scope, but also more expensive and less common.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There can also be a &lt;strong&gt;purple team&lt;/strong&gt;, which is a hybrid of blue and red. It tests both security controls and defending against them at the same time.&lt;/p&gt;




&lt;h3&gt;
  
  
  Where AppSec fits in (and where it doesn't)
&lt;/h3&gt;

&lt;p&gt;AppSec doesn't neatly slot into blue or red. It's a combination of both, but with a very specific focus: &lt;em&gt;protecting the product&lt;/em&gt;, not the company as a whole.&lt;/p&gt;

&lt;p&gt;If someone's laptop gets stolen, that's an enterprise security concern which is important, but it’s not AppSec's domain. &lt;strong&gt;AppSec&lt;/strong&gt; is all about &lt;em&gt;securing the application and its users&lt;/em&gt; (think: protecting a product that real businesses use to manage their money).&lt;/p&gt;

&lt;p&gt;What I found really surprising is how much tooling quietly exists in the background to support this. Some of it was already running quietly in my own daily workflows — I just never knew what it was actually doing. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SAST (Static Application Security Testing)&lt;/strong&gt; — scans code for known vulnerability patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SCA (Software Composition Analysis)&lt;/strong&gt; — checks runtime dependencies for known malware or vulnerabilities; this can be run on most pull requests via Datadog&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sonatype&lt;/strong&gt; — acts as a package firewall, blocking downloads of suspicious or low-confidence packages to guard against supply chain attacks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There can also be custom in-house tools — for example a bot that scans all the links on a company’s marketing directory page to check whether domains are still valid and not about to expire. This is important because an expired domain can be bought by an attacker and used for phishing or social engineering. I genuinely had no idea that this was even a threat vector before this.&lt;/p&gt;




&lt;h3&gt;
  
  
  What ultimately stuck with me - "100% secure doesn't exist"
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwfqlz0q1w277teu1lhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwfqlz0q1w277teu1lhj.png" alt=" " width="364" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My mentor closed our first session with something I keep coming back to: perfect security is an unobtainable illusion. Chasing 100% security leads to hyper-rigidity, and that level of rigidity doesn't belong in an environment that prioritizes shipping fast to serve customers. We &lt;em&gt;have&lt;/em&gt; to balance shipping features quickly with shipping them securely — and the way you do that is through layered controls. If we can implement enough guardrails that an attacker has to work really hard to get anywhere, and if they do gain access somewhere they shouldn't, it's limited in scope and impact — then we've done the best we can.&lt;/p&gt;

&lt;p&gt;A genuinely mind-blowing example of why this mindset matters is the Target breach of 2013 (something I'd never heard of before this). Hackers didn't break into Target's systems &lt;em&gt;directly&lt;/em&gt;. They compromised the network of an HVAC company that serviced Target's physical stores, then pivoted from there into Target's internal infrastructure, eventually reaching point-of-sale systems. The result: &lt;strong&gt;40 million&lt;/strong&gt; credit and debit card numbers stolen, &lt;strong&gt;70 million&lt;/strong&gt; customer records compromised, an &lt;strong&gt;$18.5 million&lt;/strong&gt; settlement, and over &lt;strong&gt;$200 million&lt;/strong&gt; in estimated total losses — driven by damaged customer trust and a tanking share price.&lt;/p&gt;

&lt;p&gt;It's not enough to trust that your third-party integrations are secured — never assume someone else has it covered. The HVAC vendor's network wasn't Target's problem — until it very much was, and by then it was far too late.&lt;/p&gt;




&lt;h3&gt;
  
  
  How an AppSec mindset is starting to change things for me
&lt;/h3&gt;

&lt;p&gt;I came into this mentorship wanting to think bigger about system design. What I didn't expect was that AppSec would make me think more carefully about the systems &lt;em&gt;I'm already building&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The thing my mentor kept highlighting is that AppSec at our company isn't a blocker. The team won't hold up a feature over a security concern — they'll flag it, provide recommendations, and work within the reality that the business needs to move fast. But, honestly that's actually &lt;em&gt;all the more reason&lt;/em&gt; for &lt;strong&gt;engineers&lt;/strong&gt; to be thinking about this, not less. If AppSec is a collaborator rather than a gatekeeper, the security mindset has to live somewhere — and a big part of that somewhere is the people planning projects and writing the code.&lt;/p&gt;

&lt;p&gt;I didn't know I needed to learn any of this quite yet. Two sessions in, I'm really glad I accidentally did.&lt;/p&gt;




&lt;p&gt;Disclaimer: This post was written with the help of AI (Claude Sonnet 4.6), but all thoughts, opinions, and experiences are my own and have been reviewed and edited by me.&lt;/p&gt;

</description>
      <category>security</category>
      <category>software</category>
      <category>learning</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Navigating the New Grad SWE Job Hunt: System Design Interviews - Part 1</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Tue, 01 Jul 2025 15:00:00 +0000</pubDate>
      <link>https://dev.to/pidgey0403/navigating-the-new-grad-swe-job-hunt-system-design-interviews-pt-1-2b5</link>
      <guid>https://dev.to/pidgey0403/navigating-the-new-grad-swe-job-hunt-system-design-interviews-pt-1-2b5</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;Table of Contents&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;1. Part 3: The System Design Interview&lt;br&gt;
2. Educational Resources 📚&lt;br&gt;
3. Computer and Application Architecture 💻&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.1 Computer Architecture&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.2 Application Architecture&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.3 Design Requirements&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.4 Considerations for Designing Scalable Systems&lt;br&gt;
4. Networking&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.1 Internet Protocol (IP) Addresses&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.2 Transmission Control Protocol (TCP) &amp;amp; User Datagram Protocol (UDP)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.3 Domain Name System (DNS)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.4 Anatomy of a URL&lt;br&gt;
5. Application Programming Interfaces (APIs) 👩🏼‍💻&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.1 What Are APIs?&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.2 HTTP Structure Breakdown&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.3 Designing Robust &amp;amp; Practical APIs&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="p3"&gt;1. Part 3: The System Design Interview&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Hi there! It’s been a while since the last post in this series; thanks for your patience, and welcome back! I’ve been busy settling into my new job, which I started last fall, but I’m excited to continue. Next up on our list is preparing for system design-style interviews and questions, so let’s dive in.&lt;/p&gt;

&lt;p&gt;Before we get into the core concepts, I want to clarify something: in my experience interviewing for new grad roles in Canada, system design interviews were rare. I’ve spoken with recruiters and candidates at FAANG companies who also confirmed they’re uncommon, if not absent, at the Junior/SWE I level. So, I suggest focusing on a high-level understanding of the fundamentals to set yourself up for success. 😊&lt;/p&gt;

&lt;p&gt;Here’s what we’ll cover in this series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fundamentals&lt;/strong&gt;: Scalability, availability, throughput, reliability, fault tolerance, latency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking&lt;/strong&gt;: TCP/UDP, DNS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APIs&lt;/strong&gt;: HTTP(s), REST, GraphQL, WebSockets, gRPC&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt;: Caching, Content Delivery Networks (CDNs), load balancing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Databases:&lt;/strong&gt; NoSQL, SQL, replication, sharding, object storage, CAP theorem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture:&lt;/strong&gt; Microservices vs. monolithic architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to go further, try designing systems like a URL shortener or Google Drive, or revisit past projects and think about how you’d scale them. That said, this might be overkill—in most cases, a solid grasp of the topics above is more than enough to handle any entry-level system design questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;u id="r"&gt;2. Educational Resources 📚&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Before we take a glance at the most critical topics to know for your system design interviews, I'd like to provide a list of learning materials so you can dive deeper when you're ready to explore more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;System Design repo by &lt;em&gt;systemdesign42&lt;/em&gt; - &lt;a href="https://github.com/systemdesign42/system-design" rel="noopener noreferrer"&gt;https://github.com/systemdesign42/system-design&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;System Design Primer repo by &lt;em&gt;donnnemartin&lt;/em&gt; - &lt;a href="https://github.com/donnemartin/system-design-primer" rel="noopener noreferrer"&gt;https://github.com/donnemartin/system-design-primer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;NeetCode's&lt;/em&gt; System Design for Beginners course - &lt;a href="https://neetcode.io/courses/system-design-for-beginners" rel="noopener noreferrer"&gt;https://neetcode.io/courses/system-design-for-beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;u id="c"&gt;3. Computer and Application Architecture 💻&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;To start, let’s look at the fundamentals of computer architecture before moving on to how we build systems that scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="ca"&gt;3.1 Computer Architecture&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdt5fvqovhsei5fyeh8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdt5fvqovhsei5fyeh8f.png" alt="Memory hierarchy diagram in computer architecture" width="799" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be familiar with the key components of a computer’s hardware architecture, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Disks&lt;/strong&gt;: Persistent, non-volatile storage. Know the difference between &lt;strong&gt;Hard Disk Drives (HDDs)&lt;/strong&gt; and &lt;strong&gt;Solid State Drives (SSDs)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Random Access Memory (RAM)&lt;/strong&gt;: Temporary storage used to hold data for quick access by the CPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Central Processing Unit (CPU)&lt;/strong&gt;: The “brain” of the computer that executes instructions and handles computation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache (SRAM)&lt;/strong&gt;: A small, high-speed memory located close to the CPU that stores frequently accessed data to reduce latency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should understand how these components compare in terms of read/write speed, access latency, and storage capacity at a high level.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="aa"&gt;3.2 Application Architecture&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;While computer architecture focuses on hardware within a single machine, application architecture looks at how thousands of computers (or nodes) work together to run modern software and services. Key concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client-Server Model&lt;/strong&gt;: Understand the basic interaction where clients (e.g. browsers or apps) send requests and servers respond with data or services.&lt;/li&gt;
&lt;li&gt;Scaling:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vertical Scaling&lt;/strong&gt;: Adding more resources (e.g. CPU, memory) to a single server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Horizontal Scaling&lt;/strong&gt;: Adding more machines to handle the load. This is generally preferred in large systems for greater reliability and scalability and is often supported by &lt;strong&gt;load balancers&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Supporting Services: Large-scale systems require more than just clients and servers. You’ll often see tools for:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logging&lt;/strong&gt; (e.g. ELK stack) to capture app behaviour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt; (e.g. DataDog dashboards) to track performance metrics and alerts for errors, latency, and usage patterns.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="dr"&gt;3.3 Design Requirements&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd85buc6qrvwk5r9x83g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd85buc6qrvwk5r9x83g.png" alt="Client uptime promises" width="799" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At a high level, system design comes down to solving three fundamental challenges:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Moving Data: Efficiently transferring data between geographically distributed clients and servers.&lt;/li&gt;
&lt;li&gt;Storing Data: Ensuring data persistence and accessibility.&lt;/li&gt;
&lt;li&gt;Transforming Data: Processing and manipulating data to derive value.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You’ll also want to understand how &lt;strong&gt;Service Level Agreements (SLAs)&lt;/strong&gt; and &lt;strong&gt;Service Level Objectives (SLOs)&lt;/strong&gt; shape system design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SLAs: A formal contract with clients defining guarantees like up-time (e.g. 99.999% monthly availability). If the SLA isn’t met, providers often owe financial compensation.&lt;/li&gt;
&lt;li&gt;SLOs: Internal targets that help ensure SLAs are consistently met (e.g. 99.99% response time under 200ms). These agreements are a major driver behind the focus on up-time, fault tolerance, and reliability in distributed system design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="cdss"&gt;3.4 Considerations for Designing Scalable Systems&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;When designing systems at scale, consider these critical factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Availability&lt;/strong&gt;: The percentage of time a system is operational. Measured in "nines" (e.g. 99.999% availability equates to ~5 minutes of downtime annually).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;: The likelihood a system operates without failure over a specified period.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fault Tolerance&lt;/strong&gt;: The system's ability to detect and recover from failures without affecting functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redundancy&lt;/strong&gt;: Backup resources, such as shadow servers, to maintain service continuity during failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput&lt;/strong&gt;: The volume of operations a system can handle within a given time frame.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency&lt;/strong&gt;: The round-trip time for a request to travel from client to server and back.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;u id="n"&gt;4. Networking&lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;u id="nb"&gt;4.1 Internet Protocol (IP) Addresses&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Next up, let’s cover some networking fundamentals. You’ve probably heard the term IP address tossed around — and maybe even configured one before — but here’s a quick refresher just in case:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IP Address&lt;/strong&gt;: A unique identifier for every device, allowing them to receive and send data on a network. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of it like a digital home address for your device. Every phone, computer, or smart toaster that connects to a network gets one so it can send and receive information.&lt;/p&gt;

&lt;p&gt;There are two main types of IP addressing systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IPv4&lt;/strong&gt;: The older, more common one - uses 32-bit addresses (e.g. &lt;code&gt;192.168.0.1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv6&lt;/strong&gt;: The newer system - uses 128-bit addresses to support the massive growth of internet-connected devices (e.g. &lt;code&gt;3002:0bd6:0000:0000:0000:ee00:0033:6778&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When multiple apps run on the same device (which they always do), &lt;strong&gt;ports&lt;/strong&gt; help keep things organized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Think of a port like an apartment number in a building. It lets your device know which app a packet of data is meant for. For example, port 80 is typically used for HTTP (web browsing).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, how does data get from one device to another?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Internet Protocol (IP)&lt;/strong&gt; breaks information into &lt;strong&gt;data packets&lt;/strong&gt; — each with a header (think: address info), the actual content (payload), and a trailer (extra info like error checking).&lt;/li&gt;
&lt;li&gt;Devices can live on &lt;strong&gt;public networks&lt;/strong&gt;, where they have a globally unique IP address assigned by an Internet Service Provider (ISP), making them reachable from anywhere.&lt;/li&gt;
&lt;li&gt;Or they can be part of &lt;strong&gt;private networks&lt;/strong&gt;, like your home Wi-Fi, where devices use local IPs and aren’t directly accessible from the outside world.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are two types of IP addresses you’ll come across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Static IP&lt;/strong&gt;: Manually set and doesn't change - useful for things like servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic IP&lt;/strong&gt;: Assigned temporarily by a network (usually via DHCP), and it can change over time - which is what most home devices use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="tcp"&gt;4.2 Transmission Control Protocol (TCP) &amp;amp; User Datagram Protocol (UDP)&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppi0y2pzzgidlkabr115.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppi0y2pzzgidlkabr115.png" alt="TCP vs UDP benefits and drawbacks" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When data is sent across a network, it's broken into smaller pieces called &lt;strong&gt;packets&lt;/strong&gt;. Two of the most common transport layer protocols that handle this process are &lt;strong&gt;TCP&lt;/strong&gt; and &lt;strong&gt;UDP&lt;/strong&gt;. Both serve different purposes depending on what the application needs: reliability or speed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transmission Control Protocol (TCP):&lt;/strong&gt; TCP is all about &lt;strong&gt;reliability&lt;/strong&gt;. It ensures that packets arrive &lt;strong&gt;in order&lt;/strong&gt;, &lt;strong&gt;without errors&lt;/strong&gt;, and &lt;strong&gt;without missing anything&lt;/strong&gt;. If any packets are lost or arrive out of sequence, TCP handles re-transmission and reordering behind the scenes. This makes it ideal for tasks where data integrity is critical - like loading web pages, downloading files, or sending emails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Datagram Protocol (UDP):&lt;/strong&gt; UDP focuses on &lt;strong&gt;speed&lt;/strong&gt; over reliability. It sends packets without waiting for acknowledgements, meaning there's no guarantee they’ll arrive in the right order - or at all. That sounds risky, but it’s perfect for use cases like live video streaming, online gaming, or VoIP, where &lt;strong&gt;low latency&lt;/strong&gt; is more important than perfect accuracy. If a few packets drop, the user experience often isn't noticeably affected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;TCP&lt;/strong&gt; when you need &lt;strong&gt;accuracy and consistency&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;UDP&lt;/strong&gt; when you need &lt;strong&gt;speed and real-time performance&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="dns"&gt;4.3 Domain Name System (DNS)&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;DNS is like the Internet's phone book — a decentralized, hierarchical naming system that translates human-readable website names into numerical IP addresses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, when you type &lt;code&gt;google.com&lt;/code&gt;, DNS translates it into the corresponding IP address that your browser can use to find Google’s servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="anat"&gt;4.4 Anatomy of a URL&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyl32uxmhuk8zxrfvbjzu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyl32uxmhuk8zxrfvbjzu.png" alt="Anatomy of a URL" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You probably already know what a URL is, but let’s quickly refresh the concept just in case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;URL&lt;/strong&gt; stands for &lt;strong&gt;Uniform Resource Locator&lt;/strong&gt;, and it’s the address used to access resources online, like web pages, files, images, or APIs. A URL typically includes a &lt;strong&gt;protocol&lt;/strong&gt;, a &lt;strong&gt;domain name&lt;/strong&gt;, and an optional &lt;strong&gt;path&lt;/strong&gt; to a specific resource.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protocol&lt;/strong&gt; - The protocol (also called the &lt;em&gt;scheme&lt;/em&gt;) defines how data is transferred:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The most common are &lt;strong&gt;HTTP&lt;/strong&gt; and &lt;strong&gt;HTTPS&lt;/strong&gt; (the secure version).&lt;/li&gt;
&lt;li&gt;Others include &lt;strong&gt;FTP&lt;/strong&gt; (for file transfers) and &lt;strong&gt;SSH&lt;/strong&gt; (for secure shell access to servers).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Domain&lt;/strong&gt; - The domain has several parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subdomain:&lt;/strong&gt; A prefix that defines a distinct section of a site. For example, &lt;code&gt;blog.example.com&lt;/code&gt; uses &lt;code&gt;blog&lt;/code&gt; as a subdomain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Primary Domain:&lt;/strong&gt; The main part of the domain, like &lt;code&gt;example&lt;/code&gt; in &lt;code&gt;example.com&lt;/code&gt;. This is the part you typically purchase from a domain registrar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top-Level Domain (TLD):&lt;/strong&gt; The suffix, such as &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.org&lt;/code&gt;, or &lt;code&gt;.tech&lt;/code&gt;. TLDs often give context about the site's purpose, location, or industry.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;u id="a"&gt;5. Application Programming Interfaces (APIs) 👩🏼‍💻&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;APIs are the glue of modern software. They define how different systems, services, or components talk to each other, often over a network, without needing to know how the other is built internally. Let’s break down some common paradigms, how APIs work under the hood, and what makes a well-designed API.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="wat"&gt;5.1 What Are APIs?&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forrv13y91u0za0le39t5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forrv13y91u0za0le39t5.png" alt="API types" width="799" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;APIs come in many forms, but here are a few popular styles you'll likely encounter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;REST (Representational State Transfer):&lt;/strong&gt; One of the most common architectural styles. It uses standard HTTP methods (GET, POST, PUT, DELETE) and works with resources identified via URLs. REST APIs are stateless, widely supported, and easy to understand, making them great for most general use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GraphQL:&lt;/strong&gt; A more flexible alternative to REST, GraphQL lets clients specify exactly what data they need - no more, no less. It's powerful for front-end-heavy applications or situations where bandwidth is a concern. However, it introduces added complexity and requires more tooling to manage effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WebSockets:&lt;/strong&gt; Unlike HTTP-based APIs (which follow a request/response model), WebSockets provide full-duplex communication. This means both the client and server can send messages anytime. It’s perfect for real-time applications like chat, multiplayer games, or live dashboards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gRPC:&lt;/strong&gt; Developed by Google, gRPC uses Protocol Buffers (a compact binary format) and is great for high-performance, internal service communication, especially in microservice architectures. It’s strongly typed, efficient, and supports bi-directional streaming, but it's less human-readable and trickier to debug compared to REST.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GraphQL is great for apps where the client needs precise control over the shape of data (e.g. mobile apps on limited bandwidth). On the other hand, gRPC is often used in high-throughput, service-to-service communication within backends.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="breakdown"&gt;5.2 HTTP Structure Breakdown&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Most APIs, especially REST and GraphQL, are built on top of HTTP, so it’s worth understanding how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client-Server Model:&lt;/strong&gt; The client (e.g., your browser or app) makes a request to the server, which processes it and sends back a response.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Requests and Responses&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Headers&lt;/strong&gt; (metadata like content type or authorization)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Body&lt;/strong&gt; (the data being sent or returned)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSL/TLS:&lt;/strong&gt; Secure communication happens over HTTPS, which encrypts data using SSL/TLS to protect against eavesdropping or tampering.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="design"&gt;5.3 Designing Robust &amp;amp; Practical APIs&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Good API design is essential for usability, maintainability, and scalability. A few core principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity:&lt;/strong&gt; Keep endpoints predictable and easy to use. Stick to consistent naming conventions and avoid unnecessary complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency:&lt;/strong&gt; Follow established standards (like using plural nouns for REST resources) and make behaviour uniform across endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versioning:&lt;/strong&gt; Use clear versioning (e.g., &lt;code&gt;/v1/users&lt;/code&gt;) to avoid breaking clients when making changes.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pagination &amp;amp; Streaming:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For large datasets, implement &lt;strong&gt;pagination&lt;/strong&gt; (limit/offset or cursor-based) to avoid overloading the client or server.&lt;/li&gt;
&lt;li&gt;For real-time or continuous data, consider &lt;strong&gt;streaming&lt;/strong&gt; responses — either via HTTP streaming, WebSockets, or gRPC.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupva7m8ud8x3bfyiw4n1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupva7m8ud8x3bfyiw4n1.gif" alt="Funny cat GIF" width="320" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve made it this far—congratulations! System design fundamentals are no small feat, but I hope this overview has helped you get a solid start. In the next article, we’ll dive into caching (including CDNs, proxies, and hashing strategies for load balancers) and storage concepts like SQL vs. NoSQL databases.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>interview</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Navigating the New Grad SWE Job Hunt: Behavioural Interviews</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Mon, 07 Oct 2024 12:00:00 +0000</pubDate>
      <link>https://dev.to/pidgey0403/tips-for-navigating-the-new-gradjunior-swe-job-hunt-part-2-behavioural-interviews-3pmd</link>
      <guid>https://dev.to/pidgey0403/tips-for-navigating-the-new-gradjunior-swe-job-hunt-part-2-behavioural-interviews-3pmd</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;Table of Contents&lt;/u&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Part 2: The Behavioural Interview&lt;/li&gt;
&lt;li&gt;Personality Questions&lt;/li&gt;
&lt;li&gt;Qualification Questions&lt;/li&gt;
&lt;li&gt;Problem-Solving Questions&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;u id="p2"&gt;Part 2: The Behavioural Interview&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Welcome back 👋🏼&lt;/p&gt;

&lt;p&gt;Let’s dive right into Part 2: preparing for the &lt;em&gt;behavioural interview&lt;/em&gt; round. You’ll face these questions in nearly every stage, from phone screens to bar raisers. In my experience, they pop up all throughout the Canadian new grad interview process. If you're like me and need to practice what you're going to say before you actually say it, I hope this part of the article helps you feel more confident and nail your answers—so you’re not just winging it through trial and error during the interviews.&lt;/p&gt;

&lt;p&gt;Let's break down behavioural interviews into the 3 key areas they're assessing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your personality&lt;/strong&gt; – Do you fit into the team/company’s engineering culture?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your qualifications&lt;/strong&gt; – What experience do you have with different frameworks, languages, and tech stacks?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your problem-solving abilities&lt;/strong&gt; - Given a complex situation, how do you go about solving it?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;u id="p"&gt;1 - Personality Questions&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Personality questions, regardless of who asks them, are all about &lt;strong&gt;getting to know you&lt;/strong&gt;. They’re interested in learning about your work style, how you handle conflicts, whether you prefer working independently or in groups, and more. Being able to answer behavioural questions using the &lt;a href="https://www.themuse.com/advice/star-interview-method" rel="noopener noreferrer"&gt;STAR format&lt;/a&gt; is key, and I recommend preparing &lt;strong&gt;at least&lt;/strong&gt; two examples for each type of question.&lt;/p&gt;

&lt;p&gt;Here’s a comprehensive list of all the personality-type questions I’ve ever been asked, along with specific advice for some of them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce yourself / Tell me a bit about your background.

&lt;ul&gt;
&lt;li&gt;list your educational and work experience&lt;/li&gt;
&lt;li&gt;explain any achievements that you're proud of and showcase your expertise&lt;/li&gt;
&lt;li&gt;discuss where you see yourself headed in the future&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Walk me through your resume.&lt;/li&gt;
&lt;li&gt;What is your biggest strength/weakness as it relates to this role (e.g. a technical strength)?&lt;/li&gt;
&lt;li&gt;Describe a time when you had to push or advocate for something in a project. What impact did it have?

&lt;ul&gt;
&lt;li&gt;Pick an example that showcases your leadership skills, and ability to communicate while creating clarity in times of uncertainty&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Why did you choose to pursue software engineering?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to avoid saying 'money' or 'flexibility to work where you want'. Great candidates stand out when asked this question by giving a memorable story that sets them apart from others. &lt;/li&gt;
&lt;li&gt;For example, when I was asked this question, I shared that during high school, I played an &lt;a href="https://en.wikipedia.org/wiki/Otome_game" rel="noopener noreferrer"&gt;otome game&lt;/a&gt; where the characters used a chatroom app they had built from scratch. This sparked my interest in how software could be developed to meet specific needs, inspiring me to explore how I could do the same.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tell me about a time you received negative or constructive feedback and how you responded.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give an example of when you took initiative or leadership during a challenging time at work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What are you looking for in your next role?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where do you see yourself in 5 years?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Why did you apply for this role/company?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is really asking why they should hire you over other candidates. Be sure to list your technical competencies, as well as anything that stood out about the company/position that enticed you to apply.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What part of the tech stack do you enjoy the most?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Describe a time when you had a conflict with a coworker or team, and how you resolved it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explain a difficult bug you fixed in the past 6 months.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This question seeks to dive deeper into your problem-solving abilities and how you unblock yourself when stuck. Focus on explaining things like time-blocking, independent investigation, consulting various resources, and pair-programming with other devs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Walk me through a project you’re most proud of and why. What challenges did you face? Describe them in technical detail and how you solved them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be ready to discuss at least 1-2 challenges for each experience and project on your resume.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do you handle pressure and tight deadlines? Give an example from work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do you de-stress and relax?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of these questions is to understand your personality, work style, and communication skills. They also help the interviewer assess whether you’re approachable, friendly, and able to clearly articulate your thoughts. If you can keep the conversation engaging, maybe make your interviewer smile or laugh with a good story, you're on the right track. The key is to present yourself as someone who is not only pleasant to work with but &lt;strong&gt;also&lt;/strong&gt; capable of performing well on the team. Be authentic, and have a strong story about why you chose this career and company—it’ll help you stand out, especially when competing against similarly qualified candidates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Before my interviews, I always reviewed the job posting I applied to and checked &lt;a href="https://www.glassdoor.ca/Community/index.htm" rel="noopener noreferrer"&gt;Glassdoor&lt;/a&gt; reviews for insights on the interview process. Glassdoor is an invaluable resource, and many people share exact questions they were asked, along with details about the number of interview rounds. Definitely use it to get a feel for the questions you might face.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="q"&gt;2 - Qualification Questions&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOGgwNDQyamJjZ2d6d3N0b3Q5djNqOWRpZmswZW15amtvYXo5MWU2eSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/1iu8uG2cjYFZS6wTxv/giphy-downsized-large.gif" class="article-body-image-wrapper"&gt;&lt;img width="306" src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOGgwNDQyamJjZ2d6d3N0b3Q5djNqOWRpZmswZW15amtvYXo5MWU2eSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/1iu8uG2cjYFZS6wTxv/giphy-downsized-large.gif" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second type of interview questions you’ll encounter dive deeper into your technical background and previous experiences. Since I had three software engineering internships and one full-stack project on my resume, I was often asked to explain what I did in each role, which part of the tech stack I’m most comfortable with, and some of the challenges I faced in those positions.&lt;/p&gt;

&lt;p&gt;These questions require thorough preparation, so my advice is to sit down and think through how you’d expand on each bullet point in your resume. Ask yourself the following for &lt;em&gt;every&lt;/em&gt; experience, project, or club you’ve listed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I give a high-level overview of my responsibilities and the impact of my work?&lt;/li&gt;
&lt;li&gt;What challenges did I face, and how did I overcome them?&lt;/li&gt;
&lt;li&gt;Can I explain the technologies and frameworks I used, and why I chose them?&lt;/li&gt;
&lt;li&gt;Did I improve any processes? If not, is there anything I would improve now?

&lt;ul&gt;
&lt;li&gt;You should &lt;strong&gt;always&lt;/strong&gt; have something to say regarding what you can improve, from processes to documentation to architecture etc. The important thing is that you've reflected and thought about how to make your work more efficient, which is a positive signal to interviewers. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try to prepare answers for these types of questions, focusing on the technical details to highlight your skills and expertise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What tech stack did you use and why?&lt;/li&gt;
&lt;li&gt;What projects did you work on (in school and at previous jobs)?&lt;/li&gt;
&lt;li&gt;What was the most challenging situation in your previous role, and how did you solve it?&lt;/li&gt;
&lt;li&gt;Have you ever creatively solved a problem or challenge? How did you approach it?&lt;/li&gt;
&lt;li&gt;How did you resolve a disagreement with a coworker or classmate? (This could be about code style, architecture decisions, or a PR that got held up due to comments.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure you fully understand the technologies you’ve listed on your resume. While my resume suggests that most of my experience is in frontend development, my personal interest is in backend engineering, so I made sure I could speak confidently about both areas. For &lt;strong&gt;backend topics&lt;/strong&gt;, I brought up concepts like SQL vs. NoSQL databases, REST vs. GraphQL APIs, sharding, scalability (horizontal vs. vertical), and CDNs (Content Delivery Networks) when discussing my design decisions for personal projects. On the &lt;strong&gt;frontend&lt;/strong&gt; side, I made sure I could explain concepts like state and props, dependency injection, lazy loading, debouncing, and asynchronous JavaScript—especially when talking about my past work with frameworks like React.js, Vue.js, and Angular.js.&lt;/p&gt;

&lt;p&gt;It’s important to be well-versed in both the areas you’ve worked in and the areas you want to move into. That way, if an engineer or hiring manager asks you about a particular technology or concept, you’re not caught off guard.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="ps"&gt;3 - Problem-Solving Questions&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDlicXIzZ3JqYnp1ZDZsdGlnbTVwN3l3dTJjZWp1emxtNWF1eXBhaSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3V33ssIjg0BUGafaU0/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="480" src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDlicXIzZ3JqYnp1ZDZsdGlnbTVwN3l3dTJjZWp1emxtNWF1eXBhaSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3V33ssIjg0BUGafaU0/giphy.gif" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition to personality and qualification questions, you’ll likely encounter problem-solving or technical questions where interviewers assess your ability to think on your feet. These questions might not always be a formal coding challenge; sometimes, they’ll involve discussing how you’d approach a technical problem verbally, walking the interviewer through your thought process.&lt;/p&gt;

&lt;p&gt;I encountered quite a few of these types of questions, and it really helps to be comfortable with high-level concepts, including some system design topics. Here are a few examples of the kinds of verbal technical questions you might face:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How would you optimize the performance of the frontend for an application that’s experiencing slow load times?&lt;/li&gt;
&lt;li&gt;Can you explain the difference between synchronous and asynchronous programming, and when you would use each?&lt;/li&gt;
&lt;li&gt;What is the event loop?&lt;/li&gt;
&lt;li&gt;What’s your approach to debugging a large codebase when you’re unfamiliar with the code?&lt;/li&gt;
&lt;li&gt;Would you choose to design a REST API or GraphQL API for an application like Twitter, and why? Walk me through the basic endpoints you’d create.&lt;/li&gt;
&lt;li&gt;What kind of database (NoSQL, SQL, document) would you choose to store X and why?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these questions, the focus is on how you break down a problem, consider trade-offs, and arrive at a solution. The interviewers aren’t necessarily looking for a perfect solution but rather your ability to communicate your thought process clearly, collaborate on ideas, and show that you can handle real-world technical challenges.&lt;/p&gt;

&lt;p&gt;Tips for tackling problem-solving questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Think out loud:&lt;/strong&gt; Let the interviewer in on your thought process, even if you’re not 100% sure of the answer right away. This helps show how you approach challenges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider trade-offs:&lt;/strong&gt; Be ready to discuss the pros and cons of different solutions. For example, if you’re asked about scaling an application, you might talk about database sharding vs. vertical scaling, or the trade-offs between performance and cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don’t panic if you don’t know something:&lt;/strong&gt; If you’re not familiar with a specific concept or technology, be honest about it, but try to relate it to something you do know. You can also talk about how you’d go about researching and solving the problem. I’ve had moments where I didn’t have all the specifics, but I drew parallels to similar knowledge I had, and the interviewers were fine with that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask clarifying questions:&lt;/strong&gt; Don’t be afraid to ask for more information if the problem is vague. Asking good questions shows that you’re thinking critically about the problem.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Tips for working from the office?</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Wed, 02 Oct 2024 13:56:17 +0000</pubDate>
      <link>https://dev.to/pidgey0403/tips-for-working-from-the-office-5810</link>
      <guid>https://dev.to/pidgey0403/tips-for-working-from-the-office-5810</guid>
      <description>&lt;p&gt;With more companies announcing mandatory return to office (RTO) policies, I’m curious — how are other developers handling the shift back to in-person work? Do you prefer working from the office, or are you still team WFH?&lt;/p&gt;

&lt;p&gt;I recently accepted a new grad offer as a Software Engineer I, and  starting soon, I’ll be commuting to the office 3-4 days a week in  downtown. My past internships were all remote, so this is a large shift for me.&lt;/p&gt;

&lt;p&gt;For those of you who have already worked in-office, I’d love to hear your advice on a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you handle the fatigue from commuting?&lt;/li&gt;
&lt;li&gt;If you’ve ever felt awkward or shy in the office, how did you overcome it?&lt;/li&gt;
&lt;li&gt;What’s typical attire like for engineering teams these days?&lt;/li&gt;
&lt;li&gt;Do you usually pack your lunch, or grab something near the office?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For those who work in-office or have a hybrid schedule, I’d really appreciate any tips on making the most of the experience. Thanks! 😊&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Navigating the New Grad SWE Job Hunt: Landing Interviews</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Wed, 02 Oct 2024 13:53:19 +0000</pubDate>
      <link>https://dev.to/pidgey0403/navigating-the-new-gradjunior-swe-job-hunt-part-1-landing-interviews-1j3</link>
      <guid>https://dev.to/pidgey0403/navigating-the-new-gradjunior-swe-job-hunt-part-1-landing-interviews-1j3</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;Table of Contents&lt;/u&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Part 1 - Landing Interviews&lt;/li&gt;
&lt;li&gt;Writing a Software Engineer Resume&lt;/li&gt;
&lt;li&gt;My Current Software Engineer Resume&lt;/li&gt;
&lt;li&gt;Reflect - Are you focusing on the right thing?&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;u id="intro"&gt;Introduction&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Hi everyone, it’s been a while since my last post—I hope you’ve all been doing well. Today, I want to share my journey in searching for a new graduate software engineer position here in Canada. I’ll also provide a timeline of my study process and some advice based on my recent interview experiences. I know the job market has been tough over the last year or two, and many of my fellow alumni have struggled to land interviews, so I hope my insights will help you approach your job search with more confidence.  &lt;/p&gt;

&lt;p&gt;To start, a little background about me: I’m Gabby, a Canadian citizen and recent Computer Science graduate from Western University. I completed my degree in April 2024 and was fortunate enough to secure 3 software engineering internships during my undergrad, primarily focused on fullstack development. After graduation, I took about two months off to relax and spend time with my family. I started applying for jobs seriously in mid-July and continued through to the end of September. While I didn’t keep track of the exact number of applications (and honestly, I don’t think you should either), I progressed to the final rounds with three companies and received an offer from a Fortune 500 company 🎊.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExNzZtMzI4ZWpndmZnMjRtcGp6Nm85aGZnOG4xY2VsdDFqNTYxaW5xcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xT8qBqNisx9dkXWAX6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="480" src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExNzZtMzI4ZWpndmZnMjRtcGp6Nm85aGZnOG4xY2VsdDFqNTYxaW5xcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xT8qBqNisx9dkXWAX6/giphy.gif" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During my time off, I treated the break as an opportunity to recharge and prepare for interviews. I focused primarily on the &lt;a href="https://neetcode.io/practice" rel="noopener noreferrer"&gt;Neetcode 150&lt;/a&gt; list of questions, following Neetcode’s beginner and advanced roadmaps. In hindsight, while I dedicated most of my time to data structures and algorithms (DS&amp;amp;A) preparation, I’ve realized that behavioral interviews and resume preparation &lt;strong&gt;were equally—if not more—important&lt;/strong&gt;. From my experience, non-FAANG companies emphasized behavioral interviews far more than Leetcode-style technical interviews, and these were often the key factors in determining the &lt;strong&gt;outcome&lt;/strong&gt; of your application.&lt;/p&gt;

&lt;p&gt;A quick disclaimer: I’m writing this from the perspective of a typical CS graduate seeking full-time employment. By "typical," I mean someone who isn’t specifically aiming for top FAANG or quant firms. There are plenty of great resources available if you're targeting those highly competitive positions, and some of the ones I mention can certainly help you get started on that path. However, the focus of these articles is to provide young professionals with the tools they need to feel confident interviewing for roles that prioritize work-life balance (WLB) at a variety of companies, not just exclusively FAANG.&lt;/p&gt;

&lt;p&gt;Of course, working for a prestigious company that offers top-of-market TC is amazing — but please don’t feel like that’s the only option. During my undergrad, I saw a lot of "FAANGMULA or bust" mentalities in students that, in the end, only hurt the confidence and resiliency of those who didn’t land those roles.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="p1"&gt;Part 1 - Landing Interviews 🔎&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Before you start sinking hundreds of hours into interview prep, it's crucial to ensure you can actually &lt;strong&gt;land&lt;/strong&gt; interviews in the first place. One common cause of burnout during the job search is spending months on Leetcode and cold applying to jobs, only to end up with no interviews, feeling completely drained, and realizing you haven’t made any progress with companies that are hiring 😪. I also think this might be one of the hardest parts of the job search, so it's essential to make yourself as competitive as possible.&lt;/p&gt;

&lt;p&gt;In Part 4, I’ll discuss a bit more regarding how networking and joining local tech communities can help you secure referrals and uncover unadvertised roles through word-of-mouth (see: the &lt;a href="https://www.indeed.com/career-advice/finding-a-job/hidden-job-market" rel="noopener noreferrer"&gt;hidden job market&lt;/a&gt;). For now though, I want to focus on optimizing your resume, LinkedIn, and social media profiles to increase your chances of passing ATS filters and recruiter resume screens.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="a"&gt;Writing a Software Engineer Resume&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;There’s a lot of conflicting advice out there about resume best practices, but here are some guidelines I strongly recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Keep your resume to a maximum of 1 page&lt;/em&gt; - unless you have more than 10 years of experience&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;International candidates&lt;/em&gt;: Be sure to indicate if you need visa sponsorship or if you already have a visa and don't require sponsorship.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Avoid listing every achievement&lt;/em&gt; - While professional publications and certifications are great, you likely don’t need to include them unless they’re directly relevant to the positions you’re applying for.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Skip listing hobbies, interests, or the high school you attended&lt;/em&gt; (assuming you have college or university experience) — this doesn’t add any value to your application&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Don't include a professional summary&lt;/em&gt; - again, unless you have enough seniority to justify it&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Stick to a single-column format for your resume&lt;/em&gt; — it’s easier to read for both ATS systems and recruiters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you haven’t come across it yet, I highly recommend checking out the &lt;a href="https://www.techinterviewhandbook.org/resume/#how-to-write-work-experience-for-a-software-engineer" rel="noopener noreferrer"&gt;Tech Interview Handbook&lt;/a&gt;. It’s an excellent resource that goes way more in depth on resume writing, and also covers how to prepare for every stage of the software engineering interview process 🫶🏼.&lt;/p&gt;

&lt;p&gt;If you're struggling to condense your experience into concise bullet points, I completely understand — it’s tough! Writing a resume requires deep reflection on the work you did, the projects you were involved in, and the impact you had. I’ve found that many people are pretty darn good at explaining their impact verbally, but struggle to translate that into written text on paper. If that sounds like you, try using voice-to-text software to capture your thoughts. You can also ask friends to quiz you about your past internships—it’s a solid way to uncover the technologies you used and the impact you made.&lt;/p&gt;

&lt;p&gt;Some additional tips for writing your resume include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you’re stuck on what to write, start by &lt;em&gt;listing everything you’ve done&lt;/em&gt;. It’s easier to refine from too much detail than from too little.&lt;/li&gt;
&lt;li&gt;Don’t hesitate to reach out to classmates, friends, or family for &lt;em&gt;multiple rounds of edits on your resume&lt;/em&gt;. It’s normal to go through several revisions before reaching a final version.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Don’t rely solely on friends for feedback&lt;/em&gt;. In my experience, close friends may hold back from being overly critical. Consider taking advantage of resources like ChatGPT, and online communities like &lt;a href="https://bobatalks.com/" rel="noopener noreferrer"&gt;BobaTalks&lt;/a&gt; (their &lt;a href="https://discord.com/servers/bobatalks-1029965764960210945" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt; offers excellent feedback from mentors), and &lt;a href="https://www.cscareers.dev/" rel="noopener noreferrer"&gt;CS Careers Dev&lt;/a&gt; (their &lt;a href="https://discord.com/invite/cscareers" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt; provides brutally honest resume reviews, which is exactly what everyone needs).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Tailor your resume to the roles you’re targeting&lt;/strong&gt;&lt;/em&gt;. For instance, I’ve seen people focus heavily on including frontend development experience while applying for full-stack roles, only to be frustrated when they get rejected. Make sure your resume aligns with the types of roles you want. If you’re aiming for cloud computing roles, having certifications or licenses, like an AWS Cloud certification, could help bridge the gap if your experience is lacking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u id="b"&gt;My Current Software Engineer Resume&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;I think thanks to my past engineering internships, I’ve been fortunate enough to receive a good response rate from my resume, so I’d like to share the formatting and approach I use with all of you. Hopefully, it will give you some ideas and inspiration on how to write effective bullet points that follow the &lt;a href="https://www.naukri.com/campus/career-guidance/star-method-resume" rel="noopener noreferrer"&gt;STAR method&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faivc9nhgx8r22a6vv6gy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faivc9nhgx8r22a6vv6gy.jpg" alt="The resume I used to apply to new graduate jobs" width="800" height="1035"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purple highlights&lt;/strong&gt; - impact/result of my actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yellow highlights&lt;/strong&gt; - the action taken&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No highlights&lt;/strong&gt; - context, situation, and/or technologies I used&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can see I used &lt;a href="https://www.overleaf.com/latex/templates/jakes-resume/syzfjbzwjncs" rel="noopener noreferrer"&gt;Jake’s resume&lt;/a&gt; template, which is super popular in the tech community for its clean, no-nonsense design. You don’t have to use this exact one, but I’d suggest sticking to a single-column format for readability. If you're early in your career, it's a good idea to put your education at the top so recruiters can quickly spot your degree and graduation date.&lt;/p&gt;

&lt;p&gt;One thing to note: &lt;strong&gt;always&lt;/strong&gt; include start and end dates for all your experiences. For your degree, the start date is optional, but definitely include the end date or your anticipated graduation date. Make sure your resume has your phone number, a non-school email, LinkedIn, and GitHub. If you have a polished personal website, throw that in too.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Common mistake: avoid listing generic tools like MS Office or IDEs you’ve used. Your resume has limited space, so focus on showcasing the key languages and frameworks you're skilled in and that are relevant to the jobs you're applying for.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To get through resume screens, you need to think about keywords recruiters might search for. While it’s optional, I do think highlighting technologies and including some quantitative metrics helps make your resume more skimmable for recruiters. You’ll notice that my bullet points really try to cram in as much impact as possible while being concise and logical. I always mention the technologies and frameworks I used, plus explain what kind of difference my work made. Be honest about your metrics, and if exact numbers aren’t possible, give your best educated guess. Numbers stand out, so even if you have to estimate, try to include metrics where possible ‼️&lt;/p&gt;

&lt;p&gt;If you don’t have much software engineering experience yet, list your strongest experience first—whether it’s personal projects, freelance work, or internships—and leave the less relevant stuff toward the bottom. If you're still in school or just graduated, pick your best project(s) (ideally something you built on your own, not just a class project) to show off your skills and initiative.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="c"&gt;Reflect - Are you focusing on the right thing?&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;When you've finished writing, rigorously editing, and re-editing your resume - take a step back. Ask yourself, “What kinds of roles does my resume seem most suited for? 💭” Ideally, it should align with the roles you’re applying to. If not, there’s a serious mismatch between your content and your goals, and you need to fix this.&lt;/p&gt;

&lt;p&gt;Let's break down the technologies in my resume as an example:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tech-stack&lt;/th&gt;
&lt;th&gt;Internship 1&lt;/th&gt;
&lt;th&gt;Internship 2&lt;/th&gt;
&lt;th&gt;Internship 3&lt;/th&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Front-end?&lt;/td&gt;
&lt;td&gt;Angular.js&lt;/td&gt;
&lt;td&gt;Vue.js&lt;/td&gt;
&lt;td&gt;React.js&lt;/td&gt;
&lt;td&gt;React.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Back-end?&lt;/td&gt;
&lt;td&gt;Ruby on Rails&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Nest.js, PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Misc?&lt;/td&gt;
&lt;td&gt;DataDog&lt;/td&gt;
&lt;td&gt;AWS EC2, Docker&lt;/td&gt;
&lt;td&gt;Electron.js, Axios&lt;/td&gt;
&lt;td&gt;Prisma&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you were my recruiter, where would you say my experiences and skill-sets lie? Probably more front-end focused than back-end, right? Overall, when applying to positions I need to keep in mind that my resume is more suited for front-end or full-stack roles, rather than purely back-end roles, thanks to my past experiences.&lt;/p&gt;

&lt;p&gt;If my goal was something else—like AI or Cloud Engineering—I’d need to rethink my approach. I’d focus on selecting internships or personal projects that highlight skills in those areas, like cloud infrastructure or AI-related technologies. You should always think about how your resume comes across and align your experiences with your target roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u id="d"&gt;Conclusion&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Getting interviews is arguably the hardest part of the recruitment process, especially in today’s market where even experienced engineers struggle to get callbacks after sending out hundreds of applications. I hope some of my advice helped you craft a stronger resume. Many of these tips can also be applied to optimizing your LinkedIn profile (though feel free to include certifications, research papers, volunteering, etc. on LinkedIn—it’s the place where all your qualifications can really shine 🤩).&lt;/p&gt;

&lt;p&gt;I’d love to hear any additional advice you might have for crafting resumes or landing interviews through cold applications. Thanks for reading all the way through!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F26gskaXMHwQFmuXAc%2Fgiphy.gif%3Fcid%3D790b7611jb28m3hwt12ut5a1oqe54eeodpydne441f0c14j9%26ep%3Dv1_gifs_search%26rid%3Dgiphy.gif%26ct%3Dg" class="article-body-image-wrapper"&gt;&lt;img width="480" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F26gskaXMHwQFmuXAc%2Fgiphy.gif%3Fcid%3D790b7611jb28m3hwt12ut5a1oqe54eeodpydne441f0c14j9%26ep%3Dv1_gifs_search%26rid%3Dgiphy.gif%26ct%3Dg" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>resume</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Advice for newbie devs that are Working From Home? 💻</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Wed, 05 Jul 2023 15:54:24 +0000</pubDate>
      <link>https://dev.to/pidgey0403/advice-for-newbies-devs-that-are-working-from-home-17n0</link>
      <guid>https://dev.to/pidgey0403/advice-for-newbies-devs-that-are-working-from-home-17n0</guid>
      <description>&lt;p&gt;Hi all! ☀️&lt;/p&gt;

&lt;p&gt;I'll be starting my first full-time software developer co-op in the fall and I will be working entirely remotely. I'd love to hear your tips/advice on how to be productive and consistent when working in an entirely remote setup!?&lt;/p&gt;

&lt;p&gt;I also want to secure a return offer with this company, so any guidance on how to excel during my WFH co-op would also be fantastic :) 🐳&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>MLH Fellowship: My Admissions Timeline &amp; Program Experience!</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Sun, 08 Jan 2023 06:19:23 +0000</pubDate>
      <link>https://dev.to/pidgey0403/mlh-fellowship-my-admissions-timeline-program-experience-4clo</link>
      <guid>https://dev.to/pidgey0403/mlh-fellowship-my-admissions-timeline-program-experience-4clo</guid>
      <description>&lt;h2&gt;
  
  
  What is the MLH Fellowship ⁉️
&lt;/h2&gt;

&lt;p&gt;In case you’re unfamiliar or just need a refresher, the MLH Fellowship is a 12-week program designed to support individuals who are interested in pursuing a career in the tech industry. The program provides participants with the opportunity to work on real-world projects from top engineering companies, receive mentorship from industry professionals, and develop valuable skills that will help them succeed in their future careers. Some notable companies that partner with the MLH Fellowship include &lt;strong&gt;Google, Meta, Amazon, G-Research, RBC, GitHub, Solana Labs&lt;/strong&gt;, and many, many more.&lt;/p&gt;

&lt;p&gt;For more information, check out their official website: &lt;a href="https://fellowship.mlh.io/" rel="noopener noreferrer"&gt;https://fellowship.mlh.io/&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Timeline ⏰
&lt;/h2&gt;

&lt;p&gt;My timeline for applying to the Fall 2022 MLH Fellowship is outlined below (note the duration between application steps might be slightly different for each individual):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;August 5, 2022&lt;/em&gt; - Submission of initial application 🤞🏼&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;August 8, 2022&lt;/em&gt; - Application went into review ⭐️&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;August 21, 2022&lt;/em&gt; - Invitation to schedule behavioural interview round 👩🏻‍💼&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;August 25, 2022&lt;/em&gt; - Completed behavioural interview ✅&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;August 27, 2022&lt;/em&gt; - Invitation to schedule technical interview 💻&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;September 5, 2022&lt;/em&gt; - Completion of technical interview ✅&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;September 12, 2022&lt;/em&gt; - Email of acceptance into the program 🎉&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, the process took a bit over one month to complete from start to finish. I would strongly encourage all applicants to apply at least &lt;strong&gt;2 months before&lt;/strong&gt; the program start date, as the process is lengthy and highly competitive. Applying early also means you get to know that you’re a part of the program earlier, as acceptances are sent out on a rolling basis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Onboarding Process 🏄‍♀️
&lt;/h2&gt;

&lt;p&gt;Curious to know what the on-boarding process for the MLH Fellowship looks like in the weeks leading up to the program’s start? The following is a short recap of my personal experience getting set up for the Fellowship.&lt;/p&gt;

&lt;p&gt;Firstly, I received an email of acceptance which told me I was successfully matched to a project! This invitation came straight from the wonderful Amanda D'Avria herself and included the program start and end date, the track, time commitment, meeting days and times, and the stipend amount. Included in the email is also a link to a form I was &lt;strong&gt;required&lt;/strong&gt; to fill out to confirm my enrolment in the program.&lt;/p&gt;

&lt;p&gt;Some other little things I did before the program started included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Signing the Educational Fellowship Agreement&lt;/em&gt; (basically a contract and ToS for the program)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Joining the MLH Fellowship GitHub organization&lt;/em&gt; via invitation&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Joining the MLH Fellowship Discord server&lt;/em&gt; (this is where all pod meetings, announcements, educational events, etc. take place)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Signing the Handbook Acknowledgement&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Creating a Calendly account and meeting link&lt;/em&gt; (so others could book a meeting)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once all that was done, the only thing left to do was wait for the program to begin!&lt;/p&gt;

&lt;h2&gt;
  
  
  Fellowship Activities and Events 🎭
&lt;/h2&gt;

&lt;p&gt;The MLH Fellowship also provided a great number of activities and events for Fellows to partake in. While I, unfortunately, couldn’t attend most of them due to class, it was still really nice to have the option to join these events when possible as it helped to build a sense of community and have some fun during the program. &lt;/p&gt;

&lt;p&gt;Some things the Fellowship offered to all Fellows, regardless of track, included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Weekly educational events&lt;/em&gt; → LeetCode workshops, resume and interview preparation workshops, industry speakers going over a Day in their Life&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Introductory week hackathon&lt;/em&gt; → all Fellows are required to participate in the hackathon and build a project using tools from their partner company. At the end of the week, winners from 3 categories are chosen, and special prizes are mailed out (not to brag but my team was one of the winners 🎖️✨)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Final week Capture the Flag&lt;/em&gt; → it’s not required for fellows to participate but it’s highly recommended. This CTF involves numerous cyber-security and hacking puzzles that teams must complete to win first place. The winners are announced during the graduation ceremony of the program.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Details 📁
&lt;/h2&gt;

&lt;p&gt;During the program, I had the privilege of working with &lt;a href="https://www.gresearch.co.uk/" rel="noopener noreferrer"&gt;G-Research&lt;/a&gt;, Europe’s leading quantitative and research firm. I was initially quite unsure about working with a fintech company as I hadn’t researched the field before but quickly grew to love my Pod members (also working with G-Research) as well as my professional maintainers and technical leads from the company. &lt;/p&gt;

&lt;p&gt;I specifically worked on the frontend for G-Research Open Source Software projects and used frameworks and technologies like &lt;strong&gt;Vue.js, AWS EC2, Confluence, Jira, Docker, bash, and npm&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A lot of my time was spent on algorithm design and refinement, but more importantly, understanding the mindset behind open-source contributions. My maintainer taught me the importance of being able to understand large code bases, troubleshoot bugs and errors, independently work on assigned tasks, take initiative to reach objectives, and the importance of clear communication as a software engineer. &lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Thoughts / Feelings / Stories 🥳
&lt;/h2&gt;

&lt;p&gt;While I was initially a bit disappointed that I wasn’t working on backend development or with a fancy FAANG company like Google, the MLH Fellowship was absolutely an incredible experience that has bolstered my &lt;strong&gt;confidence&lt;/strong&gt; and &lt;strong&gt;technical&lt;/strong&gt; &lt;strong&gt;ability&lt;/strong&gt; as a rising software engineer. The skills and connections I created during the program were invaluable, and I hope to continue applying the knowledge I gained in open-source development to help others build efficient and purposeful software.&lt;/p&gt;

&lt;p&gt;Thanks for reading about my journey! If this article helped you learn more about the MLH Fellowship, feel free to like it and share it with other curious developers ❤️&lt;/p&gt;

</description>
      <category>mlhgrad</category>
      <category>opensource</category>
      <category>career</category>
    </item>
    <item>
      <title>Applying to the MLH Fellowship in 2023 🎊</title>
      <dc:creator>Gabrielle Niamat</dc:creator>
      <pubDate>Fri, 23 Dec 2022 19:43:51 +0000</pubDate>
      <link>https://dev.to/pidgey0403/tips-on-applying-to-the-mlh-fellowship-in-2023-19m0</link>
      <guid>https://dev.to/pidgey0403/tips-on-applying-to-the-mlh-fellowship-in-2023-19m0</guid>
      <description>&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;What is the MLH Fellowship&lt;/li&gt;
&lt;li&gt;Application Tips and Tricks&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;li&gt;Additional Resources&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;u id="intro"&gt;Introduction 📖&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Hey there, nice to meet you 👋🏼! I'm Gabby, a returning MLH Fellow in the Software Engineering track for Spring 2023, a 3rd-year computer science student at Western University, and a Software Engineering and DevOps enthusiast!&lt;/p&gt;

&lt;p&gt;Over the past couple of weeks, I've received quite a few DMs on LinkedIn and Discord asking for advice on how to nail the MLH Fellowship application and interview process. As a result, I've decided to compile all the advice I've gathered from past Fellows, the admissions team, and my personal experience into one master list of tips and tricks to help make your application stand out and increase your chances of being invited to the Fellowship 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="about"&gt;What is the MLH Fellowship? 💭&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;If you're curious about the MLH Fellowship and not sure where to start, I highly recommend checking out their official website for more details on the program &lt;a href="https://fellowship.mlh.io/" rel="noopener noreferrer"&gt;https://fellowship.mlh.io/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In short, the MLH Fellowship is a highly competitive program for aspiring technologists (hint: think SWEs, SREs, DevRel specialists and more!). It provides a unique opportunity for talented individuals to work on meaningful projects, learn new skills, earn a stipend while receiving education from expert mentors, and make a real impact in the tech industry. &lt;/p&gt;

&lt;p&gt;What I especially love about the program is that it's open to applicants from virtually any country and does not require you to be in post-secondary education to qualify. You do have to be 18 years or older, however, so for high school students do your best to contribute to other Open Source projects while you wait!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="tips"&gt;Application Tips and Tricks 🎩✨&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;So you've decided that you're going to apply to the MLH Fellowship, but you're unsure how to guarantee that your application demonstrates your excellence to the admissions team and stands out from the rest of the crowd. Don't worry, I've been there too! By following the tips below on how to craft your application, you'll be setting yourself up for success as a future MLH Fellow. &lt;/p&gt;

&lt;h3&gt;
  
  
  1) Start early
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"The early bird really does get the worm when it comes to getting into the Fellowship [...] Most folks who will get into the Spring program will have applied by November 30th." - &lt;a href="https://youtu.be/dKC0Dd2ghxU?t=535" rel="noopener noreferrer"&gt;Amanda, MLH Admissions Team&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;MLH Fellowship applications typically open several months before the start of the program so it's important to start preparing your application as early as possible. According to the admissions team, about 50% of Fellows apply at least &lt;strong&gt;2 months before&lt;/strong&gt; the start of the program. By giving yourself enough time to write a strong essay application and build a polished code sample, you'll already have a leg-up compared to other applicants. Don't forget to update your social media like GitHub and LinkedIn to reflect your most recent experiences! &lt;/p&gt;

&lt;p&gt;When I first applied to the Fellowship, I only applied a month before the start date. The 3-step admissions process took quite a while, nearly 4 weeks from the time I submitted my application to the time I received my acceptance letter. So please don't be like me and give yourself enough time to comfortably go through the process, especially if you are not a returning Fellow! &lt;/p&gt;

&lt;h3&gt;
  
  
  2) Tailor your application
&lt;/h3&gt;

&lt;p&gt;A large factor in determining whether you get an invitation to the behavioural interview stage is how strong your essay application is. One of the questions you will need to write a response to is &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"[...] What perspective or experience will you bring to the fellowship to strengthen our community?" &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When answering this question, take the time to highlight what unique experiences or insights you have and how you believe they will help to strengthen the MLH community. Keep in mind, you don't have to have to be an ex-FAANG intern to be able to highlight your unique qualities as an applicant! When I first applied I explained how my perspectives as a political science student gave me a unique outlook on incorporating ethics and security into the software I built. Try to draw on your past school experiences, personal interests, hackathons and more for this question!&lt;/p&gt;

&lt;p&gt;Additionally, make sure that your &lt;strong&gt;resume has been tailored&lt;/strong&gt; to showcase your strongest and most relevant experiences when applying to the Fellowship. And please, make sure to &lt;strong&gt;answer the question you're asked&lt;/strong&gt; during the essay portion of the application - by directly answering the question you demonstrate to the admissions team your ability to succinctly and efficiently solve problems. &lt;/p&gt;

&lt;h3&gt;
  
  
  3) Show your passion
&lt;/h3&gt;

&lt;p&gt;One of the key qualities that the MLH Fellowship is looking for is a passion for growth and learning. Make sure your code sample and essay answers are well-thought-out, and that you've taken the time to polish them to the best of your abilities. Submitting the best version of your work possible signals to the admissions that you are serious about producing high-quality work and that you already have a good grasp of the technical skills needed to excel in the program.&lt;/p&gt;

&lt;p&gt;Be sure to also stress why you're an excellent applicant when answering the essay questions &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why do you want to become an MLH Fellow" and "Is there anything else we should know about you." &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Too often people leave the last question blank when in reality they should be sharing a story with the admissions team that leaves a great first impression about their passions and excitement to join the Fellowship. &lt;/p&gt;

&lt;h3&gt;
  
  
  4) Demonstrate your technical skills
&lt;/h3&gt;

&lt;p&gt;The MLH Fellowship is a technical program, so it's important to demonstrate your technical skills and capabilities in your application. This includes highlighting any relevant coursework, projects, or hackathons that you've participated in, in your resume.&lt;/p&gt;

&lt;p&gt;More importantly, please make sure you add enough &lt;strong&gt;detail and polish to your code sample&lt;/strong&gt;. If you're creating a web app, make sure to deploy it and put the link somewhere visible on your GitHub repository so the admissions team can easily interact with your website. If you're building a mobile app, provide a zipped download file or even a link to the application on the App Store! Making your project visible is an enormous factor in making it easier for the admissions team to assess your skills and competency. &lt;/p&gt;

&lt;p&gt;Also, be sure that your code is nicely formatted (using a linter or similar tool), that your commit history is informative (i.e. all the commit messages aren't just 'commit'), that you have sufficient complexity and Isolation of Concerns in your codebase (i.e. don't throw everything into 1 file that is only a few lines long), and that you create an informative and easy to understand Readme.MD (this is crucial to the success of your application). &lt;/p&gt;

&lt;h3&gt;
  
  
  5) Network and seek out mentors
&lt;/h3&gt;

&lt;p&gt;This is a tip that I leveraged a lot, especially when I first applied to the Fellowship. &lt;/p&gt;

&lt;p&gt;Networking can be a key factor in the success of your application, so don't be shy to seek out mentors and advisors who can provide guidance and advice on how to improve your application. Message people on LinkedIn and even join the official &lt;a href="https://discord.gg/qY7ZTZAT" rel="noopener noreferrer"&gt;MLH Fellowship Discord&lt;/a&gt; to ask the team and past/current Fellows any questions you may have! &lt;/p&gt;

&lt;h3&gt;
  
  
  6) Follow the application instructions
&lt;/h3&gt;

&lt;p&gt;I've already mentioned this in a previous point but I cannot stress it enough. &lt;em&gt;Please&lt;/em&gt; &lt;em&gt;please&lt;/em&gt; &lt;em&gt;please&lt;/em&gt; make sure to answer all questions in your initial application as thoroughly as possible, and pay special attention to what they say they're looking for in a code sample. &lt;/p&gt;

&lt;p&gt;I've had a few applicants message me and ask why their code sample got rejected, and their GitHub repository included 3 commits and 3 files in total. This is unfortunately not enough information for the admissions team to determine whether your code was original and whether you can create larger projects of sufficient quality during the program. The MLH Fellowship is a highly competitive program and as such, they are looking for proof that you understand how to write good documentation and substantial code.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="conc"&gt;Conclusion ✅&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;If you've made it this far into the article, congratulations and thank you! I hope the advice I've shared about the application process will help you find success as a future MLH Fellow. With that said, please don't be discouraged if you don't get in the first or even the second time you apply! The program is highly competitive and as the admissions team says, you should take the rejection as a "not right now" instead of "never"! &lt;/p&gt;

&lt;p&gt;Please feel free to comment about more articles you'd like to see and reach out on LinkedIn for any personal questions you may have about the program. ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u id="resource"&gt;Additional Resources 📚&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Looking for more information on the Fellowship? Here are some great links to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The official MLH Fellowship website: &lt;a href="https://fellowship.mlh.io/" rel="noopener noreferrer"&gt;https://fellowship.mlh.io/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;The official MLH Fellowship LinkedIn page (hint: find past fellows here and reach out about their experiences) &lt;a href="https://www.linkedin.com/school/mlh-fellowship/" rel="noopener noreferrer"&gt;https://www.linkedin.com/school/mlh-fellowship/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;The November 2022 MLH Fellowship information session, hosted by the admissions team: &lt;a href="https://lnkd.in/g6KGiek3" rel="noopener noreferrer"&gt;https://lnkd.in/g6KGiek3&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>mlhgrad</category>
      <category>devops</category>
      <category>devrel</category>
    </item>
  </channel>
</rss>
