<?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>Forem: Stefanni Brasil</title>
    <description>The latest articles on Forem by Stefanni Brasil (@stefannibrasil).</description>
    <link>https://forem.com/stefannibrasil</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%2F15705%2Fdb5fb08d-e39a-4d8a-b99a-e7735b404282.jpeg</url>
      <title>Forem: Stefanni Brasil</title>
      <link>https://forem.com/stefannibrasil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stefannibrasil"/>
    <language>en</language>
    <item>
      <title>How to Improve Code Quality on a Ruby on Rails Application</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Thu, 11 Nov 2021 21:45:59 +0000</pubDate>
      <link>https://forem.com/hexdevs/how-to-improve-code-quality-on-a-ruby-on-rails-application-2on</link>
      <guid>https://forem.com/hexdevs/how-to-improve-code-quality-on-a-ruby-on-rails-application-2on</guid>
      <description>&lt;p&gt;Does it take forever to ship even small features on the codebase you're working on? Is the code hard to understand and maintain? &lt;br&gt;
Are projects always running over budget? Are you constantly sacrificing code quality and not paying down technical debt?&lt;/p&gt;

&lt;p&gt;When you change one feature, does another completely unrelated part of your app stop working? New bugs appear, even though tests never break? 🥵&lt;/p&gt;

&lt;p&gt;Those are signs that you are suffering from working on a codebase with low code quality.&lt;/p&gt;

&lt;p&gt;How can you get out of this mess? Is it possible to avoid getting into this situation in the first place? Yes, it is!&lt;/p&gt;

&lt;p&gt;By the end of this post, you'll know exactly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to improve Code Quality on a Ruby on Rails application&lt;/li&gt;
&lt;li&gt;Which Code Quality tools to use&lt;/li&gt;
&lt;li&gt;How to use the Ruby Code Quality Checklist to get out of the tar pit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post is based on a talk from Ernesto Tagwerker's talk entitled &lt;a href="https://www.youtube.com/watch?v=ZyU6K6eR-_A"&gt;Escaping The Tar Pit&lt;/a&gt; at RubyConf 2019. Ernesto is the Founder &amp;amp; CTO at &lt;a href="https://www.fastruby.io/"&gt;FastRuby.io&lt;/a&gt; &amp;amp; &lt;a href="https://www.ombulabs.com/"&gt;Ombu Labs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Code Quality?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Software Code Quality means it works as expected AND it isn't a PITA to maintain it" -- Ernesto Tagwerker&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The simplest way to know if your codebase has enough Code Quality is if your team can easily add or change features without breaking &lt;br&gt;
unrelated features.&lt;/p&gt;

&lt;p&gt;And when the features do break, the test suite easily detects the problem before you even push the code to production.&lt;/p&gt;

&lt;p&gt;In summary, a quality codebase is &lt;strong&gt;easy to read, change, and maintain&lt;/strong&gt;. It also has good code coverage, and the test suite helps you improve and refactor the code, or change features with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  How To Improve Code Quality on a Ruby on Rails application
&lt;/h2&gt;

&lt;p&gt;There are four steps you need to follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Measure and Assess Code Quality&lt;/li&gt;
&lt;li&gt;Measure Code Coverage with SimpleCov&lt;/li&gt;
&lt;li&gt;Calculate Churn and Complexity with RubyCritic&lt;/li&gt;
&lt;li&gt;Use Skunk to identify which files need urgent care&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Measure Code Quality on a Ruby on Rails Application
&lt;/h2&gt;

&lt;p&gt;You don't necessarily need a tool to assess Code Quality, and there is no silver bullet. You'll always need to evaluate what the data means. The tools help guide you so you can make the best decisions by yourself 💫&lt;/p&gt;

&lt;p&gt;Below are some tools and services to quickly assess code quality. You can use paid services such as CodeClimate, Codacy, and CodeScene to give you some measurements and reports.&lt;/p&gt;

&lt;p&gt;Or, use open sources tools to help you perform static code analysis, calculate code coverage and point out code smells and refactoring opportunities.&lt;/p&gt;

&lt;p&gt;Here's a list of tools you can use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ruby-doc.org/stdlib-3.0.2/libdoc/coverage/rdoc/Coverage.html"&gt;Coverage&lt;/a&gt;: Ruby's built-in tool that provides coverage measurements for Ruby.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/simplecov-ruby/simplecov"&gt;SimpleCov&lt;/a&gt;: a code coverage analysis tool for Ruby.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/whitesmith/rubycritic"&gt;RubyCritic&lt;/a&gt;: a gem that wraps around static analysis gems such as Reek, Flay, and Flog to provide a quality report of your Ruby code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/fastruby/skunk"&gt;Skunk&lt;/a&gt;: a tool that helps you find the most complicated parts of your application that also have low code coverage.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rubocop/rubocop"&gt;Rubocop&lt;/a&gt;: a Ruby static code analyzer and formatter, based on the community Ruby style guide. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Calculate Code Coverage With SimpleCov
&lt;/h2&gt;

&lt;p&gt;Use &lt;a href="https://github.com/simplecov-ruby/simplecov"&gt;SimpleCov&lt;/a&gt; to generate a report of how many statements are covered by your test suite. It won't assess the test suite quality, though.&lt;/p&gt;

&lt;p&gt;It will affect your test suite performance, so make sure to only run it when necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Measure Code Quality With RubyCritic
&lt;/h2&gt;

&lt;p&gt;Ernesto recommends &lt;a href="https://github.com/whitesmith/rubycritic"&gt;RubyCritic&lt;/a&gt; because it's a gem for assessing code quality that it's still actively maintained.&lt;/p&gt;

&lt;p&gt;RubyCritic provides a score based on churn and complexity. These metrics help you identify files that are great candidates for refactoring.&lt;/p&gt;

&lt;p&gt;Check out the talk at the minute &lt;a href="https://youtu.be/ZyU6K6eR-_A?t=1067"&gt;17:47&lt;/a&gt; to see how Ernesto analyzes the report generated by RubyCritic:&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Find Code Smells and Calculate SkunkScore with Skunk 🦨
&lt;/h2&gt;

&lt;p&gt;A SkunkScore is an assessment combining code smells, code complexity, and code coverage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/fastruby/skunk"&gt;Skunk&lt;/a&gt;'s main goal is to serve as a compass for the first steps in your refactoring adventure. Focus on the files with a high skunk_score with a decent code_coverage score. That means you can get started with files that have code quality problems but also have tests, which makes this step easier.&lt;/p&gt;

&lt;p&gt;Make sure to add a reminder to add more tests to the other files with high skunk_score and low code_coverage 📌&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: When working on new features, run &lt;code&gt;$ skunk -b main&lt;/code&gt; against your feature branch to give you an idea of the features you're adding are improving or decreasing the code quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby on Rails Code Quality Checklist
&lt;/h2&gt;

&lt;p&gt;Now that you have gathered the code quality data, use this checklist to start moving out of the tar pit 🏊‍♀️&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Delete unused files with Coverband 🪦
&lt;/h3&gt;

&lt;p&gt;The best code is no code, right? Dead code is code that is never executed and is just filling up space. In larger or older applications, dead code can be a very common thing.&lt;/p&gt;

&lt;p&gt;Find dead code with &lt;a href="https://github.com/danmayer/coverband"&gt;Coverband&lt;/a&gt;, which can be run in production.&lt;/p&gt;

&lt;p&gt;Or add a &lt;a href="https://www.youtube.com/watch?v=29UXzfQWOhQ"&gt;"tombstone"&lt;/a&gt; inside a method you want to remove, push it to production and wait. Check again in a few weeks or months, and if the code is never executed, you can safely remove it.&lt;/p&gt;

&lt;p&gt;Here are some other libraries to detect dead code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lewispb/tombstone/"&gt;Tombstone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/michaelfeathers/scythe"&gt;Scythe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/seattlerb/debride"&gt;Debride&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Refactor the complex files with better code coverage first 💇‍♀️
&lt;/h3&gt;

&lt;p&gt;Refactor complex files that have at least 60% or more code coverage.&lt;/p&gt;

&lt;p&gt;Sandi Metz's &lt;a href="https://www.youtube.com/watch?v=YtROlyWWhV0"&gt;"Polly Want a Message"&lt;/a&gt; talk has an approach for refactoring classes with lots of responsibilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Compare code quality improvements by running &lt;code&gt;$ skunk -b main&lt;/code&gt;. It will show you how much it improved. Such a great metric to share with your team! 🎊&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Write tests for the files with high skunk_core and low code coverage 🧹
&lt;/h3&gt;

&lt;p&gt;Writing tests will decrease a file's skunk_score. Skunk gives you a list of good candidates for your next test-writing efforts.&lt;/p&gt;

&lt;p&gt;Keep track of Code Quality by analyzing the SkunkScore Average. It's recommended to run the report every 3 weeks to evaluate the team's engineering practices and if the project is moving in the right direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Celebrate tiny wins often 🥳
&lt;/h3&gt;

&lt;p&gt;Improving code quality is a hard task! Make sure to celebrate every tiny improvement along the way with your team. Enjoy the relief of working on a great Ruby codebase.&lt;/p&gt;




&lt;p&gt;We highly recommend you watch the talk. The best part of this talk is to feel like there's hope and that getting out of a tar pit is possible.&lt;/p&gt;

&lt;p&gt;The questions he asked such as "What is code quality anyway?" are helpful to change the perspective on how to approach technical debt more humanely.&lt;/p&gt;

&lt;p&gt;After all, technical debt has the name technical in it but it's more a result of social/cultural problems in a team.&lt;/p&gt;

&lt;p&gt;Judging past decisions is easy and unhelpful. That's our default. Embracing the challenge and being open to the opportunities for improvement is the real challenge.&lt;/p&gt;

&lt;p&gt;Now, go follow the checklist to assess your Ruby Code Quality and create a livable environment for your code.&lt;/p&gt;




&lt;p&gt;We watched Ernesto's talk at a previous &lt;a href="https://dev.to/watch-party"&gt;Watch Party&lt;/a&gt;. We host tech talks watch parties every 4 weeks, on a Saturday morning 📺&lt;/p&gt;

&lt;p&gt;Sign up for our &lt;a href="https://www.hexdevs.com/newsletter/"&gt;newsletter&lt;/a&gt; to get an invitation for when we host our next one:Saturday morning 📺&lt;/p&gt;




&lt;p&gt;Copyright 2021 hexdevs&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
    </item>
    <item>
      <title>Dev With No Experience? Here's one way to get experience today.</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Tue, 14 Sep 2021 06:37:52 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/dev-with-no-experience-here-s-one-way-to-get-experience-today-3pci</link>
      <guid>https://forem.com/stefannibrasil/dev-with-no-experience-here-s-one-way-to-get-experience-today-3pci</guid>
      <description>&lt;p&gt;You’re focusing on finding that first Ruby job. You’ve been practicing for months or years. You’ve been applying to entry-level jobs, even internships.&lt;/p&gt;

&lt;p&gt;You polish your resume. Tweak your portfolio. Attach your CV. Press Submit.&lt;/p&gt;

&lt;p&gt;Chirp, chirp, chirp 🦗&lt;/p&gt;

&lt;p&gt;Nothing happens.&lt;/p&gt;

&lt;p&gt;Worse: you do an amazing interview, people loved you. But then they say they are moving forward with someone else that has more experience.&lt;/p&gt;

&lt;p&gt;Welp, next time is going to be different. Keep hoping for the best.&lt;/p&gt;

&lt;p&gt;You ask yourself: “Should I just keep practicing and building my portfolio?” 🤔&lt;/p&gt;

&lt;p&gt;That may sound like a good idea. After all, no one will say no to you when you show your perfect portfolio that you’ve been crafting for the past months, right?&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;When you get a no and people say you don’t have experience, they are mostly asking themselves this question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Are you recommended by someone I know?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s just how humans work. We are wired to confirm our biases. We don’t like uncertainty and unfamiliarity.&lt;/p&gt;

&lt;p&gt;If you look closely, there are people out there getting jobs without experience. Some of them are far less skilled than you. Lack of experience is not the only problem.&lt;/p&gt;

&lt;p&gt;But what else can you do to get experience and recommendations for your first Ruby dev job?&lt;/p&gt;

&lt;p&gt;Did you ever think about getting experience by doing volunteer work? I know, working for free doesn’t sound good.&lt;/p&gt;

&lt;p&gt;But your current strategy sucks. You’re still reading this post because you are not sure what else you can do. Deep inside, you know just practicing isn’t the answer.&lt;/p&gt;

&lt;p&gt;By the time you get to the end of this post, you’ll know how to get out of the Dev With No Experience Roller Coaster™ by strategically doing volunteer work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get real-world experience with volunteer work
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Volunteer work is one of the best ways there is to get your feet wet and gain experience in a new field. You don’t need credentials or prior experience. You don’t have to pay them a cent for your training. […] Volunteer work is the great cure for the classic vicious cycle, &lt;strong&gt;‘Can’t get experience without a job; can’t get a job without experience'&lt;/strong&gt;. If you think unpaid experience doesn’t count on a resume, think again. Experience is experience.” — Wishcraft, by Barbara Sher.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, not everyone has the privilege of working without getting paid. Therefore, this strategy doesn’t work for everyone.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;if you’ve been investing your time and resources into practicing your coding skills by doing one workshop/course/tutorial after another, then you do have the time and resources to get real-world experience by doing volunteer work&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s not that investing in Education is bad! Improving your skills is necessary and will get you further. Study and also volunteer.&lt;/p&gt;

&lt;p&gt;I’ve heard countless examples of people that were offered great opportunities after they have done volunteer work. One of my first job opportunities came from volunteering to be a coach at a Rails Girls workshop. I also volunteered for non-profit projects.&lt;/p&gt;

&lt;p&gt;When you’re a helpful, reliable, and motivated person, people will trust and advocate for you. You might not even need to apply for jobs. People will want to work with you because you have experience helping others.&lt;/p&gt;

&lt;p&gt;Everything you don’t get by building yet another project and &lt;a href="https://www.stefannibrasil.me/posts/should-i-get-an-internship-or-keep-practicing/"&gt;practicing your coding skills&lt;/a&gt; in the controlled environment you’re trapping yourself in.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get started with volunteering
&lt;/h2&gt;

&lt;p&gt;Don’t know any organizations/projects that you can reach out to get started? I didn’t as well! I asked some friends around and I got this list for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Contribute to an open-source project. I’ve heard good things about CASA;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build an app for a project in your local community;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Volunteer at non-profits. These are great ones to help you get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby for Good - A non-profit organizations to build an inclusive technology community, and provide technology-focused educational opportunities to underserved communities;&lt;/li&gt;
&lt;li&gt;MPKAT - A not-for-profit diversity community initiative. They provide a network for growth and healing through resources, discussion, supportive relationships, and opportunities;&lt;/li&gt;
&lt;li&gt;Tech for Good - In general, lots of communities called “tech for good” are a good place to start.&lt;/li&gt;
&lt;li&gt;Code for America - Each city has brigades of people with a range of skills, and they organize those people to work on software/tools to benefit civic/nonprofit orgs in that city;&lt;/li&gt;
&lt;li&gt;Code for Philly - Code for Philly is a very successful brigade from a larger organization called The Brigade Network.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask around and you will find out people who successfully followed this strategy. Study their trajectory and follow their steps. I’m happy to chat, if you want!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: if you notice that you are taking a long time choosing one from the list, set a 15min timer to make a decision. It’s not important that you find the perfect one for you. Just get started. See how it goes. If it doesn’t work out, try another one. You’ll get confidence by taking action, not by overthinking. Deal? 🙋‍♀️&lt;/p&gt;




&lt;p&gt;Let’s be clear: no strategy can guarantee you a job. There is no guarantee for anything. But if you want to get different results and maximize your opportunities, then volunteering is a great way to build your new career.&lt;/p&gt;

&lt;p&gt;Meet people that will advocate for you. &lt;strong&gt;Meet people that you can help with the skills you have to create valuable work&lt;/strong&gt;. Show the world what you got.&lt;/p&gt;

&lt;p&gt;To quote Barbara Sher (again):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Volunteering is one of the best ways to get out there &lt;strong&gt;now&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Get out there. Help someone by volunteering your time and skills and start making things happen for you.&lt;/p&gt;

&lt;p&gt;You got this 💪.&lt;/p&gt;

&lt;p&gt;PS. Thanks Sarah Eggleston, Alex Hillman and Ben Novack for suggesting some of the organizations included in this post. If you’d like to suggest one, please reach out to me ^.^&lt;/p&gt;

</description>
      <category>job</category>
      <category>experience</category>
    </item>
    <item>
      <title>The Unstuck Guide for Self-Taught Developers</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Tue, 14 Sep 2021 06:32:55 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/the-unstuck-guide-for-self-taught-developers-3fn3</link>
      <guid>https://forem.com/stefannibrasil/the-unstuck-guide-for-self-taught-developers-3fn3</guid>
      <description>&lt;p&gt;When you get stuck, it’s really easy to block yourself from creatively solving your problem.&lt;/p&gt;

&lt;p&gt;You start asking “why am I so dumb?”, or thinking that you don’t have a programmer’s brain, or feeling that you’ll never understand anything.&lt;/p&gt;

&lt;p&gt;How is that helpful? &lt;em&gt;It isn’t&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The way we talk to each other (even to ourselves) impacts our performance. It’s not self-help BS. It’s how our brain works.&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://lisafeldmanbarrett.com/"&gt;Dr. Lisa Feldman Barrett&lt;/a&gt;, one of my favorite neuroscientists, shows in this &lt;a href="https://www.youtube.com/watch?v=XKgLvSXTL9U"&gt;short video&lt;/a&gt;, “The Power of Words is in the wiring of your brain”.&lt;/p&gt;

&lt;p&gt;You see, transitioning into tech is going to take more than just improving your coding skills.&lt;/p&gt;

&lt;p&gt;As a self-taught developer, you also need to learn how to learn and to manage the hard times.&lt;/p&gt;

&lt;p&gt;The purpose of this guide is to help you use your determination to build up a ladder you can climb instead of digging yourself into a hole 🕳️.&lt;/p&gt;

&lt;p&gt;Let’s learn how!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unstuck Guide for Self-Taught Developers
&lt;/h2&gt;

&lt;p&gt;These Thoughts and Questions will help you re-frame your perspective when you’re feeling in a rut on your coding journey.&lt;/p&gt;

&lt;p&gt;Here is how it works:&lt;/p&gt;

&lt;p&gt;The ❌ is the Negative inner voice that doesn’t help you. It’s a sign it’s time to change your perspective.&lt;/p&gt;

&lt;p&gt;The 💭 is a Thought to help you see things from a different perspective. Our brains are really good at making us believe that what we feel and think is true, even when it’s not.&lt;/p&gt;

&lt;p&gt;The ❔ are open-ended Questions that can help you get closer to a solution.&lt;/p&gt;




&lt;p&gt;❌ I am so dumb.&lt;/p&gt;

&lt;p&gt;💭 I’m not the only one struggling to transition into tech. I am doing what I can!&lt;/p&gt;

&lt;p&gt;❔ Is this how I want to be feeling? What can I learn from this situation?&lt;/p&gt;




&lt;p&gt;❌ I will never understand any of this.&lt;/p&gt;

&lt;p&gt;💭 Feeling frustrated is natural. I can choose to see this as an opportunity to develop my problem-solving skills.&lt;/p&gt;

&lt;p&gt;❔ What am I missing? Who can I reach out to and ask for help?&lt;/p&gt;




&lt;p&gt;❌ I don’t know enough to figure out what’s going on.&lt;/p&gt;

&lt;p&gt;💭 I’m learning and I’m getting better every day. Figuring things out is part of the journey.&lt;/p&gt;

&lt;p&gt;❔ What makes more sense to do now? What questions can I ask?&lt;/p&gt;




&lt;p&gt;❌ I’m so slow at coding. Everyone else is faster than me.&lt;/p&gt;

&lt;p&gt;💭 There’s no way I can know for a fact how other people are doing. Everyone is different and has their own pace.&lt;/p&gt;

&lt;p&gt;❔ What assumptions am I making?&lt;/p&gt;




&lt;p&gt;❌ I’m not good enough at programming.&lt;/p&gt;

&lt;p&gt;💭 I am good enough. This is a moment of frustration and I choose to take care of myself.&lt;/p&gt;

&lt;p&gt;❔ How else can I think about my coding journey?&lt;/p&gt;




&lt;p&gt;❌ I will never get an early career developer job.&lt;/p&gt;

&lt;p&gt;💭 It’s a tough market out there for anyone without experience. Even experienced developers are getting rejected.&lt;/p&gt;

&lt;p&gt;❔ What is possible? What are my choices?&lt;/p&gt;




&lt;p&gt;Next time you feel like you can’t see a solution for your problem, go through the Thoughts and Questions from this guide. Bonus points if you go through this guide after you take a mental break 🧠.&lt;/p&gt;

&lt;p&gt;Learning how to develop a growth mindset will make a big difference. That’s what I wanted someone had told me when I was transitioning to tech. Now, I want to be that person for you 🌱.&lt;/p&gt;

&lt;p&gt;Bookmark this post and share it with your friends that need to read this ⭐.&lt;/p&gt;

</description>
      <category>unstuck</category>
    </item>
    <item>
      <title>Get unstuck on your coding exercise with Just One Exercise</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Tue, 14 Sep 2021 06:22:54 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/get-unstuck-on-your-coding-exercise-with-just-one-exercise-2ho3</link>
      <guid>https://forem.com/stefannibrasil/get-unstuck-on-your-coding-exercise-with-just-one-exercise-2ho3</guid>
      <description>&lt;p&gt;You’re working on your coding project. Everything is going well.&lt;/p&gt;

&lt;p&gt;But it doesn’t take too long until you get stuck on your assignment. You try everything you possibly can, with the resources you have.&lt;/p&gt;

&lt;p&gt;You are mixing Ruby, JavaScript, Postgres. Doing crash courses, googling. You go to the docs but you don’t even know where to look. It’s almost as if it’s a foreign language.&lt;/p&gt;

&lt;p&gt;On StackOverflow, you see the same tips over and over. You’ve tried them all so many times you’re sure you didn’t miss them.&lt;/p&gt;

&lt;p&gt;Nothing helps. And you know you tried everything. You tried different paths just to get stuck in the mud. Arrggggh.&lt;/p&gt;

&lt;p&gt;It’s as if you’re driving somewhere. You want to set the destination on your GPS. But you don’t even know the name of the place you’re going. Everybody speaks another language and there is no map.&lt;/p&gt;

&lt;p&gt;You start going through a crisis. That one that almost convinces you that quitting it all together and moving on is better 😔.&lt;/p&gt;

&lt;p&gt;Yep, that sucks.&lt;/p&gt;

&lt;p&gt;When you reach that level of frustration, continue focusing on the problem will do more harm than good. It’s time to try something else.&lt;/p&gt;

&lt;p&gt;Here’s the thing: getting stuck is human. As Einstein once said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We cannot solve our problems with the same thinking we used when we created them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But that doesn’t mean you’ll be stuck forever. By the end of this post, you’ll learn one simple exercise for you to develop problem-solving skills for your coding career (and for life).&lt;/p&gt;

&lt;h2&gt;
  
  
  When you’re stuck, switch your focus.
&lt;/h2&gt;

&lt;p&gt;Let’s get this straight: getting stuck sucks. But it’s part of life.&lt;/p&gt;

&lt;p&gt;Here are some tips to help you cool down and see things from a different viewpoint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Switch your focus entirely. If you are really tired, go for a walk. Do something else. No multi-tasking!&lt;/li&gt;
&lt;li&gt;When you feel refreshed, draw a map of your problem. Yep, pen and paper ✍️!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then, ask yourself these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where do you want to go?&lt;/li&gt;
&lt;li&gt;Where are you now?&lt;/li&gt;
&lt;li&gt;What is the &lt;strong&gt;next single step&lt;/strong&gt; to get closer to your destination?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Coding is not straightforward and you can get stuck in the first step of a tutorial (been there, done that).&lt;/p&gt;

&lt;p&gt;It’s okay to struggle… because if you already knew all of this stuff, why would you need to learn them?&lt;/p&gt;

&lt;p&gt;That’s the growing pain of navigating unknown territories. You’ve got to beat your own path and explore. Draw your own map as you go 🧭.&lt;/p&gt;




&lt;p&gt;Enjoy the journey while getting to your destination. And if you don’t finish your assignment or task, it’s okay. &lt;strong&gt;You always get to try again&lt;/strong&gt;, my friend 💫.&lt;/p&gt;

&lt;p&gt;Remember that exploring with a group is easier. Others might have explored more and can teach you a thing or two. Check out CodeBuddies and CodeNewbies.&lt;/p&gt;

&lt;p&gt;Bookmark this post for the next time you get stuck and share it with your friends!&lt;br&gt;
Do you want more free &lt;/p&gt;

</description>
      <category>stuck</category>
    </item>
    <item>
      <title>DangerJS with Github Actions</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Tue, 07 Jul 2020 23:16:12 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/dangerjs-with-github-actions-409g</link>
      <guid>https://forem.com/stefannibrasil/dangerjs-with-github-actions-409g</guid>
      <description>&lt;p&gt;Have you ever had to comment on a PR 'Hey, you forgot to...' before? If so, &lt;a href="https://github.com/danger/danger-js"&gt;DangerJS&lt;/a&gt; might be a good tool to add to your PR checks. I decided to give it a try at work after doing that myself a couple of times.&lt;/p&gt;

&lt;p&gt;Note: Danger has plugins for Ruby, Python and Swift that you can use. But if you don't trust on using external images for your projects, you can follow this approach.&lt;/p&gt;

&lt;p&gt;I really struggled with this part and the documentation wasn't so great. That's why I decided to share my experience. Hope you enjoy it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;First, you will need to create a Github action build file. Github Actions need to be placed in a &lt;code&gt;workflow&lt;/code&gt; folder. &lt;a href="https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#creating-a-workflow-file"&gt;Click here&lt;/a&gt; for more info about that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Danger checks 🚧&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Use Node.js&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;12.x"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install yarn dependencies&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;yarn add danger --dev&lt;/span&gt;
          &lt;span class="s"&gt;yarn danger init&lt;/span&gt;
          &lt;span class="s"&gt;yarn danger ci --dangerfile ..your-repository/dangerfile.js&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;I am using a node Docker image to install yarn. Then I use yarn to run Danger.&lt;/li&gt;
&lt;li&gt;Keep in mind that you need to add the &lt;code&gt;GITHUB_TOKEN&lt;/code&gt; here, otherwise Danger won't comment your PR's.&lt;/li&gt;
&lt;li&gt;It also won't comment if you just use &lt;code&gt;push&lt;/code&gt; action to trigger this build. Danger is designed to only comment on a &lt;code&gt;pull_request&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you just need to create your &lt;code&gt;dangerfile.js&lt;/code&gt; in your directory. This is where you will add your checks. To test it, you can just comment a nice message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;danger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fail&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;danger&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;your_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;danger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;git&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fileMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your_file_path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;your_file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;edited&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please write a data migration to run the changes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's it! You should have a new check on your Github Pull requests and a nice message on your PR.&lt;/p&gt;

&lt;p&gt;Click &lt;a href="https://danger.systems/js/guides/getting_started.html#creating-a-dangerfile"&gt;here&lt;/a&gt; for more examples on how Dangerfile works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nice-to-do
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use just &lt;code&gt;pull request&lt;/code&gt; action. Ideally this build would just need &lt;code&gt;pull_request&lt;/code&gt; to detect new changes automatically?&lt;/li&gt;
&lt;li&gt;Danger wasn't getting my dangerfile automatically so I had to pass my file path in the &lt;code&gt;yarn danger run&lt;/code&gt; command. Maybe I was having another error and this is now working, but that's for later!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After putting some puzzles together, I have Danger setup now and hopefully you too. Let me know if you have any tips or feedback!&lt;/p&gt;

</description>
      <category>dangerjs</category>
      <category>github</category>
      <category>ci</category>
    </item>
    <item>
      <title>Meet the hexdevs project</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Mon, 12 Aug 2019 21:04:49 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/meet-the-hexdevs-project-5d9a</link>
      <guid>https://forem.com/stefannibrasil/meet-the-hexdevs-project-5d9a</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;I'm really happy to get back to dev.to to share this project with you: &lt;a href="https://www.hexdevs.com/"&gt;hexdevs&lt;/a&gt;. Our goal is to share cool remote and visa-sponsored jobs for software developers, share tech news and tips for becoming a better professional.&lt;/p&gt;

&lt;p&gt;We also have a podcast where we interview smart developers and share their stories to inspire you.&lt;/p&gt;

&lt;p&gt;That said, I'm really happy to share our first Podcast episode with &lt;a href="https://soundcloud.com/hexdevs/02-stella-miranda-from-unbounce"&gt;Stella Miranda&lt;/a&gt;. She is from Colombia and we talked about her career, her community work, how she got her job at Unbounce in Vancouver and more!&lt;/p&gt;

&lt;p&gt;Don't forget to &lt;a href="https://www.hexdevs.com/podcast"&gt;subscribe to our newsletter&lt;/a&gt; and share with your friends :)&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>hexdevs</category>
      <category>remote</category>
      <category>tech</category>
    </item>
    <item>
      <title>Nevertheless, Stefanni Coded</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Tue, 06 Mar 2018 03:39:12 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/nevertheless-stefanni-coded--3an</link>
      <guid>https://forem.com/stefannibrasil/nevertheless-stefanni-coded--3an</guid>
      <description>&lt;h2&gt;
  
  
  I began to code because...
&lt;/h2&gt;

&lt;p&gt;I wanted to be a Scientist since I was a child. I grew up reading Science Fiction, Technology always fascinated me. But when I had to decide which path take in college, I decided to study Literature. But I always had this dream of being a Scientist and building something good for society. I was tired of always &lt;em&gt;discussing&lt;/em&gt;, I wanted to create something too. &lt;/p&gt;

&lt;p&gt;I began to code when my friend, Amanda, and my boyfriend, Thiago, encouraged me to start coding. I started studying on my free time and I loved the idea of how many problems you can solve with some lines of code - and a lot of patience :)&lt;/p&gt;

&lt;h2&gt;
  
  
  I am overcoming...
&lt;/h2&gt;

&lt;p&gt;Anxiety about changing career. I am confident that I'll become a great Software Developer, but there are some days when I don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  I want to brag about...
&lt;/h2&gt;

&lt;p&gt;I started doing some Open Source Contributions like &lt;a href="https://github.com/publiclab/plots2/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Apr+is%3Aclosed++author%3Astefannibrasil+" rel="noopener noreferrer"&gt;this&lt;/a&gt; and &lt;a href="https://github.com/ifmeorg/ifme/compare/master...stefannibrasil:incorporating-facebook" rel="noopener noreferrer"&gt;this&lt;/a&gt; :)&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>#RailsGirlsSummerOfCode Looking for a teammate in Vancouver, BC!</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Thu, 08 Feb 2018 00:38:19 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/railsgirlssummerofcode-looking-for-a-teammate-in-vancouver-bc--4df2</link>
      <guid>https://forem.com/stefannibrasil/railsgirlssummerofcode-looking-for-a-teammate-in-vancouver-bc--4df2</guid>
      <description>&lt;p&gt;Hey, everyone!&lt;/p&gt;

&lt;p&gt;I am looking for a teammate interested in the Rails Girls Summer of Code in Vancouver, BC area. There are a lot of cool projects and I would love to connect with other girls interested in applying to one of them. &lt;/p&gt;

&lt;p&gt;If you know someone that might fit here, please share my profile so we can get in touch?&lt;/p&gt;

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

</description>
      <category>discuss</category>
      <category>teammate</category>
      <category>summerofcode</category>
      <category>vancouver</category>
    </item>
    <item>
      <title>Object-Oriented Programming with Ruby pt.1</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Wed, 07 Feb 2018 00:55:02 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/object-oriented-programming-with-ruby-pt1--a6f</link>
      <guid>https://forem.com/stefannibrasil/object-oriented-programming-with-ruby-pt1--a6f</guid>
      <description>&lt;p&gt;I had OOP in my college last year and it was a bummer. Looking back, I may have learned the most valuable skill for developers: being a developer == a full-time self-learner (a new concept that I just invented).&lt;/p&gt;

&lt;p&gt;But since I quit college and started my internship last year, I felt the need to go back to the basics and finally be able to write good code using OOP fundamentals. I started a &lt;a href="https://github.com/stefannibrasil/depot_tutorial" rel="noopener noreferrer"&gt;Rails tutorial&lt;/a&gt; and I noticed that I have never run a Ruby program (without rails) on my terminal!&lt;/p&gt;

&lt;p&gt;What I learned most from this experience was that I should focus on learning the foundations before the frameworks, for example: learn Ruby before Ruby on Rails. I wanted to understand why Ruby became so popular and what makes OOP a paradigm so important in Computer Science.&lt;/p&gt;

&lt;p&gt;I found a lot of resources online and one of them is the MIT Computer Science which offers a complete &lt;a href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/" rel="noopener noreferrer"&gt;Introduction to Computer Science and Programming with Python&lt;/a&gt; and I decided to make some notes about it but in Ruby. OOP is given in lectures 14, 15 and 16 if you want to give it a try too. Also found the &lt;a href="http://docs.ruby-doc.com/docs/ProgrammingRuby/" rel="noopener noreferrer"&gt;Docs — Programming Ruby&lt;/a&gt; which is a complete material to follow. Both these materials helped me study and are guiding this post :)&lt;/p&gt;

&lt;p&gt;This is the part one, which will be an introduction to OOP introductory concepts, like Class and Objects. I also started a repository on GitHub where I apply what I am studying to keep a record.&lt;/p&gt;

&lt;h3&gt;
  
  
  Abstract everything
&lt;/h3&gt;

&lt;p&gt;OOP is not a new concept in Computer Science, but it became very popular only on the 70's. But why do we need OOP and why did it become so popular? Quoting Prof. Eric Grimson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Object Oriented Programming is great when you are trying to model systems that consist of a large number of units that interact in various ways.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s why OOP is so vastly used and solves a huge amount of problems in our real life because we can solve &lt;strong&gt;almost&lt;/strong&gt; every problem with this paradigm! By gathering together some data it allows you to write better code, which means it is easier to test and to refactor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's go back to the basics
&lt;/h2&gt;

&lt;p&gt;Everyone who starts to study OOP start to hear a lot about Classes, Objects, and Instances. Let's explore them a little theoretically.&lt;/p&gt;

&lt;h4&gt;
  
  
  Classes, Objects, Instances
&lt;/h4&gt;

&lt;p&gt;You must have heard that in Ruby, &lt;em&gt;everything&lt;/em&gt; is an object: a Class is an Object; An Instance is an Object and an Object is... I think you get the idea! Although in our real world we deal with lots of objects, it’s hard to abstract it to code — at least for me. But once we understand the purpose of it and the concepts behind it, it starts to make more sense and things start to get easier #hopefully.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6ugtzzpozevd1dujrkr9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6ugtzzpozevd1dujrkr9.jpeg" alt="We are all objects"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Class&lt;/strong&gt; is a collection of &lt;strong&gt;data&lt;/strong&gt; and &lt;strong&gt;functions&lt;/strong&gt; that make sense to stay together because they have characteristics in common. It helps your daily work by preventing you from spreading pieces of code through different files.&lt;/p&gt;

&lt;p&gt;As prof. Eric Grimson said in one of his classes, it's easier if think of a Class like a &lt;strong&gt;stamp&lt;/strong&gt;: you can print several objects of a Class using its stamp. Every new object created using a stamp will have the same characteristics but they will still be different objects because they are unique copies of that stamp, they're randomly allocated in different locations in memory.&lt;/p&gt;

&lt;p&gt;And why are objects so useful? Because we can manipulate them as we need! What would be of the human race without manipulating everything around, right?!&lt;/p&gt;

&lt;p&gt;But how does that Class definition is applied to Objects? Well, when you create a new object it comes with some data. You are instantiating a new Object from a specific Class. You can call this object's data as &lt;strong&gt;attributes&lt;/strong&gt;. You can define them in your initialize method (a special Class method), for example.&lt;/p&gt;

&lt;p&gt;You can really manipulate them to your needs with the functions associated with its Class. You can call them &lt;strong&gt;instance methods&lt;/strong&gt;. Now let's create a simple Class to see this in action.&lt;/p&gt;

&lt;p&gt;So instance and objects are pretty much the same, it's up to you  how you wanna call it :)&lt;/p&gt;

&lt;h4&gt;
  
  
  Show me the code
&lt;/h4&gt;

&lt;p&gt;We are going to create animal instances from the Animal Class (you can also see the code on &lt;a href="https://github.com/stefannibrasil/RubyFarm/blob/master/lib/animal.rb" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;). But before diving into the code, let's think about the implementation a little. Let’s say we need to create an Animal Class so it's easier to create a lot of cute animals to play with.&lt;/p&gt;

&lt;p&gt;What does an animal have? What does it do? (We don't need to think about everything now, we can always add/remove any information about our classes whenever we want).&lt;/p&gt;

&lt;p&gt;We know that animals have a name, an age, a weight and a date of vaccination. These are the attributes. We also know that animals need annual vaccination, sleeping and playing. These are the object/instance methods. We'll write a method to check if the animal has taken its vaccines, so if a new animal with outdated vaccination is created, we'll get an alert.&lt;/p&gt;

&lt;p&gt;We can put this into a file called animal.rb:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Animal
  # The initialize method is a special Class method.
  def initialize(name:, age:, weight:, last_vaccine_year:)
    @name = name
    @age = age
    @weight = weight
    @last_vaccine_year = last_vaccine_year
  end

  def is_vaccinated?
     current_year = Time.now.year
     return true if current_year - last_vaccine_year &amp;lt;= 1
     "#{name} has not been vaccinated this year yet"
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This simple Animal Class works fine, but it's pretty generic, don't you think?. What if I want to have cats, dogs, birds, fishes, horses…? I am going to need to think of Classes like Species in Biology... cool, right? But that will be our next subject when we will discuss Inheritance and Encapsulation.&lt;/p&gt;

&lt;p&gt;If you have any questions or want to suggest/contribute feel free to comment here. I am learning Ruby as well, so any suggestion is welcome. See you soon!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>oop</category>
    </item>
    <item>
      <title>How does it feel to be a junior developer</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Wed, 22 Nov 2017 18:32:28 +0000</pubDate>
      <link>https://forem.com/stefannibrasil/how-does-it-feel-to-be-a-junior-developer-24e</link>
      <guid>https://forem.com/stefannibrasil/how-does-it-feel-to-be-a-junior-developer-24e</guid>
      <description>&lt;p&gt;When I go to events and I meet others juniors developers like me, everyone starts to talk about one thing (in fact, that’s why we get together in the first place): “it’s been so hard, but I am loving it!” So I decided to talk a little about this today and maybe help others who are in the same situation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your first weeks
&lt;/h2&gt;

&lt;p&gt;You are so happy someone finally hired you and are excited to work with a team and develop the software. Suddenly you start to feel a lot like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You are terrified because you think you’re gonna be the &lt;a href="https://www.reddit.com/r/cscareerquestions/comments/6ez8ag/accidentally_destroyed_production_database_on/"&gt;intern who dropped the company’s database&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You hold your breath for a few seconds before typing &lt;em&gt;git push origin&lt;/em&gt; because you are afraid you will push it to &lt;em&gt;master&lt;/em&gt; by accident.&lt;/li&gt;
&lt;li&gt;You have an idea of how to solve a problem, but you are terrified of breaking something important.&lt;/li&gt;
&lt;li&gt;You move other’s cards in Trello by accident.&lt;/li&gt;
&lt;li&gt;You are afraid to ask for help again to the team, they all look so busy solving complicated tasks!&lt;/li&gt;
&lt;li&gt;“How am I going to ask for help if I don’t even know what is happening after spending almost 3 days trying to understand what I am supposed to do?! “&lt;/li&gt;
&lt;li&gt;“How can she/he find the problem just by looking at it for like 3 seconds??”&lt;/li&gt;
&lt;li&gt;“I hope I can be a great professional like this person one day!”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Some tips that may help you during this phase
&lt;/h2&gt;

&lt;p&gt;After you freak out a little — or a lot — you start to think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Oh no, that’s why nobody hires people without experience. They will fire me, I know NOTHING!!&lt;/li&gt;
&lt;li&gt;You feel like you are a burden to the team&lt;/li&gt;
&lt;li&gt;hello Darkness, my old friend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, this is a very common experience for junior developers. Do not let this put you down, please. This is a sign that you are persevering and you’ll be fine. Here are some tips that I’ve learned that may be helpful when working on a team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand and study a lot about Git. Seriously.&lt;/li&gt;
&lt;li&gt;If you find a command line that you don’t understand, always ask if that’s okay to use it. It’s really important to check the source of the commands and to understand how it works!&lt;/li&gt;
&lt;li&gt;Write clear and self-explanatory commits and Pull Requests.&lt;/li&gt;
&lt;li&gt;Read the documentation, even if you don’t understand it first time.&lt;/li&gt;
&lt;li&gt;Write down commands that your team uses frequently so you don’t have to ask every time.&lt;/li&gt;
&lt;li&gt;Take &lt;a href="https://codewithoutrules.com/2016/04/15/40-hour-programmer/"&gt;1 hour per week to learn something new&lt;/a&gt; will help you improve your learning journey.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to motivate yourself
&lt;/h2&gt;

&lt;p&gt;For those moments when you feel like you should quit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remember that you get to every day with people who have a lot of experience and have a lot to teach you (and I am not only talking about code) and they were in the same position years ago.&lt;/li&gt;
&lt;li&gt;Celebrate every small victory that you accomplish every day.&lt;/li&gt;
&lt;li&gt;If you are stuck for days, ask for help.&lt;/li&gt;
&lt;li&gt;Know when and how to &lt;a href="https://codewithoutrules.com/2016/03/02/asking-for-help/"&gt;ask for help&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Talk to others so you can share your feelings with other juniors and seniors too and ask for advice.&lt;/li&gt;
&lt;li&gt;When you feel like you still got tons of things to learn, remember how much you’ve learned until today.&lt;/li&gt;
&lt;li&gt;Work on your motivation and enjoy the process. Try your best every day, try to improve your mental health. It can become a stressful process that may make you lose all the fun about programming.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How are you doing being a junior developer? Have something to share here?Do you remember how your first internship was like? What terrified you the most? How did you overcome your fears? What do you have to say for junior programmers like me? See you next time!&lt;/p&gt;

&lt;p&gt;This post is also here at &lt;a href="https://medium.com/magnetis-backstage/how-does-it-feel-to-be-a-junior-developer-4c6436c7f216"&gt;Magnetis backstage&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>internship</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I landed my first software internship</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Fri, 13 Oct 2017 21:44:51 +0000</pubDate>
      <link>https://forem.com/steff_br/how-i-landed-my-first-software-internship-dp9</link>
      <guid>https://forem.com/steff_br/how-i-landed-my-first-software-internship-dp9</guid>
      <description>&lt;p&gt;Since the beginning of this year, I’ve been thinking about getting an internship to practice the things I learned and to see how people solved real problems using software. Unfortunately, things didn’t happen in the way I expected.&lt;/p&gt;

&lt;p&gt;I follow some groups aimed at beginner programmers and almost every day someone would share how difficult it is to get the first opportunity, especially for those transitioning from another area. In fact, it is very hard to find a place where you can start without having much experience, even if you are motivated, curious and eager to learn.&lt;/p&gt;

&lt;p&gt;People just look for senior developers ready to fit in the position but underestimate the value of training a junior. And that sucks. I believe that everyone who is a good professional today is someone who had a great opportunity to start, in a place that values knowledge sharing and skills that go beyond coding.&lt;/p&gt;

&lt;p&gt;So I am here today to share some things that I think helped me to finally launch my project of being a software intern this year and I hope this can help others in the same situation:&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking, networking, networking
&lt;/h2&gt;

&lt;p&gt;I decided this year to go to tech events more often and that made all the difference. I read this everywhere, but I was always busy studying for my tests and I decided to change that a little. By doing this, you can show up, meet another amazing people who can teach you a lot of stuff and perhaps meet a potential company that values your efforts in learning how to code.&lt;/p&gt;

&lt;p&gt;In fact, it was on Rails Girls Sao Paulo 2017 edition that I met the CTO of the startup that I am currently working at right nowÂ :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a portfolio forÂ yourself
&lt;/h2&gt;

&lt;p&gt;What I mean is that usually a portfolio is made to show your skills to other people, but instead I think you should focus on building one to develop your skills and to build more confidence. This will help a lot during this journey. &lt;/p&gt;

&lt;p&gt;I am coding a personal project right now (which I am very proud of) and I am learning a lot of cool stuff. It gave me a push to go to Rails Girls Sao Paulo as a coach (again, where I met the CTO of the startup I am working atÂ :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Search for companies whose products youÂ like
&lt;/h2&gt;

&lt;p&gt;Last year I started to study more about finance and investments. I combined that with my internship search and started to look for companies whose products were in the financial area.&lt;/p&gt;

&lt;p&gt;The more you know about what you are looking for, the better for you because that lets you focus on some technologies, for example. I knew that it may not come true, but dreaming big does not cost money, so I didn’t care about it. For me, this was more exciting because when that finally happened, I would be working with experts in that field. And in that case I would be learning more than coding, right?&lt;/p&gt;

&lt;p&gt;It is also important to say that it’s not a problem if you haven’t figured this out yet. Maybe you’ll find a cool company that motivates you to like something new? Never stop exploring!&lt;/p&gt;

&lt;h2&gt;
  
  
  Show them what you like toÂ do
&lt;/h2&gt;

&lt;p&gt;I always liked writing and I’ve been doing this on my blog for almost 2 years and I never imagined that it would be a plus. But I realized that it is!&lt;/p&gt;

&lt;p&gt;Maybe finding a way to show your hobbies or interests is something that will distinguish you from other candidates. Perhaps you enjoy making tutorial videos? Or drawing/illustrating concepts? There are infinite things that you can do to share your learning path and help you show how much you can offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask your friends how was their first internship
&lt;/h2&gt;

&lt;p&gt;And a final advice to help you relax and focus on the big picture: ask some friends to share with you how was their first coding internship. It also helps to be a member of communities as &lt;a href="https://www.codenewbie.org/"&gt;CodeNewbie&lt;/a&gt;, &lt;a href="https://www.facebook.com/groups/newbiecoderwarehouse/"&gt;Newbie coder warehouse&lt;/a&gt; and &lt;a href="https://www.hiretechladies.com/join/?kid=GHFY3"&gt;Tech Ladies&lt;/a&gt; (an amazing community for women in tech). People are very friendly and always happy to help.&lt;/p&gt;

&lt;p&gt;I even asked &lt;a href="https://dev.to/steff_br/what-is-your-advice-for-a-fresh-intern"&gt;here&lt;/a&gt; to give me some advice for new interns and I got valuable answers there. You will see that everyone that is starting knows more or less the same as you. You are on a good journey, don’t give up. While you don’t get there, prepare yourself for when the opportunity shows up!&lt;/p&gt;

&lt;h3&gt;
  
  
  A personal note about my hiringÂ process
&lt;/h3&gt;

&lt;p&gt;Another great decision that I made this year was to start therapy. I was getting really anxious about not finding a job and I started to notice that it was affecting other areas of my life. When the opportunity came, I went into a spiral of anxiety that I've never faced before.&lt;/p&gt;

&lt;p&gt;All of this is to say that I was ready to give up on my hiring process. Yes, you read that right. I tried to do a pair programming with the CTO and I was frozen. I wanted so much that job that I was caught in a wind of bad thoughts of how I was not ready and no one would hire a person that did not know how to code and more bad thoughts. Maybe I should study one more year to feel ready to apply again, I started to say to myself.&lt;/p&gt;

&lt;p&gt;I sent an email saying that I was not ready and I did not want to make him lose his time with me. But then, he called to go talk with the team next day and I was really honest about how I was feeling.&lt;/p&gt;

&lt;p&gt;I don't know exactly what I did right, but they accepted me. I was very welcomed by the team and I will be eternally grateful for this opportunity. If I had given up, I wouldn’t be here writing this.&lt;/p&gt;

&lt;p&gt;So, if you are facing some real issues like anxiety, find someone to help you and take care of yourself. Mental health is as important as you getting an internship. And if you are scared about not succeeding, go scared. You will never know if you don’t try.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A little funny fact&lt;/em&gt;: The hiring process was occurring at the same time as when the movie It was being played in theaters and I went to see it. While watching the movie, I suddenly started to imagine the clown would appear to me as a code interviewer (I am kidding (in part xD)).&lt;/p&gt;

&lt;p&gt;Have any other advice to add? What do you think that is holding you down from getting an internship? Want to share anything else related? Feel free to comment and to share with someone that you know that is on the same journey. Cheers!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;note&lt;/em&gt;: The amazing startup that accepted me is &lt;a href="www.magnetis.com.br"&gt;Magnetis&lt;/a&gt; and we are hiring! &lt;br&gt;
This was originally posted on &lt;a href="https://medium.com/magnetis-backstage/how-i-landed-my-first-software-internship-e5f377064a9f"&gt;Magnetis Backstage&lt;/a&gt;&lt;/p&gt;

</description>
      <category>juniordeveloper</category>
      <category>softwareinternship</category>
      <category>techcareer</category>
      <category>internship</category>
    </item>
    <item>
      <title>What is your advice for a new intern?</title>
      <dc:creator>Stefanni Brasil</dc:creator>
      <pubDate>Mon, 25 Sep 2017 14:48:53 +0000</pubDate>
      <link>https://forem.com/steff_br/what-is-your-advice-for-a-fresh-intern</link>
      <guid>https://forem.com/steff_br/what-is-your-advice-for-a-fresh-intern</guid>
      <description>&lt;p&gt;Hello, everyone!&lt;/p&gt;

&lt;p&gt;So, next week I will begin my first internship (yay!). I am very excited and happy because it is a place where I will learn a lot. But I am also a little nervous, so I thought about getting some advice :)&lt;/p&gt;

&lt;p&gt;For example, if you would have to do pair programming and work with a fresh intern, what would you expect from she/he? How was your first internship? What do you think helped you in your first internship and what not? What could be a good way to evaluate your learning?&lt;/p&gt;

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

</description>
      <category>discuss</category>
      <category>internship</category>
      <category>juniordeveloper</category>
    </item>
  </channel>
</rss>
