<?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: ebhargro</title>
    <description>The latest articles on DEV Community by ebhargro (@ebhargro).</description>
    <link>https://dev.to/ebhargro</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%2F810485%2Fd12b1248-88b2-44f5-a380-11ccddf7d430.JPG</url>
      <title>DEV Community: ebhargro</title>
      <link>https://dev.to/ebhargro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ebhargro"/>
    <language>en</language>
    <item>
      <title>Getting Promoted as a Self-Taught Developer</title>
      <dc:creator>ebhargro</dc:creator>
      <pubDate>Tue, 12 Sep 2023 16:33:51 +0000</pubDate>
      <link>https://dev.to/ebhargro/getting-promoted-as-a-self-taught-developer-2l7j</link>
      <guid>https://dev.to/ebhargro/getting-promoted-as-a-self-taught-developer-2l7j</guid>
      <description>&lt;p&gt;Hi friends!&lt;/p&gt;

&lt;p&gt;I got promoted recently. A few weeks ago, I spoke to other apprentices and early-career software engineers at a work event and shared some opinions and advice about getting promoted as a self-taught developer. I’m going to summarize what I spoke to my peers about in this blog post for anyone else who might find it valuable. So, here are my 8 recommendations for getting promoted as a self-taught/boot camp-taught developer:&lt;/p&gt;

&lt;p&gt;1) Ask for help strategically.&lt;/p&gt;

&lt;p&gt;In a perfect world, junior engineers would be able to ask unlimited questions without fear of judgment. However, I’ve seen other self-taught colleagues receive negative feedback for asking too many questions or for not working independently enough. While I disagree with that idea, I was able to protect myself from receiving such feedback by being very particular about when and how I asked for help.&lt;/p&gt;

&lt;p&gt;When asking for help, I always make sure I ask very detailed, informed questions that convey the research I’ve done and the thought I’ve put into the problem. I always explained what exact solutions I’ve tried and why they haven’t worked.&lt;/p&gt;

&lt;p&gt;Asking informed questions might look like this:&lt;/p&gt;

&lt;p&gt;“I’m stuck at [this specific step] and getting [this specific error message]. I’ve tried [this specific solution] and referenced [link to resources (StackOverflow, Slack threads, etc.)]. Could you help me get unblocked?”&lt;/p&gt;

&lt;p&gt;On the other hand, asking uninformed questions might look like this:&lt;/p&gt;

&lt;p&gt;“Hey I can’t figure out my ticket, can you help?”&lt;/p&gt;

&lt;p&gt;While the first way requires more effort, I think that putting in that extra step will only benefit you in the long run. Not only will you understand your problem better, but you’ll also be able to more effectively take advantage of the help offered by having narrowed your problem down. As an extra bonus, you’ll also be sending a message to your peers that you are thorough, independent, and good at communicating specific technical challenges.&lt;/p&gt;

&lt;p&gt;2) Become an owner.&lt;/p&gt;

&lt;p&gt;Ownership can manifest in many ways. You could own the development of a feature-end-to-end, or try to establish subject-matter expertise in an area and “own” that domain. Ownership is really about being able to attribute a specific contribution to you and you only. Be creative in considering what your team needs and how you can step up to own a piece of that.&lt;/p&gt;

&lt;p&gt;3) Prioritize growth and learning.&lt;/p&gt;

&lt;p&gt;Edmond Lau in Chapter Two of “The Effective Engineer” (a book I highly recommend) describes this perfectly, saying that engineers should optimize for “experiences where you learn rather than experiences where you effortlessly succeed”. Personally, I think having a couple of easy bugs or quick-fix tasks on your plate is totally fine, especially if development velocity is something your organization cares about.&lt;/p&gt;

&lt;p&gt;Each sprint, I’d try to take on at least one ticket where I’d be challenged/learning something new and pair that with a couple of smaller tickets. I think this strategy paid off in allowing me to maintain good velocity while also having strong code complexity, which can be important in proving you’re ready for promotion.&lt;/p&gt;

&lt;p&gt;4) Document all of your contributions.&lt;/p&gt;

&lt;p&gt;One of my apprenticeship colleagues (shoutout to Pam!) talked about the importance of having a “brag book” and she is one of the reasons why I kept this in mind early on in my job. I not only documented my contributions to projects, but I also kept screenshots of any shoutouts or spot bonuses I’d receive. Here are other things you may not think of that could be included in your brag book:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Links to spike documents and investigations you’ve led&lt;/li&gt;
&lt;li&gt;Notes from any office hours or learning opportunities you’ve pursued&lt;/li&gt;
&lt;li&gt;Technical debt or tech hygiene tasks you’ve worked on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As time passes it can be hard to remember all of the work you’ve done, so try to update your document somewhat regularly (once monthly was a good cadence for me.)&lt;/p&gt;

&lt;p&gt;5) Get buy-in from your manager by expressing your promotion goal early on.&lt;/p&gt;

&lt;p&gt;Almost a full year before the promo cycle began, I spoke with my manager (he actually brought it up to me first!) and we mapped out all of the promotion requirements and identified gaps and areas of improvement early on. This allowed me to be strategic in the work I’d be taking on to make sure there wasn’t anything missing when it came time to get promoted.&lt;/p&gt;

&lt;p&gt;In my opinion, it’s never too soon to bring this up. Even if your manager doesn’t feel you’re quite ready for promotion, it’s also best you know that information as soon as possible so you can come up with a readiness plan.&lt;/p&gt;

&lt;p&gt;6) Seek mentorship from someone who has navigated the promotion process.&lt;/p&gt;

&lt;p&gt;I had a senior engineer outside of my immediate scrum team walk me through her experience going through a promo. I also asked her to review my brag book and provide feedback, specifically asking if there was anything she felt was missing from the criteria for the next level.&lt;/p&gt;

&lt;p&gt;Reaching out for this mentorship was so helpful because I was lucky enough that my mentor even shared what salary increase and bonus she received when she was promoted from my level so that I could make sure I was getting fair pay. As a Black woman in engineering, equal pay is something extremely important to me. I am thankful to have had her guidance and transparency to help me advocate for myself!&lt;/p&gt;

&lt;p&gt;7) Solicit timely feedback from your peers (and make the process as easy for them as possible!)&lt;/p&gt;

&lt;p&gt;I’ve had the pleasure of working with a few different product managers and designers, some on very small one-off tasks or tiny features. However, even if I worked with someone in a limited capacity, I’d always request feedback. You can leverage any internal tools that your company may provide access to, or send out an anonymous Google form.&lt;/p&gt;

&lt;p&gt;Whatever tool you use, I recommend making this process as simple as possible. Remember your peers are busy, and the less resistance they feel to doing this task for you, the more likely they are to do it quickly! You can make it easy by requesting feedback within a month of working on a project or task with them, so they can easily remember examples. The more specific the feedback, positive or constructive, the more helpful it will be for you. You can also send over a mini version of your list of contributions to any folks giving feedback on you in case they want to reference specific features/tasks. Remember - make it easy on them!&lt;/p&gt;

&lt;p&gt;8) Bring visibility to your work.&lt;/p&gt;

&lt;p&gt;Doing great work won’t really matter if no one knows about it. Take advantage of opportunities to demo your work to your broader team, talk about your projects and successes with your colleagues, and share your contributions regularly with your manager. Don’t let all your hard work go unnoticed!&lt;/p&gt;

&lt;p&gt;These recommendations are all my opinions on things you can do to make promotion more of a no-brainer for whoever will be evaluating you. My overall advice, however, would be this — understand that promotions are decided by people, and people are imperfect. Therefore, try to stack the odds in your favor as much as possible by being over-prepared!&lt;/p&gt;

&lt;p&gt;I hope this post was helpful. Please share and leave a comment if anything resonates with you.&lt;/p&gt;

</description>
      <category>career</category>
      <category>womenintech</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Object Oriented Programming w/ JavaScript | “this”, "new" &amp; constructors!</title>
      <dc:creator>ebhargro</dc:creator>
      <pubDate>Sun, 01 May 2022 19:36:55 +0000</pubDate>
      <link>https://dev.to/ebhargro/object-oriented-programming-w-javascript-this-new-constructors-78b</link>
      <guid>https://dev.to/ebhargro/object-oriented-programming-w-javascript-this-new-constructors-78b</guid>
      <description>&lt;p&gt;Hi there, welcome to my first technical blog post! This is the start of a series where I explain concepts related to OOP (Object Oriented Programming) with JavaScript. If you don’t know what any of those words mean, that’s okay, but be sure to read through the next paragraph and check the free resources linked within to get a primer before reading the rest of the post! If you’re familiar already, feel free to skip the next section.&lt;/p&gt;

&lt;h3&gt;
  
  
  A quick primer
&lt;/h3&gt;

&lt;p&gt;OOP is a programming paradigm, or  &lt;em&gt;a way of thinking&lt;/em&gt; about programming. In this way of thinking, websites and applications are built around objects. &lt;/p&gt;

&lt;p&gt;In JavaScript, &lt;a href="https://www.w3schools.com/js/js_objects.asp" rel="noopener noreferrer"&gt;objects&lt;/a&gt; are variables that act as containers for data. Objects appear as a collection of key:value pairs like this example below:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6olsc80hrhmko15s4gjs.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6olsc80hrhmko15s4gjs.png" alt="a screenshot of an object written in JavaScript with labels “keys” &amp;amp; “values”."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out this resource for more on what OOP is &amp;amp; how it is used: &lt;a href="https://www.techtarget.com/searchapparchitecture/definition/object-oriented-programming-OOP" rel="noopener noreferrer"&gt;https://www.techtarget.com/searchapparchitecture/definition/object-oriented-programming-OOP&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  "this"
&lt;/h1&gt;

&lt;p&gt;You may have encountered the word “this” while reading JavaScript code. If you’re like me, you were probably super confused on the word and its meaning. “this” is a relative reference to the object it belongs to. The keyword makes your code more reusable and is very useful to learn! &lt;/p&gt;

&lt;p&gt;As someone who loves languages and writing, viewing the technical term “this” in the same way I think about pronouns in English really helped me wrap my mind around it. I’d like to share my comparison just in case it is also helpful to you!&lt;/p&gt;

&lt;p&gt;In English, sometimes we say “she” or “it” or “this” to refer to something else. For example, if your parents tell you “clean up &lt;em&gt;this&lt;/em&gt; room”, you know exactly what room they’re referring to based on the conversation’s context. If they’re standing in the living room when they say it, &lt;em&gt;this&lt;/em&gt; refers to the living room. If they’re standing in your bedroom, &lt;em&gt;this&lt;/em&gt; refers to your bedroom. In the same way, “this” in programming can also have different meanings depending on context:&lt;/p&gt;

&lt;p&gt;Alone, &lt;code&gt;this&lt;/code&gt; refers to something called the “global object.”&lt;/p&gt;

&lt;p&gt;To try this out, open your browser’s console and just type in&lt;/p&gt;

&lt;p&gt;&lt;code&gt;console.log(this);&lt;/code&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1ts0fco97tso433xcl0.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1ts0fco97tso433xcl0.png" alt="screenshot of a terminal with console output that says "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see that &lt;code&gt;this === window&lt;/code&gt;! Window is the &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Global_object" rel="noopener noreferrer"&gt;global context of your browser.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a function, &lt;code&gt;this&lt;/code&gt; ⇒ global object*.&lt;/p&gt;

&lt;p&gt;In an event, &lt;code&gt;this&lt;/code&gt; ⇒ the element that received the event*.&lt;/p&gt;

&lt;p&gt;*There are some exceptions here! MDN has a great breakdown of how you can derive the meaning of “this” in different scenarios:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  constructors &amp;amp; the "new" keyword
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Constructors&lt;/em&gt; are functions that create new objects. They define properties and behaviors that will belong to that object. Think of them as a blueprint! Many real-world objects are created from blueprints. All cars, for example, tend to share a set of common properties and behavior. They have wheels, windows,  and the ability to drive.&lt;/p&gt;

&lt;p&gt;A constructor for a Cars object would look like this:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08h3gnhqgzuh8bb75bl8.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08h3gnhqgzuh8bb75bl8.png" alt="screenshot of a code snippet written in JavaScript."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What makes constructors cool is the fact that you can use the properties and behaviors defined within them to create multiple “versions” (or in programming terms, “instances) of the same object. &lt;/p&gt;

&lt;p&gt;This can be achieved when the &lt;code&gt;new&lt;/code&gt; operator is used when calling a constructor. This word tells JavaScript to create a new instance of an object. (By the way, any time an object is created it is &lt;em&gt;instantiated&lt;/em&gt;.) The new keyword is important because without it, the &lt;code&gt;this&lt;/code&gt; inside the constructor would not point to the newly created object. &lt;code&gt;new&lt;/code&gt; tells &lt;code&gt;this&lt;/code&gt; what context it should refer to. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts238yowgtlqdc6brn85.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts238yowgtlqdc6brn85.png" alt="two screenshots - one of a JavaScript code snippet, the other of a terminal showing console output."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now your new object will have all the properties defined inside of your constructor, yay!&lt;/p&gt;

&lt;h1&gt;
  
  
  using parameters for more flexibility:
&lt;/h1&gt;

&lt;p&gt;You can allow your constructor to accept parameters to more easily change its properties to different values.&lt;/p&gt;

&lt;p&gt;Let’s say we have a constructor function called Programmer, which takes in two arguments “name” and “language” and has three properties defined:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyfpi4qr2sah2gwlr6yj.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyfpi4qr2sah2gwlr6yj.png" alt="two screenshots - one of a JavaScript code snippet, the other of a terminal showing console output."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With parameters, you can make your objects more flexible!&lt;/p&gt;

&lt;p&gt;I hope this blog post has helped clarify &lt;em&gt;this&lt;/em&gt;, constructors, and the “new” keyword for you! This is my first time attempting to explain a technical concept, so I welcome all some feedback. Let me know what you think by sharing this post on &lt;a href="https://twitter.com/ebonycodes" rel="noopener noreferrer"&gt;Twitter!&lt;/a&gt; If you’d like me to make this a series where I cover some of the key principles of OOP, let me know. I’d love to write more about the prototype chain &amp;amp; inheritance specifically if it would be valuable.&lt;br&gt;
To read more of my blogs, check out my website &lt;a href="https://codenewbiechronicles.com" rel="noopener noreferrer"&gt;Code Newbie Chronicles&lt;/a&gt;!&lt;/p&gt;

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

&lt;p&gt;Ebony &lt;/p&gt;

&lt;p&gt;(Disclaimer: this post is not a comprehensive technical explanation of these concepts. As I learn more, I’ll be sure to re-visit this post and correct any inaccuracies!) &lt;/p&gt;

&lt;p&gt;Another free resource on OOP:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/#:~:text=JavaScript%20Prototype,languages%20and%20Functions%20in%20JavaScript" rel="noopener noreferrer"&gt;https://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/#:~:text=JavaScript Prototype,languages and Functions in JavaScript&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
