<?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: Karen Carter</title>
    <description>The latest articles on DEV Community by Karen Carter (@shamblingblindly).</description>
    <link>https://dev.to/shamblingblindly</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%2F622081%2F90e1afad-2974-4838-94b1-620578174920.jpeg</url>
      <title>DEV Community: Karen Carter</title>
      <link>https://dev.to/shamblingblindly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shamblingblindly"/>
    <language>en</language>
    <item>
      <title>"Does it get easier?" Yes, but Also No...</title>
      <dc:creator>Karen Carter</dc:creator>
      <pubDate>Thu, 15 Jul 2021 04:30:00 +0000</pubDate>
      <link>https://dev.to/shamblingblindly/does-it-get-easier-yes-but-also-no-lfh</link>
      <guid>https://dev.to/shamblingblindly/does-it-get-easier-yes-but-also-no-lfh</guid>
      <description>&lt;p&gt;&lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nnu1al952jn26z2g5x85.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1GWaCtBR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nnu1al952jn26z2g5x85.jpg" alt="Many question marks" title='Image by &amp;lt;a href="https://pixabay.com/users/qimono-1962238/?utm\_source=link-attribution&amp;amp;amp;utm\_medium=referral&amp;amp;amp;utm\_campaign=image&amp;amp;amp;utm\_content=1872665"&amp;gt;Arek Socha&amp;lt;/a&amp;gt; from &amp;lt;a href="https://pixabay.com/?utm\_source=link-attribution&amp;amp;amp;utm\_medium=referral&amp;amp;amp;utm\_campaign=image&amp;amp;amp;utm\_content=1872665"&amp;gt;Pixabay&amp;lt;/a&amp;gt;' width="640" height="352"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;span&gt;&lt;span&gt;Image by &lt;a href="https://pixabay.com/users/qimono-1962238/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1872665"&gt;Arek Socha&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1872665"&gt;Pixabay&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;



&lt;h2&gt;
  
  
  It's complicated...
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Does it get easier?"&lt;/strong&gt; I see some form of this question asked a lot in beginner programming groups. I always struggle with how to answer this honestly and clearly, because the truth is not that simple. In some ways it &lt;em&gt;does&lt;/em&gt; get easier, but in other ways &lt;strong&gt;it is almost always going to be difficult &lt;em&gt;if you are advancing in your career&lt;/em&gt;&lt;/strong&gt;. If you are a programmer and your job is easy for years on end, the most likely explanation is that you're in the kind of dead-end position that people try to avoid, not the kind of position people dream about when they think of becoming a developer. Most likely you are not getting better at being a dev, not working with new tech or solving new kinds of problems, not being given more responsibility, etc. etc. etc.&lt;/p&gt;

&lt;p&gt;I've seen some pushback from other newbie programmers on the idea that it could remain difficult past the initial learning stage. Notably I have never once seen somebody who's already working in the industry try and argue that. Some claim it's gatekeeping, others will say "if it's so difficult why don't you go do something easier?" Now I'll be the first to admit that there is way too much gatekeeping in this industry, and I've experienced plenty of it, including in interviews where my geek creds were being checked in the name of "cultural fit". But &lt;strong&gt;talking about how programming remains hard for your entire career is not gatekeeping: it's trying to let people know what they're signing up for.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Difficulty is not a value judgement.
&lt;/h2&gt;

&lt;p&gt;As for the second argument, "why not go do something easier?", this, of course, is a logical fallacy (not to mention a question that reveals more about the asker's attitude than the person they are asking). &lt;strong&gt;Difficulty is not a value judgement&lt;/strong&gt;. Just because something is difficult that doesn't mean it isn't fun, worthwhile, fulfilling, or any other good thing you can think of. There are plenty of careers that we commonly accept as both difficult and worth doing: medicine, law, engineering, rocket science, whatever. And I think many would accept the idea of parenting being something both difficult and worthwhile. So there is no reason on earth why the same should not apply to programming. In fact, there are many of us that choose this career &lt;em&gt;because&lt;/em&gt; it is so challenging: the difficulty and always-changing nature of the work is a big part of the appeal. There is also another big reason many want to get into the field: it is seen as a lucrative career. Thinking about it logically, &lt;strong&gt;if it were so easy, why would it pay so well&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;That said, again, &lt;strong&gt;there &lt;em&gt;are&lt;/em&gt; some things that get better.&lt;/strong&gt; Many folks struggle a lot in the very beginning because they have to learn a different way of thinking in order to program, and once they have developed that new, logical mindset it gets a lot easier. As your problem solving skills improve, it will take less time to solve the same or similar kinds of problems. After you've worked with a given language/framework/code base for awhile you won't have to look things up as often, or when you do need to look them up (you do NOT need to keep everything in your head, just know where to find it) you'll know exactly where to look, including for examples of similar functionality you've built in the past, so it'll be both faster and easier. Past successes also tend to lead to more confidence in the future: once you've proven you can, in fact, do hard things, then doing more hard things in the future seems less daunting. And of course if you're learning in a very intensive course or bootcamp, once you start working that sort of intense drinking-from-a-firehose feeling is not going to be there most of the time (although it can still feel pretty insane whenever you start a new job or project or get new responsibilities... but at least then you're getting paid for the insanity!). These kinds of things do legitimately get better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3pbmd1hvuwcn502lm8q.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFqc1LSk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3pbmd1hvuwcn502lm8q.jpg" alt="A brain and neural connections superimposed over a woman's head." width="640" height="426"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;span&gt;Image by &lt;a href="https://pixabay.com/users/geralt-9301/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4389372"&gt;Gerd Altmann&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4389372"&gt;Pixabay&lt;/a&gt;&lt;/span&gt;



&lt;p&gt;What doesn't get better? For starters, &lt;strong&gt;you will never be able to stop learning if you want to stay in the industry&lt;/strong&gt;. There is effectively no way to "master" anything in the sense of learning everything there is to learn about something and then being done with it. Even if you stay in the same tech stack, there are always new versions coming out. Not only are there bug and security fixes you will want and need to take advantage of, but at a certain point you will be &lt;em&gt;forced&lt;/em&gt; to upgrade as hardware/OS/framework/programming language versions become obsolete. Sometimes the tech you're working with will even get completely discontinued, so you will need to learn an entirely new way of working. A very recent example is Flash being forcefully discontinued at the beginning of the year. All those programmers and users had no choice but to move to something else.&lt;/p&gt;

&lt;p&gt;In addition to this, &lt;strong&gt;the kinds of problems you will be expected to solve will only get harder and more complex as you advance in your career&lt;/strong&gt;. Not only in terms of business needs (a company is unlikely to continue solving the exact same problem in the exact same way over and over, after all), but also in terms of responsibilities. A junior may be told what the user interface should look like and what kind of approach to take to program the back end, where an intermediate dev will be left to figure most of it out on their own (with supervision and assistance from more senior devs), but a lead dev will have to come up with the entire architecture for the project. "How to program" is really just the start, even if you specialize. Database schema design, user experience, accessibility, architecture, networking, scalability, security... The list goes on. There is no way you're going to know all of this coming out of a bootcamp or even from a 4 year degree plan. But &lt;strong&gt;if you want to get promotions and more money, you will need to continue learning and improving&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02suculqf40rpmk25a0a.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kl4iUAuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02suculqf40rpmk25a0a.jpg" alt="A partially assembled puzzle version of a hundred dollar bill" width="640" height="337"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;span&gt;Image by &lt;a href="https://pixabay.com/users/qimono-1962238/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2500328"&gt;Arek Socha&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2500328"&gt;Pixabay&lt;/a&gt;&lt;/span&gt;

  

&lt;h2&gt;
  
  
  &lt;strong&gt;Learning to program is not a get-rich quick scheme&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;I write this not to be discouraging, but because I want people to understand what a career as a programmer really looks like. Particularly right now, when there are a whole lot of people making a whole lot of money selling the dream of becoming a dev, many of whom are quite frankly selling the modern-day equivalent of snake oil, I think it's important for those of us already in the industry to be clear about what it's really like. &lt;strong&gt;Learning to program is not a get-rich quick scheme&lt;/strong&gt;. It takes quite a lot of both time and effort to start, and the effort part is never going to go away. Time, arguably, becomes less of an issue; professional development &lt;em&gt;should&lt;/em&gt; be on your employer's dime once you get a job. Granted there are plenty of (in my opinion quite toxic) workplaces and devs that promote the idea that you need to program non-stop and have no personal life in order to stay relevant; that is thankfully not actually a hard requirement, unlike the effort. Either way though, if you are turned off by the idea of constant learning and ever-increasing difficulty of job duties, this is not the career for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;It's hard, but you can do hard things!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;On the other hand, if that sounds amazing to you, like it does to me and many other devs, come join us! &lt;strong&gt;It's hard, but you can do hard things!&lt;/strong&gt; It's (usually) fun and interesting and it's rarely boring. Plus you get to see people look super impressed when you say what you do for a living. A++++, five stars, would highly recommend. I can't imagine doing anything else for a living, even if I am well into in the 4th and final stage of a dev's life:&lt;/p&gt;



&lt;blockquote&gt;
&lt;br&gt;
&lt;p&gt;Newbie Developers: "I don't know anything!"&lt;br&gt;&lt;br&gt;Junior Developers: "I know everything!"&lt;br&gt;&lt;br&gt;Senior Developers: "I know nothing!"&lt;br&gt;&lt;br&gt;Veteran Developers: "I know nothing about everything!"&lt;/p&gt;— Casper Beyer (&lt;a class="mentioned-user" href="https://dev.to/caspervonb"&gt;@caspervonb&lt;/a&gt;) &lt;a href="https://twitter.com/caspervonb/status/984101018978758661?ref_src=twsrc%5Etfw"&gt;April 11, 2018&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt; 

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How to Land Your First Dev Job: Develop Yourself, Market Yourself</title>
      <dc:creator>Karen Carter</dc:creator>
      <pubDate>Fri, 07 May 2021 01:14:00 +0000</pubDate>
      <link>https://dev.to/shamblingblindly/how-to-land-your-first-dev-job-develop-yourself-market-yourself-3fp4</link>
      <guid>https://dev.to/shamblingblindly/how-to-land-your-first-dev-job-develop-yourself-market-yourself-3fp4</guid>
      <description>&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%2Ff45wjli52a8d0o36d861.jpg" 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%2Ff45wjli52a8d0o36d861.jpg" alt="Woman Looking Frustrated"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/magnetme-18827429/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=5679001" rel="noopener noreferrer"&gt;magnetme&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=5679001" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the coding and tech groups I'm in, I see the same question asked over and over by folks who are just learning to code, finishing up a bootcamp, degree, or other training program, or who have been looking for that first job for awhile and not having any luck: "what do I need to do to get my first dev job?" There's a whole ton of info out there on this topic, but it's scattered all over, so I thought I would gather together the best resources I've come across and share them, along with a bit of context, to try and help everybody struggling with or just plain wondering about this.&lt;/p&gt;

&lt;p&gt;There are &lt;em&gt;a lot&lt;/em&gt; of things you can do to improve your chances of finding a job and hopefully shorten your job search. They are broadly divided into 2 categories: developing yourself and your skills, and marketing yourself and your skills. Note that you don't need to do everything on this list, nor do you need to do it all at once. This is an "every little bit helps" kind of thing. Just keep working away at it until you finally land that first job. At that point you can absolutely back off: there's a huge bottleneck at the entry/junior level, so once you have a few years of experience subsequent jobs won't require nearly this much effort. At that point your actual work experience should start to speak for itself.&lt;/p&gt;

&lt;p&gt;Before you continue, I strongly recommend reading this excellent &lt;a href="https://medium.com/@vguti9/a-4-0-wont-get-you-a-job-as-a-software-engineer-but-these-steps-will-98194cf3377d" rel="noopener noreferrer"&gt;overview of the dev job search&lt;/a&gt;. It covers many of the same topics as this article; I list additional resources wherever I can to give an even clearer picture of what each of these bullet points requires. And then:&lt;/p&gt;

&lt;h2&gt;
  
  
  Develop Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get an internship, if you can. Real-world experience is king.&lt;/li&gt;
&lt;li&gt;Continue learning and show off your new knowledge in your portfolio. Check out the &lt;a href="https://free-for.dev/#/" rel="noopener noreferrer"&gt;free for developers list&lt;/a&gt; for help with hosting, APIs (front-end devs, this is a GREAT way to build some cool projects that consume an API), and all sorts of tools to help you build projects for free.&lt;/li&gt;
&lt;li&gt;Improve your git skills and get all of your portfolio projects up on GitHub/GitLab/Bitbucket. &lt;a href="https://dev.to/shamblingblindly/git-the-what-and-why-edition-324p"&gt;Git is mandatory if you want to be a dev&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Contribute to open source projects. Read up on &lt;a href="https://opensource.guide/how-to-contribute/" rel="noopener noreferrer"&gt;how and where to contribute&lt;/a&gt;. Find smaller projects that need someone with your skills on a site like &lt;a href="https://www.gitpals.com/page/1" rel="noopener noreferrer"&gt;GitPals&lt;/a&gt; or start your own project with other devs.&lt;/li&gt;
&lt;li&gt;Participate in hackathons. You'll learn a lot AND have something to brag about on your resume/LinkedIn. It's a win/win scenario.&lt;/li&gt;
&lt;li&gt;Volunteer to build/improve websites for local non-profits, or look for &lt;a href="https://stuartdotson.com/blog/top-software-engineer-volunteer-opportunities/" rel="noopener noreferrer"&gt;volunteer opportunities online&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Practice for coding interviews. &lt;a href="https://www.hackerrank.com/" rel="noopener noreferrer"&gt;Hackerrank&lt;/a&gt; is often used directly in the interview process so you absolutely need to familiarize yourself with it. &lt;a href="https://www.codewars.com/" rel="noopener noreferrer"&gt;Codewars&lt;/a&gt; and similar sites are great, too, but less likely to be part of the interview process.&lt;/li&gt;
&lt;li&gt;Read &lt;a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850" rel="noopener noreferrer"&gt;Cracking the Coding Interview&lt;/a&gt; (although if you're strictly front-end this isn't going to be as useful).&lt;/li&gt;
&lt;li&gt;Google your preferred languages plus "interview questions" and study up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Market Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/GergelyOrosz/status/1319282287456874498" rel="noopener noreferrer"&gt;Improve your resume using this series of Tweets&lt;/a&gt; or the book linked from them.&lt;/li&gt;
&lt;li&gt;Improve your LinkedIn to make sure you're highlighting the most important items.&lt;/li&gt;
&lt;li&gt;Broaden your job search by using targeted job boards in addition to LinkedIn, Dice, Indeed, etc. For both this and LinkedIn info refer back to &lt;a href="https://medium.com/@vguti9/a-4-0-wont-get-you-a-job-as-a-software-engineer-but-these-steps-will-98194cf3377d" rel="noopener noreferrer"&gt;the article I linked at the start of this post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Networking. It's absolutely crucial, but everyone is confused on how to do it. &lt;a href="https://dev.to/treyhuffine/into-the-unknown-advice-for-breaking-into-the-tech-industry-8o9-temp-slug-3030487"&gt;This article about how one woman networked and raised her profile&lt;/a&gt; so much after completing a bootcamp that she got multiple amazing job offers is one of the best concrete descriptions I've seen.&lt;/li&gt;
&lt;li&gt;Attend conferences and take advantage of the networking events that are part of them. Right now most conferences are still online and free or very cheap, so take advantage while you can!&lt;/li&gt;
&lt;li&gt;Write blog posts or articles about your learning process, cool projects, job search, etc. and publish/link to them on a variety of platforms. &lt;a href="http://dev.to"&gt;dev.to&lt;/a&gt;, Medium, Twitter, Instagram, and of course your LinkedIn feed. The point is to raise your profile, so do that however you can, even if it feels icky. It sucks, but it's necessary in this insanely competitive job market.&lt;/li&gt;
&lt;li&gt;Get involved in local and/or online developer groups. Facebook has lots of specialized dev groups, Instagram and Twitter have whole tech subsections, then of course there's Reddit, and the list goes on. Just get involved. By giving back to the community you will raise your own profile. Fellow female devs, be sure to check out  &lt;a href="https://www.womenwhocode.com/" rel="noopener noreferrer"&gt;Women Who Code&lt;/a&gt; for online and (some day) in-person events, conferences, a job board and newsletter, a YouTube channel with incredible &lt;a href="//ttps://www.youtube.com/playlist?list=PLVcEZG2JPVhcqhyjIthVDmyKyyATGAMPC&amp;amp;mc_cid=7ebe7b4fb0&amp;amp;mc_eid=491e941fd9"&gt;career development content&lt;/a&gt;, and more.&lt;/li&gt;
&lt;li&gt;Volunteer to speak at conferences or give presentations at developer group meetings. This is one of those things that is insanely scary to a lot of us, but it means there's a lot of opportunity for those willing to put themselves out there. &lt;a href="https://dev.to/treyhuffine/into-the-unknown-advice-for-breaking-into-the-tech-industry-8o9-temp-slug-3030487"&gt;The article I linked about networking&lt;/a&gt; has great info on speaking at events, too.&lt;/li&gt;
&lt;/ul&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%2Fyjla7bmweje58eoenzr1.jpg" 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%2Fyjla7bmweje58eoenzr1.jpg" alt="Dream Job"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/geralt-9301/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2904780" rel="noopener noreferrer"&gt;Gerd Altmann&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2904780" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Don't stop learning, keep improving your portfolio, resume, and LinkedIn, network network network, practice for interviews, get involved in the dev community, and get your name out there as much as you can. It is a lot of work and takes a lot of time, so the sooner you start on it, the better. Many of these activities can be started when you first start learning, far before you're at the job search stage.&lt;/p&gt;

&lt;p&gt;Above all, don't get discouraged by a long job search (a year or more) or a lot of rejections. That is absolutely normal in the current hyper-competitive entry- and junior-level dev job market. If you can hold out until you get that first dev job, job searches will get much easier going forward. Don't lose hope.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Git. The WHAT and WHY Edition.</title>
      <dc:creator>Karen Carter</dc:creator>
      <pubDate>Thu, 03 Sep 2020 22:23:00 +0000</pubDate>
      <link>https://dev.to/shamblingblindly/git-the-what-and-why-edition-324p</link>
      <guid>https://dev.to/shamblingblindly/git-the-what-and-why-edition-324p</guid>
      <description>&lt;p&gt;Lately I've seen a lot of new/aspiring developers talk about difficulties learning &lt;a href="https://git-scm.com/"&gt;git&lt;/a&gt;. I was confused at first, because there are approximately a zillion git tutorials out there. But then I started really looking at what people were saying AND what all those tutorials contain. The problem is most tutorials start out with "here are a ton of git commands to memorize", and this is not where people are having problems. People are having problems with "what is git, why should I learn it, and what does it look like to use it in a real-life project?", and those questions are largely not answered in all those millions of tutorials. So at the risk of redundancy, I'm going to attempt to address these questions in Yet Another Article About Git.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why git?
&lt;/h2&gt;

&lt;p&gt;First, I want to make it clear that&lt;/p&gt;

&lt;h1&gt;
  
  
  if you want to be a programmer, any kind of programmer, you need to know git. You just DO.
&lt;/h1&gt;

&lt;p&gt;This is the short version of the answer to "why should I learn it?". &lt;/p&gt;

&lt;p&gt;The medium length answer is that git has become THE preeminent version control software since its release in 2005, and particularly since GitHub came about in 2008. &lt;a href="https://softwareengineering.stackexchange.com/questions/136079/are-there-any-statistics-that-show-the-popularity-of-git-versus-svn"&gt;This StackExchange question&lt;/a&gt; purports to show the change in number of repositories over time, with last count being 72% git, if you click through to the &lt;a href="https://www.openhub.net/repositories/compare"&gt;source of the data&lt;/a&gt;. And in &lt;a href="https://insights.stackoverflow.com/survey/2020#technology-collaboration-tools"&gt;the last StackOverflow developer survey&lt;/a&gt;, "Of the professional developers who responded to the survey, almost &lt;strong&gt;82% use GitHub&lt;/strong&gt; as a collaborative tool". This means the number of respondents using git is even higher, because GitHub is just one option for using git (more on this later). For context, &lt;a href="https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages"&gt;the second most popular technology on their survey&lt;/a&gt;, &lt;strong&gt;JavaScript, comes in at only 67.7%&lt;/strong&gt;. So git is probably the single most widely-used bit of tech for developers, above literally anything else. If you want to work on or use open source projects, if you want to work with someone else or FOR someone else, at some point somebody is going to point you to a git repo that you are going to need to be able to Do Stuff with.&lt;/p&gt;

&lt;p&gt;The long answer is all the stuff about version control and tracking changes and how much easier it makes large projects with multiple people and why git is easier than the alternatives (&lt;a href="https://en.wikipedia.org/wiki/Comparison_of_version-control_software"&gt;no, git is not the only version control software&lt;/a&gt;, yes, I have used others including CVS, Subversion, and Perforce because I'm old enough that git didn't exist when I got started, and I still prefer git, as do many others judging from the overwhelming popularity of it and the incredible speed with which it took over), but when you're just getting started you're probably not worrying about any of that. The thing to focus on is that this is something that you need to know if you want to be a programmer. Git's extensive use by other programmers means that you are going to look really foolish in an interview or even a conversation with another programmer if you say you've been programming for X number of years and you don't know git, or if you're a CS student who thinks they're going to get a job out of school but "doesn't want to learn git" (which is an actual thing that one of our interns heard in recent years)... &lt;strong&gt;Just learn git, OK?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is git?
&lt;/h2&gt;

&lt;p&gt;Now that you are hopefully convinced that knowing git is right up there in importance with knowing whatever other languages or tools you're currently working on (even for you, front-end web developers! Git should really be right on the top of that list with HTML, CSS, and JavaScript), I'll try for a simplified version of "what is git?" Git is software that lets you track changes to a collection of files (AKA a repository; it sounds fancy but it's literally just a collection of files) over time. This is not so important when you are just starting out and working on tiny personal projects, but the bigger the project and the more people working on it, the more vital it becomes. You tell the software to save the current state of the collection of files by adding and committing. Then if you screw up later you can roll back the code to a former commit; essentially this reloads the files to an earlier version when things were working. You can also create a branch, which acts like a separate copy of the collection of files; you can then manipulate those files without screwing with the original copy. Typically you do this when you're developing a new feature on an existing project, if you are doing something very experimental and you think it might break stuff, or if you're working with someone else and you'll both be making changes at the same time. The branch functions as a &lt;em&gt;set of commits&lt;/em&gt; that you can easily keep or discard according to how things are going. There's much more to it, of course, but this is the basic stuff you need to understand to get started. &lt;strong&gt;All these things can be done all by yourself, on your own computer, without a GitHub or any other account.&lt;/strong&gt; So that is git on a very basic level.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GitHub?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; is by far the most popular place to store git repositories online, on someone else's server. It has a lot of other cool features, but for the purposes of learning git, that's all you really need to know. It is not the only place to store git repositories (&lt;a href="https://gitlab.com/explore"&gt;GitLab&lt;/a&gt; and Atlassian's &lt;a href="https://bitbucket.org/product"&gt;Bitbucket&lt;/a&gt; are the other popular &lt;em&gt;commercial&lt;/em&gt; options, but you can also set up your own server, which many companies do), and it's not actually necessary to start using git. You can use git on your computer and it will track all those lovely changes and branches all on its own. The reason people use GitHub/GitLab/Bitbucket is primarily to 1. &lt;a href="https://www.howtogeek.com/219197/youre-not-backing-up-properly-unless-you-have-offsite-backups/"&gt;create an off-site back-up of their work&lt;/a&gt; and 2. share their files so others can contribute to their project, or critique it, or just plain use it.  Git itself, running on your computer, needs to be configured if you want to back-up or share your work. This is what people mean when they talk about &lt;a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes"&gt;remotes&lt;/a&gt;. You will need to tell git where the files should go when you push (the command to get your changes saved on the server), or where they should come from when you pull (the command to retrieve changes from the server and save them on your local machine). Luckily, this setup step usually only needs to be done once, and then you are good. So you can do it and forget all about it until you get a new computer and/or job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Don't Get Intimidated
&lt;/h2&gt;

&lt;p&gt;The final thing I want to address about git is that, while git can get really, really complicated, and it can be intimidating to go to one of those tutorials and see huge lists of commands, the reality is that the vast majority of programmers are not actually git wizards, and they use a tiny fraction of all the available commands. As usual, &lt;a href="https://xkcd.com/1597/"&gt;XKCD has addressed this with a great comic&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xkcd.com/1597/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5GK1zqMp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://imgs.xkcd.com/comics/git.png" alt="Git" width="330" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So please, don't get intimidated by the enormity of the tool. &lt;strong&gt;97% of the time the only things you will be doing are checking the status of your code, pulling, pushing, adding, committing, and branching. 6 commands. Really.&lt;/strong&gt; Another 2 percent of the time you'll be creating pull requests (asking someone else to bring the changes you made in your branch of a project into the main branch of the project, which is usually done in a GUI anyway) and/or merging (doing the actual bringing in of changes made in one branch into another branch). The remaining 1 percent of the time, when you need to roll back a commit or discard your work before committing or start a brand new project (because in the real world projects are big long things, so you're not starting a new one every week) or when some other unusual situation comes up, you can use Google or a &lt;a href="https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet"&gt;git cheat sheet&lt;/a&gt; or one of &lt;a href="https://remembertheapi.com/products/git-cheat-sheet-black-mug-11oz"&gt;those cool mugs&lt;/a&gt;. To borrow &lt;a href="https://medium.com/my-little-bookshelf/part-1-the-design-of-everyday-things-revised-expanded-edition-book-summary-key-points-3a8e498dffaa"&gt;Don Norman's concept&lt;/a&gt;, *&lt;em&gt;the knowledge exists in the world; you do NOT need to keep it in your head. *&lt;/em&gt; The amazingly useful site &lt;a href="https://ohshitgit.com/"&gt;Oh shit, git&lt;/a&gt; has the answers to how to get yourself out of many common messes. And of course, like the comic says, if all else fails save your work off elsewhere, delete the files on your local machine, and download a new copy from the server.&lt;/p&gt;

&lt;p&gt;I'm a lead dev, I'm in charge of code reviews and keeping the codebase clean, all these repos that hold the code for our apps are my babies that I protect with my (professional) life, so I use git every day... But the above 100% applies to me. I've taken git classes that taught the more advanced features, I've read the docs... And I still have to Google them any time I actually need them, because it's so rare that I can't remember the commands off-hand. I don't even use merge from the command line anymore because we have our own GitLab instance and I like the GUI better due to the way it shows changes. I also start new projects from the GUI because at the same time I like to add a description and the project icon and set permissions and protect branches and......., so I also don't git init anymore (just a nice simple git clone  after it's all set up). Since our team is so small I prefer to keep all the history from merging, so I don't even bother with &lt;a href="https://www.atlassian.com/git/tutorials/merging-vs-rebasing"&gt;rebasing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope this simple overview and explanation will bring git down to earth for new developers. It's something you need to know, but it really isn't all that scary in practice. &lt;strong&gt;You can do it!&lt;/strong&gt; I am planning to write another post soon about some real-world scenarios and the commands used, as well as explaining a couple of different branching models (which are essentially a way to organize/regulate how you use git within a group of developers), since this is another git area that seems to be under-explained. &lt;strong&gt;If you know of any other areas that are under-explained, please let me know!&lt;/strong&gt; Git is such a ubiquitous tool, nobody should need to struggle learning or understanding it.&lt;/p&gt;

</description>
      <category>bitbucket</category>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>Tech Jobs Outside of the Tech Industry</title>
      <dc:creator>Karen Carter</dc:creator>
      <pubDate>Mon, 13 Jan 2020 06:22:00 +0000</pubDate>
      <link>https://dev.to/shamblingblindly/tech-jobs-outside-of-the-tech-industry-2pn7</link>
      <guid>https://dev.to/shamblingblindly/tech-jobs-outside-of-the-tech-industry-2pn7</guid>
      <description>&lt;p&gt;I wrote this post in January of 2020, but it's still very relevant today. I hope more people will consider looking into tech jobs outside of the tech industry, as there are a lot of overlooked opportunities out there.&lt;/p&gt;

&lt;p&gt;This is one of those things that I never gave a second thought to. Growing up in New Mexico, there were more tech jobs in government than in any other industry. White Sands Missile Range, Sandia and Los Alamos National Laboratories, not to mention state, county, and city jobs. My dad plus many of my friends' parents worked in tech for the feds. While there are more and more tech companies moving in, government is still a major player in the area and probably always will be.  &lt;/p&gt;

&lt;p&gt;But that was just my experience. In many areas the tech industry itself is much more prominent, and of course those jobs are the ones that get all the press. You rarely see articles about working as a software developer at the IRS, or something like that. It's always Google or Amazon, a start-up, etc. To many people, being a software developer is synonymous with working in the tech industry.  &lt;/p&gt;

&lt;p&gt;So when Jenny Chan, who founded the Women in Web Dev community, contacted me to ask if I'd do an interview for the Women in Web Dev blog, after reading a random comment I'd made about working as a software developer but not in the tech industry, I was initially surprised. I really shouldn't have been, but I was.  &lt;/p&gt;

&lt;p&gt;Anyhow, you can read the interview &lt;a href="https://womeninwebdev.com/blog/karen-carter-female-developer/"&gt;here&lt;/a&gt;. I was very happy to help raise the profile of government jobs, and that Jenny is planning to publish more interviews with devs who are working outside the tech industry. There are so many different kinds of opportunities out there for programmers to work in all different fields, and I think it's really important for people to realize that. Non-profits and healthcare are other fields you might also hear about, but honestly practically any field you can think of will need software developers. My co-worker's brother is a dev for an athletic wear company. One of our former students got a job as a dev working for an airline. Tech, and programming, are everywhere.   &lt;/p&gt;

&lt;p&gt;Also, as a bonus if you've read this far, here are some more things I love about my job (the list was really getting too long so I had to pare it down a bit!):  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I love seeing how our work directly helps our co-workers (and thus the constituents of the state of New Mexico). One of my favorite memories is the time one of our users told us that the new app we created helped her do in one hour what used to take 8 hours. There's no wondering if we're creating something useful around here... We &lt;em&gt;know&lt;/em&gt; our apps are going to help people and make their lives better.&lt;/li&gt;
&lt;li&gt;I love constantly learning new things, both technical and procedural. The department has SO many different areas of responsibility, and new ones are being added all the time. I've learned about egg dealer fees, petroleum lab tests, dairy sampling procedures, all kinds of stuff, not to mention all the different technologies required to create apps for all those different things.&lt;/li&gt;
&lt;li&gt;I love being up-to-date with technology. Government software development has a reputation for being behind the times, but not here. Even the bleeding edge isn't enough for us, sometimes (looking at you, progressive web apps... They're great for consumers of information, but totally inadequate when your users are producing information).&lt;/li&gt;
&lt;li&gt;I love being part of an organization that encourages learning. Since NMDA is part of NMSU, we get 6 free credit hours per semester. I earned my masters while working here, nearly for free, and still regularly take classes. I'm signed up for a block chain class this coming semester, in fact. [That class got cancelled, but I did just finish auditing an applied machine learning class!]&lt;/li&gt;
&lt;li&gt;I love seeing a news story about an NMDA function or going to the gas station and seeing the NMDA sticker on the pump and thinking "I wrote an app for that!"&lt;/li&gt;
&lt;li&gt;This is totally silly, but I love seeing this sign when I'm driving on the interstate. We get our own sign, how cool is that!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-YUDUY_W2Cqw/Xh-uyo7s_zI/AAAAAAAAhQA/ohj84pric5gc1m7mYRwQpSQrV-rrNnQBwCLcBGAsYHQ/s1600/Screenshot%2Bfrom%2B2020-01-15%2B17-28-22.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UrE3hUqQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://1.bp.blogspot.com/-YUDUY_W2Cqw/Xh-uyo7s_zI/AAAAAAAAhQA/ohj84pric5gc1m7mYRwQpSQrV-rrNnQBwCLcBGAsYHQ/s320/Screenshot%252Bfrom%252B2020-01-15%252B17-28-22.png" alt="" width="320" height="261"&gt;&lt;/a&gt;&lt;br&gt;
Basically, I love my job. So much.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
