<?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: Anna Wijetunga</title>
    <description>The latest articles on DEV Community by Anna Wijetunga (@annawijetunga).</description>
    <link>https://dev.to/annawijetunga</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F358515%2Fbc7f9606-4e04-44ec-bb49-b69d329f8420.jpeg</url>
      <title>DEV Community: Anna Wijetunga</title>
      <link>https://dev.to/annawijetunga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/annawijetunga"/>
    <language>en</language>
    <item>
      <title>That First Ticket</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Wed, 11 Dec 2024 15:06:21 +0000</pubDate>
      <link>https://dev.to/annawijetunga/that-first-ticket-54cb</link>
      <guid>https://dev.to/annawijetunga/that-first-ticket-54cb</guid>
      <description>&lt;p&gt;Originally posted with aware3 in 2020. Reposting now for posterity :)&lt;/p&gt;

&lt;p&gt;Life in any new job can mean a lot of on-the-spot learning, questions, and stumbling. As a former educator transitioning into tech, life as a brand new Software Engineer felt all the more foreign.&lt;/p&gt;

&lt;p&gt;Some of my very first questions to myself:&lt;/p&gt;

&lt;p&gt;Sweet! I now have a laptop and an external monitor — oh boy, where exactly did my cursor go!?&lt;/p&gt;

&lt;p&gt;Why can’t I stop thinking of boats whenever I hear the word Docker?&lt;/p&gt;

&lt;p&gt;Is this the part where everyone finds out I don’t really know what I’m doing?!&lt;/p&gt;

&lt;p&gt;Truth be told, my first few days of virtual onboarding and meeting my new team (my new team!) were a treat. New beginnings can be absolutely beautiful.&lt;/p&gt;

&lt;p&gt;But what I really, really, really wanted to know was the answer to the very question I asked everyone else when I was job hunting:&lt;/p&gt;

&lt;p&gt;What’s a day in the life like? It all starts with a ticket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bugs and features.&lt;/strong&gt; In my short experience thus far, I’ve learned that there are generally two types of tickets: bugs and features. You’re either fixing or building. For my first ticket, I was fixing. I needed to prevent text from spilling outside of a button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A sea of code.&lt;/strong&gt; Being brand new at your job means that each task is so much more than solving a problem. That sea of code — that’s what I was swimming in. For the first few hours, I was trying to orient myself. Look at the portal (app) in the browser, inspect some elements, find said elements in the code repo. Well, &lt;em&gt;try&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replicate&lt;/strong&gt;. Back to the task at hand, after orienting myself a wee bit, I knew I needed to first replicate the issue. Find the button, see the text overflow, and figure out when it happens and why. Might I say, this part was a hoot!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find the code.&lt;/strong&gt; Once replicated, I knew I needed to find the code for that element in the repo. Figuring out what to search for was initially a roadblock, but trial and error proved effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blank stare.&lt;/strong&gt; I jest, but this was the moment I’d been waiting for. Me, Software Engineer Anna, at bat. After a bit of panic breathing, I thought back to the task at hand. Text, in a button, was overflowing. Overflow. Overflow properties. CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google.&lt;/strong&gt; Yes, folks! Yes! Now that I knew what I needed to do, I searched for CSS properties and ways to keep text inside a button and prevent overflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Educated trial and error.&lt;/strong&gt; I knew a few properties that might do the trick, but now I had to compare the standards and styles of the code base at hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The other bits.&lt;/strong&gt; Throughout that process, there were plenty of other tidbits that I picked up. When to start Docker and why it’s important, how to track progress in Jira, which version of Bootstrap we use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the tests.&lt;/strong&gt; There are tests to be run, to ensure that what I’ve built didn’t break existing code. There will be a time and place to get into the details (the details are great!) but for now I’ll say, testing really, really, really, really, REALLY matters and is a lot to get used to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That first PR.&lt;/strong&gt; Once tests are passing and the commits are made and pushed, it’s time to make the pull request. That gorgeous signal that you’re ready for your changes to be reviewed by another team member.&lt;/p&gt;

&lt;p&gt;The next steps vary, but here’s what else happens once a PR is submitted. Someone else on the team will review it and leave comments for next steps. But don’t wait for that review — keep going. Either work on a new ticket, work on any other open tickets or pair up with a teammate to review what they’re working on.&lt;/p&gt;

&lt;p&gt;And then rinse and repeat. Tickets, pairing up, testing, fixing, building — it’s a beautiful process to improve what exists.&lt;/p&gt;

&lt;p&gt;Now that I’m in it and have experienced the day-to-day life of a software engineer, it doesn’t feel all that foreign to me. But while still at Flatiron or even while job hunting, it was THE thing I was most anxious to figure out.&lt;/p&gt;

&lt;p&gt;If you’re out there and want to know more about the ins and outs of a day on the job, leave a comment below! Always happy to share.&lt;/p&gt;

&lt;p&gt;Cheers, and thanks so much for reading.&lt;/p&gt;

&lt;p&gt;Author: Anna Wijetunga, Associate Software Engineer&lt;/p&gt;

</description>
    </item>
    <item>
      <title>An Engineering Management Philosophy (i.e. How We Got Sh*t Done)</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Tue, 06 Aug 2024 20:46:08 +0000</pubDate>
      <link>https://dev.to/annawijetunga/engineering-management-philosophy-how-we-got-sht-done-3m0e</link>
      <guid>https://dev.to/annawijetunga/engineering-management-philosophy-how-we-got-sht-done-3m0e</guid>
      <description>&lt;p&gt;You know when something just works? And you don't want to mess with a good thing? Yup, been there. I'm there right now.&lt;/p&gt;

&lt;p&gt;My engineering team moved off our tried-and-true engineering management practices in order to practice Scrum. I'm not mad about scrum &lt;strong&gt;but&lt;/strong&gt; I am mourning the loss of the good times, and even if no one else gives a hoot, I wanted to share what made our system shine :).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An Engineering Management Philosophy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Humans are bad at estimating.&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Estimates are inherently unreliable and should be treated with caution. You know I'm right! &lt;/li&gt;
&lt;li&gt;Self-reported data cannot be trusted. &lt;/li&gt;
&lt;li&gt;Validate and cross-check self-reported metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Small user stories are key.&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulate one definition of “done” in acceptance criteria.&lt;/li&gt;
&lt;li&gt;Small scope limits risk and focuses engineers.&lt;/li&gt;
&lt;li&gt;Break work down to enable each team (BA, QA, Dev) to build a stable, quality product.&lt;/li&gt;
&lt;li&gt;Small changes allow for faster, more confident progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Author acceptance criteria on every ticket.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look for "and" in the title to avoid combining tasks.&lt;/li&gt;
&lt;li&gt;Use Tech Discovery and Tech Notes to limit scope early.&lt;/li&gt;
&lt;li&gt;Utilize investigation tickets for unclear bugs.&lt;/li&gt;
&lt;li&gt;Avoid promoting tickets that are actually multiple tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Work categories.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Roadmap, Testing, Escalated, DevOps, Tech Debt.&lt;/li&gt;
&lt;li&gt;Allocate weekly capacity percentages to each category.&lt;/li&gt;
&lt;li&gt;Adapt percentages to meet stakeholder needs.&lt;/li&gt;
&lt;li&gt;Predictably manage expectations outside engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ticket velocity.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Measure on an 8-week average.&lt;/li&gt;
&lt;li&gt;Plan capacity &lt;em&gt;to include&lt;/em&gt; pairing, training, learning, PR reviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stakeholder meetings.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Align priorities every Friday.&lt;/li&gt;
&lt;li&gt;Engineering provides capacity, stakeholders bring priorities.&lt;/li&gt;
&lt;li&gt;Strategically choose tickets for “the plan”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Mid-week escalations.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allow off-plan blocker tickets.&lt;/li&gt;
&lt;li&gt;Escalations should be discussions, not dictations.&lt;/li&gt;
&lt;li&gt;Minimize disruptions through automated testing and technical debt reduction.&lt;/li&gt;
&lt;li&gt;Proactively prevent issues before integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sprint planning and accountability.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capture prioritized tickets for upcoming sprint/week.&lt;/li&gt;
&lt;li&gt;Hold accountable to commitments.&lt;/li&gt;
&lt;li&gt;Capture and review off-plan solved tickets.&lt;/li&gt;
&lt;li&gt;Use retrospectives to prevent future off-plan tickets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Metrics and discipline.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Measure 8-week velocity per work category.&lt;/li&gt;
&lt;li&gt;Visualize trends and coach teams to align with targets.&lt;/li&gt;
&lt;li&gt;Deliver with precision against target percentages.&lt;/li&gt;
&lt;li&gt;Resist stakeholder pressure to over-promote tickets.&lt;/li&gt;
&lt;li&gt;Remove impediments to stay on plan.&lt;/li&gt;
&lt;li&gt;Track metrics and maintain discipline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The golden rule&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Plan the work, work the plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sigh. That felt great. Thanks for letting me get that all down on the page and relive the good times of high performance and rarely missing a delivery date.&lt;/p&gt;

&lt;p&gt;In other news! THANK YOU for reading this far! If any of this piques &lt;em&gt;your&lt;/em&gt; interest, contact me so we can talk shop. I'd love nothing more than to hear your engineering management philosophy and your take on mine.&lt;/p&gt;

</description>
      <category>management</category>
      <category>softwaredevelopment</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Debuggin' Test Output</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Thu, 07 Jan 2021 17:29:35 +0000</pubDate>
      <link>https://dev.to/annawijetunga/debuggin-test-output-lin</link>
      <guid>https://dev.to/annawijetunga/debuggin-test-output-lin</guid>
      <description>&lt;p&gt;&lt;strong&gt;An Explanation&lt;/strong&gt;&lt;br&gt;
Tests are slippery things. Because code is constantly being updated, a test that passed with flying colors one day may fail with the latest merge.&lt;/p&gt;

&lt;p&gt;Because of that, we're always looking for failures, but also for warnings.&lt;/p&gt;

&lt;p&gt;Besides taking up space, warnings indicate an issue bubbling up. Best to figure it out now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Scene:&lt;/strong&gt;&lt;br&gt;
Test output for JavaScript(Vue).&lt;br&gt;
All tests pass but output shows Vue &lt;em&gt;warnings&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
The warnings are bulky and clutter test output.&lt;br&gt;
The issue behind the warnings needs to be fixed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt;&lt;br&gt;
Think fast but GO SLOW.&lt;br&gt;
Work through the warning, and trace it to the root.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Off to the Races - Where's My Horse?&lt;/strong&gt;&lt;br&gt;
Having learned to &lt;em&gt;write&lt;/em&gt; tests only months ago, debugging test output seemed important and exciting but I was at a loss for how to solve this.&lt;/p&gt;

&lt;p&gt;I channeled my inner Alan (test expert on my team) and knew I first had to slow down. Before I even &lt;em&gt;thought&lt;/em&gt; about fixing anything, I had to find the test with those warnings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Where are the warnings coming from?&lt;/strong&gt;&lt;br&gt;
From the CLI output, it &lt;em&gt;looked&lt;/em&gt; like the warnings originated from this test:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp24ivae46bnx2ym93y6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp24ivae46bnx2ym93y6p.png" alt="Alt Text" width="764" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But locally, that test had no warnings. Boo hiss.&lt;/p&gt;

&lt;p&gt;I re-ran the tests, scouring the output as it was emitted, and I found the warnings under a different test:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzfk4i343wjh1qsrtzwxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzfk4i343wjh1qsrtzwxf.png" alt="Alt Text" width="518" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Trace back the warning message.&lt;/strong&gt;&lt;br&gt;
The warning: &lt;code&gt;WARN: '%cUnhandled rejection Error: cancel&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I did two things here. &lt;/p&gt;

&lt;p&gt;First, I read through the warning message (which was at least a dozen lines long) slowly and thoroughly, looking for any clues. Second, as another expert on my team says, I did some Googles. &lt;/p&gt;

&lt;p&gt;From what I'd seen and read, I surmised that the warning had to do with promises.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Phone a friend.&lt;/strong&gt;&lt;br&gt;
Writing tests with promises is tricky business, so I called in our test expert, Alan. His experience and exposure to test writing has made him an incredible source and teacher.&lt;/p&gt;

&lt;p&gt;We looked at the tests together and noticed a few methods: open() and cancel(). &lt;/p&gt;

&lt;p&gt;We traced them to the component itself (vs the test):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    methods: {
        open() {
            if (this.modalOpen) {
                return this.deferred.promise;
            }

            this.modalOpen = true;
            this.deferred = this.createDeferred();

            return this.deferred.promise;
        },

        cancel() {
            this.modalOpen = false;
            this.resetForm();
            this.deferred.reject(new Error("cancel"));

            return this.deferred.promise;
        },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;cancel() caught Alan's eye - specifically this part:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;this.deferred.reject(new Error("cancel"))&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This&lt;/em&gt; was our problem. Our warning message (&lt;code&gt;WARN: '%cUnhandled rejection Error: cancel&lt;/code&gt;) contained the word "cancel" and that word was coming directly from within our cancel() method.&lt;/p&gt;

&lt;p&gt;Finally, connecting the dots!&lt;/p&gt;

&lt;p&gt;The other piece Alan knew (that I did not) was that for this particular test, we were using Bluebird (a third-party promise library). &lt;/p&gt;

&lt;p&gt;And because of Bluebird, we know that an error will always be thrown.&lt;/p&gt;

&lt;p&gt;And, we need to DO SOMETHING with that error - primarily catch it - or Vue will scream at us.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Mini celebration - we (ahem, Alan!) found the root issue.&lt;/strong&gt;&lt;br&gt;
Yay!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Back to the test.&lt;/strong&gt;&lt;br&gt;
There did not seem to be one perfect solution but many ideas to test out.&lt;/p&gt;

&lt;p&gt;We first settled on wrapping our expect statement in a catch block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.vm.deferred.promise.catch( () =&amp;gt; {
    expect(app.vm.hasError).to.be.false;
    done();
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We re-ran our tests, et voila - warning messages disappeared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Yee old refactor.&lt;/strong&gt;&lt;br&gt;
Although we did not end up refactoring, it's worth mentioning that there was great deal of discussion about possibilities. To avoid the chaining, to make the code cleaner, to stick to standards set elsewhere. All up for consideration.&lt;/p&gt;

&lt;p&gt;In the end, the best solution remained our first solution, but it was a great lesson for me - there will always be pros and cons to the way we code/test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Big Sigh, Happy Day&lt;/strong&gt;&lt;br&gt;
No two warnings are the same and debugging this stuff will always present a challenge. But there is hope. As test-expert-Alan kindly and wisely always says, "It's just a matter of practice."&lt;/p&gt;

&lt;p&gt;Cheers to practice and cheers to more challenges.&lt;/p&gt;

&lt;p&gt;If you have great practices for test debugging, comment below and let me know! And thanks so much for reading.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>codenewbie</category>
      <category>javascript</category>
    </item>
    <item>
      <title>That First Ticket</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Mon, 14 Sep 2020 13:52:26 +0000</pubDate>
      <link>https://dev.to/annawijetunga/that-first-ticket-j8n</link>
      <guid>https://dev.to/annawijetunga/that-first-ticket-j8n</guid>
      <description>&lt;p&gt;Life in any new job can mean a lot of on-the-spot learning, questions, and stumbling. As a former educator transitioning into tech, life as a brand new Software Engineer felt all the more foreign.&lt;/p&gt;

&lt;p&gt;Some of my very first questions to myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sweet! I now have a laptop &lt;em&gt;and&lt;/em&gt; an external monitor - oh boy, where exactly did my cursor go!?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why can't I stop thinking of boats whenever I hear the word Docker?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is this the part where everyone finds out I don't really know what I'm doing?!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Truth be told, my first few days of virtual onboarding and meeting my new team (my new team!) were a treat. New beginnings can be absolutely beautiful.&lt;/p&gt;

&lt;p&gt;But what I really, really, really wanted to know was the answer to the very question I asked everyone &lt;em&gt;else&lt;/em&gt; when I was job hunting:&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a day in the life like?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A Day In The Life
&lt;/h3&gt;

&lt;p&gt;It all starts with a ticket.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bugs and features.&lt;/strong&gt; In my short experience thus far, I've learned that there are generally two types of tickets: bugs and features. You're either fixing or building. For my first ticket, I was fixing. I needed to prevent text from spilling outside of a button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A sea of code.&lt;/strong&gt; Being brand new at your job means that each task is so much more than solving a problem. That sea of code - that's what I was swimming in. For the first few hours, I was trying to orient myself. Look at the portal (app) in the browser, inspect some elements, find said elements in the code repo. Well, &lt;em&gt;try&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replicate.&lt;/strong&gt; Back to the task at hand, after orienting myself a wee bit, I knew I needed to first replicate the issue. Find the button, see the text overflow, and figure out when it happens and why. Might I say, this part was a hoot! &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Find the code.&lt;/strong&gt; Once replicated, I knew I needed to find the code for that element in the repo. Figuring out what to search for was initially a roadblock, but trial and error proved effective.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blank stare.&lt;/strong&gt; I jest, but this was the moment I'd been waiting for. Me, Software Engineer Anna, at bat. After a bit of panic breathing, I thought back to the task at hand. Text, in a button, was overflowing. Overflow. Overflow properties. CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Google.&lt;/strong&gt; Yes, folks! Yes! Now that I knew what I needed to do, I searched for CSS properties and ways to keep text inside a button and prevent overflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Educated trial and error.&lt;/strong&gt; I knew a few properties that might do the trick, but now I had to compare the standards and styles of the code base at hand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The other bits.&lt;/strong&gt; Throughout that process, there were plenty of other tidbits that I picked up. When to start Docker and why it's important, how to track progress in Jira, which version of Bootstrap we use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the tests.&lt;/strong&gt; There are tests to be run, to ensure that what I've built didn't break existing code. There will be a time and place to get into the details (the details are great!) but for now I'll say, testing really, really, really, really, REALLY matters and is a lot to get used to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;That first PR.&lt;/strong&gt; Once tests are passing and the commits are made and pushed, it's time to make the pull request. That gorgeous signal that you're ready for your changes to be reviewed by another team member. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next steps vary, but here's what else happens once a PR is submitted. Someone else on the team will review it and leave comments for next steps. But don't wait for that review - keep going. Either work on a new ticket, work on any other open tickets or pair up with a teammate to review what they're working on.&lt;/p&gt;

&lt;p&gt;And then rinse and repeat. Tickets, pairing up, testing, fixing, building - it's a beautiful process to improve what exists. &lt;/p&gt;

&lt;p&gt;Now that I'm in it and have experienced the day-to-day life of a software engineer, it doesn't feel all that foreign to me. But while still at Flatiron or even while job hunting, it was THE thing I was most anxious to figure out. &lt;/p&gt;

&lt;p&gt;If you're out there and want to know more about the ins and outs of a day on the job, leave a comment below! Always happy to share.&lt;/p&gt;

&lt;p&gt;Cheers, and thanks so much for reading.&lt;/p&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Keep the Marathon Going</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Tue, 11 Aug 2020 19:51:00 +0000</pubDate>
      <link>https://dev.to/annawijetunga/keep-the-marathon-going-4p7o</link>
      <guid>https://dev.to/annawijetunga/keep-the-marathon-going-4p7o</guid>
      <description>&lt;p&gt;I'm a runner, and I run marathons. It's a crazy thing to run 26.2 miles, but boy, do I enjoy it.&lt;/p&gt;

&lt;p&gt;I will tell you that for a marathon, runners strategically plan their race. When to eat. When to drink. Each mile carefully paced.&lt;/p&gt;

&lt;p&gt;I will also tell you that I always rely on marathon volunteers during the race. Those aid stations typically come every few miles and water never tastes so good.&lt;/p&gt;

&lt;p&gt;And the crowds, my gosh! Crowds are my fuel and motivation to keep going. Usually, people yelling at me is my worst nightmare but in a marathon? YELL LOUDER.&lt;/p&gt;

&lt;p&gt;This past May, however, I embarked upon a different kind of marathon. &lt;/p&gt;

&lt;p&gt;The job hunt marathon. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Starting Line
&lt;/h3&gt;

&lt;p&gt;My job hunt marathon began in May after graduating from Flatiron and yes, there have there been so many ups and downs.&lt;/p&gt;

&lt;p&gt;Those first few days and weeks were exhilarating. New schedule, new routines, and a brand new task ahead. Here I come, world!&lt;/p&gt;

&lt;p&gt;Whelp.&lt;/p&gt;

&lt;p&gt;Did you see it coming? Did you guess?&lt;/p&gt;

&lt;p&gt;It didn't take long before overwhelm and uncertainty took over. &lt;/p&gt;

&lt;p&gt;Am I spending my time the right way? Does anyone really want the skills I offer? What was I thinking changing careers?!&lt;/p&gt;

&lt;p&gt;Thank goodness for those aid stations. &lt;/p&gt;

&lt;p&gt;My Flatiron community! Tech Twitter! My coaches and mentors! My family! &lt;/p&gt;

&lt;p&gt;I never had to sweat for long before finding a kind word, a gentle nudge of encouragement or guidance. &lt;/p&gt;

&lt;p&gt;Rinse and repeat. &lt;/p&gt;

&lt;p&gt;That cycle would repeat on a &lt;em&gt;weekly&lt;/em&gt; basis, folks, and that's no joke. &lt;/p&gt;

&lt;p&gt;I became so grateful for and relied heavily upon my aid stations, my community. They always helped me keep going in the right direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Something Incredible
&lt;/h3&gt;

&lt;p&gt;You're about to find out that I've made it to a landmark spot in the marathon - the halfway point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mile 13.1
&lt;/h3&gt;

&lt;p&gt;A band is playing an earsplitting rendition of Eye of the Tiger, confetti is flying, the crowds are WILD, and you feel you could just burst. Happiness, exhaustion, pride, all of it.  &lt;/p&gt;

&lt;p&gt;I am beyond honored and grateful to say that &lt;a href="https://aware3.com/" rel="noopener noreferrer"&gt;aware3&lt;/a&gt; is mile 13.1 of my marathon.&lt;/p&gt;

&lt;p&gt;They are graciously taking me on as an Associate Software Engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep Running
&lt;/h3&gt;

&lt;p&gt;The marathon's not nearly over, but heck if this isn't the motivation and support to keep going. &lt;/p&gt;

&lt;p&gt;I can't believe I'm lucky enough to be a part of this, yes THIS, community. So grateful for the support that's carried me this far - can't wait to see what comes next.&lt;/p&gt;

&lt;p&gt;If you're running your marathon and job hunting right now, leave a comment below! I always appreciated when folks would share with me how they found their job and what they learned along the way - would love to pay it forward!&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>What We Give</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Mon, 13 Jul 2020 21:21:52 +0000</pubDate>
      <link>https://dev.to/annawijetunga/what-we-give-27fe</link>
      <guid>https://dev.to/annawijetunga/what-we-give-27fe</guid>
      <description>&lt;p&gt;My cohort mates and I graduated from Flatiron in April. Such good eggs, they are.&lt;/p&gt;

&lt;p&gt;A handful of those good eggs were as active as I was in our Slack channels, but not being tied to the curriculum any longer, communication was petering out (sad face).&lt;/p&gt;

&lt;p&gt;Nelson, a cohort mate, suggested a study group to continue sharing resources, and I jumped at the chance. &lt;/p&gt;

&lt;p&gt;Ultimately, my cohort mates and I wanted to code in front of each other because &lt;em&gt;that&lt;/em&gt; is the most intimidating part about technical interviews (cue the cold sweats).&lt;/p&gt;

&lt;p&gt;So each week, we choose a LeetCode problem, pair off into groups of 2 or 3, and we work through a problem together.&lt;/p&gt;

&lt;p&gt;It's been a few months of our study group's Friday afternoon Zoom calls, and I have to say, this has been THE most impactful part of my week. Not to mention the best motivation to stay the course and keep practicing for those technical interviews.&lt;/p&gt;

&lt;p&gt;Here's why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accountability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It can be &lt;em&gt;so&lt;/em&gt; easy to make excuses for not coding.&lt;/li&gt;
&lt;li&gt;It's much harder to make excuses when your gang's waiting for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Support
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You're surrounded by like-minded individuals.&lt;/li&gt;
&lt;li&gt;There's an abundance of positivity.&lt;/li&gt;
&lt;li&gt;It's very hard to feel discouraged together.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Education
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You get to watch other people code.&lt;/li&gt;
&lt;li&gt;You get to compare notes and learn from each other.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fun
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Job hunting is stressful! THIS is not!&lt;/li&gt;
&lt;li&gt;We laugh! We are friendly! We have fun!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Celebrations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;We've, so far, seen 2 of our good eggs get hired! DID YOU HEAR THAT?!&lt;/li&gt;
&lt;li&gt;This is a place to welcome good news, unconditionally.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  One Last Thing
&lt;/h3&gt;

&lt;p&gt;Having just finished &lt;em&gt;The Splendid and the Vile&lt;/em&gt; (Erik Larson's book on Churchill), something Churchill said struck me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We make a living by what we get, but we make a life by what we give."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These good eggs who gather on Fridays, we are indeed a group who give. The sharing of time, resources, and kindness has not gone unnoticed, and our group continues to grow because of it. &lt;/p&gt;

&lt;p&gt;(Well, except for the folks who leave to work their new, real jobs, but we forgive them.)&lt;/p&gt;

&lt;p&gt;Are you looking to practice for interviews? We welcome you! Respond to this post, and I'll share the details for how you can join us.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>firstyearincode</category>
      <category>javascript</category>
    </item>
    <item>
      <title>OAuth &amp; Heroku Play Nice</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Wed, 01 Jul 2020 18:22:34 +0000</pubDate>
      <link>https://dev.to/annawijetunga/oauth-heroku-play-nice-443e</link>
      <guid>https://dev.to/annawijetunga/oauth-heroku-play-nice-443e</guid>
      <description>&lt;p&gt;Hosting my Rails app on Heroku was A Lot. But that story ended in success!&lt;/p&gt;

&lt;p&gt;And yet, when I tried to log in using Google, no dice. My OAuth authentication that worked seamlessly prior to hosting on Heroku was now broken.&lt;/p&gt;

&lt;p&gt;I won't tell you &lt;em&gt;exactly&lt;/em&gt; how long it took for me to address this issue, but I will approximate: 2 months, shame on me!&lt;/p&gt;

&lt;p&gt;My ever-patient-and-generous friend Noah helped me get the ball rolling, and I owe this guide and this knowledge to him. &lt;/p&gt;

&lt;p&gt;In the event you are in a similar spot and need to get your OAuth authentication working on your hosted app, Godspeed and may this help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assumptions
&lt;/h2&gt;

&lt;p&gt;1) You have built a Rails app with third-party authentication using OAuth.&lt;/p&gt;

&lt;p&gt;2) You've already gone through the initial setup of Google APIs and created your original OAuth Client IDs - which you used within your app.&lt;/p&gt;

&lt;p&gt;3) OAuth authentication is working when you host your app locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start here
&lt;/h2&gt;

&lt;p&gt;1) Go here: &lt;a href="//console.developers.google.com"&gt;Google APIs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2) In the left-side menu bar, click on &lt;strong&gt;Credentials&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;3) There you should see the header, &lt;strong&gt;OAuth 2.0 Client IDs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;4) Create a new URI (and keep the existing).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://your-app-url/auth/google_oauth2/callback&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;6) Save your updates.&lt;/p&gt;

&lt;p&gt;7) You'll then need to set your google client id and secret, and you can do so within your terminal. &lt;/p&gt;

&lt;p&gt;Run the following two commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;heroku config:set GOOGLE_CLIENT_ID=yourclientid&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;heroku config:set GOOGLE_CLIENT_SECRET=yoursecret&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It will set the id and secret and after each, restart the app.&lt;/p&gt;

&lt;p&gt;8) Thought that would do it! But, login via Google continued to fail, and this time I received a semi-helpful error message about cross-site request forgery (csrf).&lt;/p&gt;

&lt;p&gt;To combat this, I added the following to both my Users Controller and Sessions Controller - both of which deal with login:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;skip_before_action :protect_from_forgery, raise: false&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that did the trick. &lt;/p&gt;

&lt;p&gt;If you've given this a try, or even if you've figured out how to do this already, sure would love to hear about your experience!&lt;/p&gt;

&lt;p&gt;Thanks so much for reading - until next time.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>The Git Pull Guide</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Sat, 20 Jun 2020 19:56:28 +0000</pubDate>
      <link>https://dev.to/annawijetunga/the-git-pull-guide-8c8</link>
      <guid>https://dev.to/annawijetunga/the-git-pull-guide-8c8</guid>
      <description>&lt;p&gt;GitHub is powerful and often magical.&lt;/p&gt;

&lt;p&gt;But learning the ins and outs has been &lt;em&gt;stressful.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Recently my programming partner and I started building an app and realized, we had no idea how to contribute to a shared repo.&lt;/p&gt;

&lt;p&gt;OH BOY.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;lot&lt;/em&gt; of trial and error led us to push and pull requests like we were born to do them.&lt;/p&gt;

&lt;p&gt;Mostly to remind myself how to do this again (full disclaimer), but also to be a guide anyone else learning (kudos to you!), I present:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Git Pull Guide
&lt;/h2&gt;

&lt;p&gt;First and foremost, &lt;a href="https://opensource.com/article/19/7/create-pull-request-github" rel="noopener noreferrer"&gt;this guide&lt;/a&gt; was my saving grace.&lt;/p&gt;

&lt;p&gt;But the reason I'm writing my own is that I varied from the above guide in a few ways to make it work for me.&lt;/p&gt;

&lt;p&gt;Here's my take.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) To fork, or not to fork?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The author of the original guide would advise you to first fork the original repo.&lt;/p&gt;

&lt;p&gt;This caused me to pull my hair out (when I eventually tried to push changes to the original repo), so I did not do that.&lt;/p&gt;

&lt;p&gt;A kind reader suggested the following perspective (thank you Jennifer Davis!), and I wanted to share it with you here:&lt;/p&gt;

&lt;p&gt;"As for forking or not, it all depends first on your workflow and how you want to work and if you have owner/maintainer privs on the source repo. If you aren't an owner/maintainer you definitely have to fork the repo."&lt;/p&gt;

&lt;p&gt;Great tips, Jennifer!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Clone the repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/&amp;lt;YourUserName&amp;gt;/demo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; when cloning, I ran into a few hiccups using the SSH version, but after helpful wisdom from Jennifer Davis (yup! she's done it again!), I'd now recommend using SSH, with this helpful &lt;a href="https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh" rel="noopener noreferrer"&gt;GitHub resource&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Switch into your new directory.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd cool-app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Create a new branch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git checkout -b new_branch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Create a new remote for the upstream repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git remote add upstream https://github.com/name/appname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here, "upstream repo" refers to the original repo.&lt;/p&gt;

&lt;p&gt;And now, you should be in that branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6) Make a change to the code and push it to the new branch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git commit -m "Add readme"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git push -u origin new_branch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If that goes through successfully, you'll see a message similar to this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9la8z0i2wzfitsi2rhac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9la8z0i2wzfitsi2rhac.png" alt="Alt Text" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo credit to Kedar Vijay Kulkarni&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7) Head over to GitHub the repo itself. The green &lt;code&gt;Compare &amp;amp; pull request&lt;/code&gt; button will appear in the original repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click it and you'll see the &lt;code&gt;Open a pull request&lt;/code&gt; page. &lt;/p&gt;

&lt;p&gt;There, you'll see another green button, this one says &lt;code&gt;Create pull request&lt;/code&gt; and you can do just that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8) From now on, you can make a change and push that change via this command:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git push origin new_branch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And create a pull request from there.&lt;/p&gt;

&lt;p&gt;Tears of joy, applause, so happy. &lt;/p&gt;

&lt;p&gt;Thanks so much for reading, catch you next time!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>github</category>
      <category>firstyearincode</category>
    </item>
    <item>
      <title>Unexpected Kindness</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Fri, 12 Jun 2020 17:41:42 +0000</pubDate>
      <link>https://dev.to/annawijetunga/unexpected-kindness-4ne9</link>
      <guid>https://dev.to/annawijetunga/unexpected-kindness-4ne9</guid>
      <description>&lt;p&gt;Ever been on the receiving end of unexpected kindness? Then you know it's worth talking about!&lt;/p&gt;

&lt;p&gt;I'm a recent career changer (former educator turned software engineer) and am job hunting. During this complicated time in our world.&lt;/p&gt;

&lt;p&gt;Which you'd think would be Really Terrible Timing.&lt;/p&gt;

&lt;p&gt;You'd mostly be right. But then the unexpected happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unexpected
&lt;/h2&gt;

&lt;p&gt;It's typical these days to get on the phone with a technical recruiter and talk shop. What's the role? Salary expectations? Are you a real human?&lt;/p&gt;

&lt;p&gt;That was my expectation getting on a call with Steve Levy.&lt;/p&gt;

&lt;p&gt;Buckle up, folks, that's not what happened.&lt;/p&gt;

&lt;p&gt;He declared up front that he didn't take this call to talk about jobs at that company - but rather to help me successfully present myself as a strong person (and candidate) moving forward.&lt;/p&gt;

&lt;p&gt;Not sure if that's sunk in for you yet. &lt;/p&gt;

&lt;h3&gt;
  
  
  He took the call purely to help me.
&lt;/h3&gt;

&lt;p&gt;That alone is a jaw-dropper, and I'm not even done yet.&lt;/p&gt;

&lt;p&gt;For 45 minutes, I was taught (&lt;em&gt;taught&lt;/em&gt;, folks, taught!):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) How to turn my resume into a love letter to any employer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) How to use my decades of prior work experience as an asset.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) How to get connected in all the right places.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;It's also worth mentioning, Steve was &lt;em&gt;only&lt;/em&gt; able to teach like this because he took the time to study my resume and LinkedIn profile ahead of time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This is A Big Deal
&lt;/h2&gt;

&lt;p&gt;I am here to tell you, this is not usual. This is not the norm. This is beyond anything I could have expected, dreamed of, imagined.&lt;/p&gt;

&lt;p&gt;A person who doesn't owe me a thing, took extra time and effort to help me.&lt;/p&gt;

&lt;p&gt;If you ask him, Steve would tell you that this is completely normal - it's just what he does.&lt;/p&gt;

&lt;p&gt;While that may be true, for someone in my shoes, it felt extraordinary. That kindness won't be forgotten.&lt;/p&gt;

&lt;p&gt;If you know me, even a little bit, you know that when folks give to me, I like to reciprocate. And if I can't, I pay it forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  And Now
&lt;/h2&gt;

&lt;p&gt;I'm paying it forward the best way I know how. &lt;/p&gt;

&lt;p&gt;Sharing what this experience meant to me, hoping it can you teach you something new, and most importantly, showing my gratitude.&lt;/p&gt;

&lt;p&gt;Steve Levy, you keep doing what you're doing, and you're going to change the world. Heck, you already have.&lt;/p&gt;

&lt;p&gt;To other folks out there following suit, the world is awfully lucky you're here.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>firstyearincode</category>
    </item>
    <item>
      <title>That Second Interview</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Mon, 08 Jun 2020 12:45:46 +0000</pubDate>
      <link>https://dev.to/annawijetunga/that-second-interview-29oe</link>
      <guid>https://dev.to/annawijetunga/that-second-interview-29oe</guid>
      <description>&lt;p&gt;All Flatiron grads are quite kindly gifted a free mock technical interview with a rep at &lt;a href="https://www.skilledinc.com/" rel="noopener noreferrer"&gt;Skilled&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To me, this interview felt quite authentic. I had all the nerves and sleepless nights that precede an interview.&lt;/p&gt;

&lt;p&gt;And yet. The interview was not only an incredible learning experience but a true delight. &lt;/p&gt;

&lt;p&gt;Let me tell you why this surprised me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) I finished the interview feeling positive.&lt;/strong&gt; I'll explain why this is a jaw-dropper.&lt;/p&gt;

&lt;p&gt;As a career changer, I struggle to exude confidence about my technical skills. Sure I have 20 years of work experience, but mere &lt;em&gt;months&lt;/em&gt; of coding. Months, folks.&lt;/p&gt;

&lt;p&gt;In this interview, my interviewer met me where I was. I was highly encouraged and never left "stuck" for long without a nudge.&lt;/p&gt;

&lt;p&gt;Not able to complete the coding challenge, I still walked away uplifted because my interviewer said,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You know what you're doing - you just need to practice. That's exactly how we all get better."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Can't tell you how validating that was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Without nerves, I was the real me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the beginning, my interviewer spent a few minutes small talking, and that naturally led into the first gentle interview question - tell me about your coding journey.&lt;/p&gt;

&lt;p&gt;But when he asked, it sure felt like he cared. So, every question that followed, I felt I could be genuine in return.&lt;/p&gt;

&lt;p&gt;Thus my slowly nerves melted away and the interview became conversational. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;This&lt;/em&gt; made an impact on me because I discovered that when I wasn't nervous about what the interviewer thought of me and if my answers were right, I could just be me. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Interviewing makes me better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've always had a wee bit of test/performance anxiety, and that certainly carries into interviews. From test taking to racing a marathon to interviewing, I become a stressed version of myself when the stakes are high.&lt;/p&gt;

&lt;p&gt;What has always helped is &lt;strong&gt;practice&lt;/strong&gt;. And yes, I am noticing a theme here, too.&lt;/p&gt;

&lt;p&gt;My mindset is shifting around interviewing. My hesitations center around my technical skills - I'm just not good enough, I'd told myself, why interview?&lt;/p&gt;

&lt;p&gt;But perhaps that needs adjusting. Maybe it's not up for me to decide if I'm good enough. Maybe I need to keep practicing coding but &lt;em&gt;also&lt;/em&gt; keep interviewing.&lt;/p&gt;

&lt;p&gt;The only way to get better at something is to keep doing it. If you wouldn't mind, just remind me of that before my next interview!&lt;/p&gt;

&lt;p&gt;Thanks, as always, for being here and reading. Always love hearing from folks, so don't hesitate to comment below. All the best.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>JavaScript Closures</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Thu, 04 Jun 2020 12:08:30 +0000</pubDate>
      <link>https://dev.to/annawijetunga/closures-4eba</link>
      <guid>https://dev.to/annawijetunga/closures-4eba</guid>
      <description>&lt;p&gt;Like learning any new language, your knowledge can drip away when your focus shifts.&lt;/p&gt;

&lt;p&gt;My focus did indeed shift over the past month - from intense language learning (JavaScript!) to interview prep to strictly coding practice.&lt;/p&gt;

&lt;p&gt;What I really needed, silly me, was a sweet lil' mixture of coding and concepts. &lt;/p&gt;

&lt;p&gt;Reviewing JavaScript basics, most concepts soaked right back in - except for one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closures
&lt;/h2&gt;

&lt;p&gt;Originally a mathematical concept, from lambda calculus (did you know that?! me neither!). But for our purposes here, we know a closure to be a behavior of functions.&lt;/p&gt;

&lt;p&gt;And &lt;em&gt;only functions&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;An object cannot have closure.&lt;/p&gt;

&lt;p&gt;Nor does a class have closure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only functions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For closure to be observed, a function must be invoked.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And&lt;/em&gt;, it must be invoked in a different branch of the scope chain from where it was originally defined.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closure Simply Defined
&lt;/h2&gt;

&lt;p&gt;Each reference from an inner function to the variables in an outer scope is called a closure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closure's Purpose
&lt;/h2&gt;

&lt;p&gt;A closure gives you access to an outer function’s scope from an inner function. &lt;/p&gt;

&lt;p&gt;The closure is a function that remembers the variables from the place where it is defined, regardless of where it is executed later.&lt;/p&gt;

&lt;p&gt;Many (and I mean &lt;em&gt;many&lt;/em&gt;) other authors claimed to explain closures simply, but I believe Dmitri Pavluti did it best:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dmitripavlutin.com/simple-explanation-of-javascript-closures/" rel="noopener noreferrer"&gt;Simple Explanation of Closures&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have a different resource or explanation that helped closures "click" for you? Share below - would love to hear more.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Power of the Journey</title>
      <dc:creator>Anna Wijetunga</dc:creator>
      <pubDate>Tue, 02 Jun 2020 12:22:28 +0000</pubDate>
      <link>https://dev.to/annawijetunga/power-of-the-journey-3i1d</link>
      <guid>https://dev.to/annawijetunga/power-of-the-journey-3i1d</guid>
      <description>&lt;p&gt;Before we dig in.&lt;/p&gt;

&lt;p&gt;2020 has meant:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Australian Bushfires&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;COVID-19&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Black Lives Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's not exhaustive.&lt;/p&gt;

&lt;p&gt;What you need to know is that I wake up each morning remembering the weight of the world. &lt;/p&gt;

&lt;p&gt;And then I take a step forward.&lt;/p&gt;

&lt;p&gt;As I dig into writing about this coding journey here and now, please know I do this because it helps me remember:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nothing is permanent&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Life is constantly teaching, but it's up to us to learn&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;We can rally together when things get scary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With that in mind, the power of the journey.&lt;/p&gt;

&lt;p&gt;Perhaps the best part about changing careers from education to tech has been hearing from the people. &lt;/p&gt;

&lt;p&gt;Their stories, their zig-zag paths from here to there, and what they learned.&lt;/p&gt;

&lt;p&gt;Although no one has taken the same path from point A to point B, there are beautiful themes emerging:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Inquisitiveness&lt;/strong&gt; is gold. Thinking, "Well that's weird" and then having the gusto to figure it out.&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Embrace the unknown&lt;/strong&gt;, because you'll &lt;em&gt;never&lt;/em&gt; know all the things. &lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;No door &lt;em&gt;has to&lt;/em&gt; close all the way.&lt;/strong&gt; Show your best self always, and maintain relationships. You just never know.&lt;/p&gt;

&lt;p&gt;4) There exists a balance amongst business, team and personal objectives. &lt;strong&gt;Find a way to further all three.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;5) &lt;strong&gt;This is a JOURNEY. Invest in it daily.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cannot wait to keep listening, cannot wait to learn from those before me.&lt;/p&gt;

&lt;p&gt;Have something to add? I'm all ears.&lt;/p&gt;

&lt;p&gt;Be well.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>firstyearincode</category>
    </item>
  </channel>
</rss>
