<?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: Jing</title>
    <description>The latest articles on Forem by Jing (@jingjing142).</description>
    <link>https://forem.com/jingjing142</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%2F384604%2F01127fa6-4788-4c1f-bf27-58df7b4f151d.jpeg</url>
      <title>Forem: Jing</title>
      <link>https://forem.com/jingjing142</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jingjing142"/>
    <language>en</language>
    <item>
      <title>AI for everyone</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Tue, 24 Jan 2023 22:30:08 +0000</pubDate>
      <link>https://forem.com/jingjing142/ai-for-everyone-18h8</link>
      <guid>https://forem.com/jingjing142/ai-for-everyone-18h8</guid>
      <description>&lt;p&gt;This is a summary of the course &lt;a href="https://www.deeplearning.ai/courses/ai-for-everyone/" rel="noopener noreferrer"&gt;AI For Everyone&lt;/a&gt; by Andrew Ng, an entrepreneur, computer scientist, and professor at Stanford University.&lt;/p&gt;

&lt;p&gt;It is designed for anyone who's interested in acquiring a basic understanding of Artificial Intelligence (AI) and what it can or cannot do. It also provides an overview of and some advice on how to approach AI projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Week 1
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is AI?
&lt;/h3&gt;

&lt;p&gt;AI basically refers to the simulation of human intelligence.&lt;/p&gt;

&lt;p&gt;We can further distinguish between&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ANI (artificial narrow intelligence)&lt;/strong&gt; - only does one task, e.g. smart speaker, self-driving car, web search. There has been a lot of advancement in this area in recent years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AGI (artificial general intelligence)&lt;/strong&gt; - can do anything humans can do. There has been almost no progress in this area, and there probably won't be for decades, or even centuries.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Machine Learning&lt;/strong&gt; (ML) is a subset of AI, and deep learning is a subset of ML. Technically, deep learning employs several layers of neural networks, but the two terms are often used interchangeably. Neural networks consist of input, output and a hidden layer in between. That means, you only need to figure out the input and the output and everything in between is handled by itself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supervised Learning&lt;/strong&gt; is the most common form of ML. It maps labelled input to output. Examples include spam filtering where emails are the input and the output is the categorisation of whether or not it is spam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data Science&lt;/strong&gt; (DS) can be viewed as a cross-cutting subset of all these tools. Unlike ML, it is used to drive business insights from data and does not result in a running AI system. However, the terms DS and ML are not used consistently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22y10csr8p0dtovl5pyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22y10csr8p0dtovl5pyb.png" alt="This is an illustration of the previous explanation of the difference between AI, ML, DL/NN and Data Science. You can see four circles. Three of them are stacked. One says AI. Inside AI, there is a circle that says ML. Inside the ML circle there is one that says DL/NN. The DS circle touches all of them, but is outside the AI circle." width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you acquire and use data for ML?
&lt;/h3&gt;

&lt;p&gt;To do any form of ML, you need a dataset. You can download it from websites, acquire it through partnerships, observe behaviours in an existing dataset, or manually label data.&lt;/p&gt;

&lt;p&gt;The two most common mistakes companies make when it comes to data is&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spending too much time collecting data before talking to the AI team&lt;/li&gt;
&lt;li&gt;Assuming that more data is always better&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Andrew suggests that IT departments provide AI teams with data early on to receive feedback that can guide the development of the IT infrastructure. For example, the AI team might suggest that a factory collects data every minute instead of every 10 minutes, so as to build a preventative maintenance system.&lt;/p&gt;

&lt;p&gt;If the data is messy, the output will be too. Common data problems include incorrect labels, missing values, and multiple types of data, e.g. images, audio and text. The latter is also called &lt;strong&gt;unstructured data&lt;/strong&gt;. Data that lives in a spreadsheet is called &lt;strong&gt;structured data&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can ML do?
&lt;/h3&gt;

&lt;p&gt;As a simple rule of thumb, anything you can do with one second of thought can probably now or soon be automated. Examples include speech to text conversion and the visual inspection of defects.&lt;/p&gt;

&lt;p&gt;What it cannot do is analyse a market and write a 50-page report or empathise with people.&lt;/p&gt;

&lt;p&gt;However, the rules for what ML can or cannot do are not hard and fast. Sometimes engineering teams have to conduct a deep technical due diligence for a few weeks to see if something is feasible or not.&lt;/p&gt;

&lt;p&gt;What makes ML easier is a "simple" concept and lots of available data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 2
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do you build AI projects?
&lt;/h3&gt;

&lt;p&gt;ML algorithms can learn input to output or A to B mappings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key steps of an ML project are:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collecting data (e.g. samples of people talking for a smart speaker)&lt;/li&gt;
&lt;li&gt;Training the model, which requires iterations until it is good enough&lt;/li&gt;
&lt;li&gt;Deploying the model (e.g. putting the model in a smart speaker and shipping it)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After deploying the model, you will collect new data, which can then be used to maintain or update the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key steps of a DS project are:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collecting data&lt;/li&gt;
&lt;li&gt;Analysing the data with iterations to get good insights&lt;/li&gt;
&lt;li&gt;Suggesting hypotheses or actions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once the changes are deployed, new data is re-analysed periodically.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you choose an AI project?
&lt;/h3&gt;

&lt;p&gt;Ideally, you select a project at the intersection of what AI can do and what is valuable for the business. This usually involves a cross-functional team of AI experts and domain experts that conduct due diligence.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;technical diligence&lt;/strong&gt; involves questions such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can an AI system meet the desired performance?&lt;/li&gt;
&lt;li&gt;How much data is needed? (depends on the problem)&lt;/li&gt;
&lt;li&gt;What is the engineering timeline?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;business diligence&lt;/strong&gt; involves questions such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How can costs be lowered or revenue increased in the current business?&lt;/li&gt;
&lt;li&gt;Does it make sense to launch a new product or business?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Andrew also recommends conducting ethical diligence, as some projects make sense from a business perspective, but are not good for society.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;brainstorming framework&lt;/strong&gt; that has been effective in the past focuses on&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automating tasks rather than automating jobs&lt;/li&gt;
&lt;li&gt;The main drivers of business value&lt;/li&gt;
&lt;li&gt;The main pain points of the business&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When do you build or buy AI?
&lt;/h3&gt;

&lt;p&gt;While ML projects can be in-house or outsourced, DS projects are commonly done in-house, as it often requires deep day-to-day knowledge of the business.&lt;/p&gt;

&lt;p&gt;A general rule of thumb is to buy things that will be industry standard, and to build things that are specialised to you and allow you to gain a defensible advantage. This is because industry standards will eventually catch up and be built anyways.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you work with an AI team?
&lt;/h3&gt;

&lt;p&gt;To work with an AI team, you need to&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Specify an acceptance criteria (e.g. 95% accuracy)&lt;/li&gt;
&lt;li&gt;Provide AI teams a dataset on which to measure the performance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since the amount of data required depends on the problem, you should ask your technical team how much data is needed. AI teams distinguish between a &lt;strong&gt;training set&lt;/strong&gt; that is used to teach the model, and one or more &lt;strong&gt;test sets&lt;/strong&gt; to check the existing model and its accuracy.&lt;/p&gt;

&lt;p&gt;A pitfall to avoid is to expect 100% accuracy, as there are limitations to ML. Problems include insufficient data, mislabeled data, or ambiguous labels. Some of these can be ameliorated, some can't.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 3
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What makes an AI company?
&lt;/h3&gt;

&lt;p&gt;Not every company that uses AI can be called an AI company. Based on Andrew's definition, AI companies engage in &lt;strong&gt;strategic data acquisition&lt;/strong&gt;. They actively think about how to acquire the data, and might even launch products solely for that purpose. They also invest in a &lt;strong&gt;unified data warehouse&lt;/strong&gt;, apply &lt;strong&gt;automation pervasively&lt;/strong&gt;, and have &lt;strong&gt;new roles&lt;/strong&gt; such as ML engineers and new ways of dividing tasks among team members.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are some common roles in a large AI team?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Product Managers&lt;/strong&gt; and traditional &lt;strong&gt;Software Engineers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML Engineers&lt;/strong&gt; that train and review the model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML Researchers&lt;/strong&gt; that keep up with literature and sometimes publish&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applied ML Scientists&lt;/strong&gt; that are between an ML Engineer and Researcher&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Scientists&lt;/strong&gt; that usually provides business insights from data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Engineers&lt;/strong&gt; who help organise data and ensure it is saved in an easily accessible, secure and cost-effective way&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How can you help your company become good at AI?
&lt;/h3&gt;

&lt;p&gt;Based on his experience leading AI teams, Andrew has developed an &lt;strong&gt;AI Transformation Playbook&lt;/strong&gt; to help companies on this journey.&lt;/p&gt;

&lt;p&gt;Andrew suggests the following steps for a company to become good at AI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execute pilot projects to gain momentum:&lt;/strong&gt; start with an initial project that can succeed and show traction within 6–12 months. It doesn't have to be the most valuable and can be built in-house or outsourced.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build an in-house AI team:&lt;/strong&gt; create a centralised AI team and have members work across business units, so they can develop interesting AI projects together. They could also develop company-wide platforms that can help multiple business units. The new AI function can be under the CTO, CIO, CDO, or a new CAIO.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provide broad AI training:&lt;/strong&gt; not just to engineers, but also managers, division leaders, and executives to learn how to think about AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Develop an AI strategy:&lt;/strong&gt; this is not the first step, as companies who define the strategy before trying out AI tend to end up with very academic strategies. The goal is to leverage AI to create an advantage specific to the sector. Ideally, the strategy is aligned with the "virtuous cycle of AI". This means that better products lead to more users and more data, which is used to improve the model and product, and creates defensibility over time. Andrew also suggests creating a data strategy and taking into account network effects and platform advantages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Develop internal and external communications:&lt;/strong&gt; this includes investor relations, government relations, user education, recruitment, and internal communication around the use of AI and potential worries.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What are some common pitfalls to avoid?
&lt;/h3&gt;

&lt;p&gt;Some common pitfalls include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expecting AI to solve everything:&lt;/strong&gt; instead, be realistic about the limitations of technology, data and engineering resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hiring 2–3 ML engineers and rely on them for use cases:&lt;/strong&gt; instead, pair engineering talent with business talent to work cross-functionally to find feasible and valuable projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expecting the AI project to work the first time:&lt;/strong&gt; instead, plan for the development process to be an iterative one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expecting traditional planning processes to apply without changes:&lt;/strong&gt; instead, work with an AI team to establish a process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thinking you need superstar AI engineers to start:&lt;/strong&gt; instead, keep building the team, but start with the one you have.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What are some common AI application areas and techniques?
&lt;/h3&gt;

&lt;p&gt;Major application areas include &lt;strong&gt;Computer Vision, Natural Language Processing, Robotics&lt;/strong&gt; and &lt;strong&gt;General ML&lt;/strong&gt; with structured and unstructured data. Since structured data tends to be more specific to a single company, the media tends to cover AI progress in unstructured data (images, audio, text) more. But both are creating tremendous economic value today.&lt;/p&gt;

&lt;p&gt;Major AI techniques include &lt;strong&gt;Unsupervised Learning, Transfer Learning, Reinforcement Learning, Generative Adversarial Networks (GANs), and Knowledge Graphs&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Week 4
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are some social and ethical implications of AI?
&lt;/h3&gt;

&lt;p&gt;Andrew rightly points out that the topic of AI and Ethics could be a standalone course. Many of these topics can be discussed in great depth. This is just a quick overview of some considerations and concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hype around AI:&lt;/strong&gt; when discussing AI, there are usually some people who are overly optimistic and believe in superintelligent AI and others who are too pessimistic and think an AI winter is coming. Truth is that AI cannot do everything but it will transform industries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance imitations and explainability:&lt;/strong&gt; apart from the limitations mentioned earlier (e.g. lack of data), the explainability of some high-performing AI systems is still work in progress.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Discrimination and biases:&lt;/strong&gt; AI is biased through the data it receives. Some AI tools apply unhealthy stereotypes and discriminate against groups of people. For example, some hiring tools discriminate against women and some facial recognition software work better for light-skinned than dark-skinned people. There are some technical solutions to this such as using more inclusive data. Some companies have also started introducing auditing processes and focusing on creating more diverse teams to address this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adversarial attacks:&lt;/strong&gt; since AI works differently from humans, almost imperceptible changes to images and other data can confuse the model. This can lead to false results and other undesired effects. Even something as simple as drawing graffiti on a stop sign can lead to it no longer being recognised by AI. There are some defences, but they incur some costs, and we might end up in an arms race to build them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adverse uses:&lt;/strong&gt; some people are using DeepFakes, AI-generated images or videos, and fake comments for malicious purposes, and some governments are using AI for oppressive surveillance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI and developing countries:&lt;/strong&gt; the question is how to ensure that AI creates wealth and uplifts all countries. Some suggestions include contributing to AI communities, focusing on AI to strengthen a country's vertical industries, public-private partnerships to accelerate development, and investment in education. This is because AI is still so immature, which provides plenty of opportunity for new learnings and effective leadership.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI and jobs:&lt;/strong&gt; a McKinsey report estimates that 400–800 million jobs will be displaced and 555–890 million created by 2030. The question is how to navigate the impact of AI on jobs. Some suggestions include introducing a conditional basic income that incentivises learning, building a lifelong learning society, and exploring further political solutions. In response to the question of whether or not to switch jobs, Andrew suggests learning and applying AI on top of one's existing expertise to make oneself more uniquely qualified to do valuable work.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;And that's it. A summary of Andrew Ng's course AI For Everyone. I hope you learnt a thing or two, and that you will continue learning about AI. I certainly will. I wish you happy learning! ✨&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@possessedphotography?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Possessed Photography&lt;/a&gt; on &lt;a href="https://unsplash.com/de/fotos/jIBMSMs4_kA?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>discuss</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Dealing with Imposter Syndrome</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Sat, 04 Dec 2021 19:34:01 +0000</pubDate>
      <link>https://forem.com/jingjing142/dealing-with-imposter-syndrome-449i</link>
      <guid>https://forem.com/jingjing142/dealing-with-imposter-syndrome-449i</guid>
      <description>&lt;p&gt;When I started my first developer role about a year ago, I was both excited and worried. Excited to code on the job, and worried that they'd fire me when they found out that I didn't actually know how to code. &lt;/p&gt;

&lt;p&gt;I had just written my first lines of JavaScript a couple months ago, and the knowledge gaps I had seemed infinite. It felt strange to call myself an Engineer when others who started with me clearly knew so much more than me. &lt;/p&gt;

&lt;p&gt;At first, I attributed these self-doubts and feelings of insecurity to my career change. After all, people's professions often form an important part of their identity, and mine had just changed completely. But over time, I realised that a lot of people around me felt the same, regardless of their background. &lt;/p&gt;

&lt;p&gt;I also realised that there are moments when I feel more like an imposter and moments when I feel less like one. And while I still have self-doubts every now and then, there are some practices that have helped me to feel more confident in my skills over time. So I thought I'd share these with you in the hope that they'll help you too. &lt;/p&gt;

&lt;h2&gt;
  
  
  Recording achievements
&lt;/h2&gt;

&lt;p&gt;I know I have mentioned this one in another post before, but it really helped me a lot. It was actually my manager who suggested I record my achievements when I first started. It was mainly intended to help me pass probation. But it eventually turned into a reassuring habit that also helped me later down the road. &lt;/p&gt;

&lt;p&gt;Looking at my personal achievement sheet from time to time made me realise two things: 1) We forget so much more than we realise, and 2) however little you think you know now, you most likely know more now than you did yesterday. &lt;/p&gt;

&lt;p&gt;You think you'll remember all the amazing things you've done and learnt along the way. But every time I look at my sheet, I stumble upon something I completely forgot about. And it's hard to feel a sense of achievement over something that you don't remember. &lt;/p&gt;

&lt;p&gt;Looking back, I at one point also realised that there are so many things on that list that seem small to me now, but probably wouldn't have to my past self. Thinking about it this way, the sheet highlights all the progress I've made since the very beginning. And that feels very reassuring. To know that however little I think I know, I know more than I did yesterday. &lt;/p&gt;

&lt;h2&gt;
  
  
  Pairing up and asking lots of questions
&lt;/h2&gt;

&lt;p&gt;Pairing up with others is not only fun, but also helps to put things into perspective. Initially, I had a tendency to think that everyone around me knew and understood everything. But while pairing up and asking lots of questions, I slowly realised that that wasn't the case. Instead, every member of our team seems to have their own area of expertise that simply overlaps with that of others. But no person knows it all. &lt;/p&gt;

&lt;p&gt;I still remember pairing up with our lead engineer for the first time. Every time I asked a question, I fully expected him to launch into a lengthy explanation of the details of what I wanted to know. So every time he responded with "I don't know" I felt a strange sense of reassurance. Even after over 10 years of experience in the field, there were things he didn't know. That doesn't mean that he wouldn't be able to find out, but it's a gentle reminder not to put yourself under too much pressure to absorb everything. &lt;/p&gt;

&lt;h2&gt;
  
  
  Treating yourself like your best friend
&lt;/h2&gt;

&lt;p&gt;This is a tip I've come across at one point in my life that I've never forgotten since. When we experience self-doubts, we often engage in negative self-talk. Instead of lifting ourselves up, we tend to enter a downward spiral where we beat ourselves up over the mistakes we have made. We also tend to compare ourselves, which only makes us feel worse. But imagine it wasn't you who was struggling. Imagine it was your best friend. Would you say the same things to them as you would say to yourself?&lt;/p&gt;

&lt;p&gt;If one of your closest friends came to you and said "I can't seem to solve this problem, I'm so bad at coding". Would you discourage them from continuing? Would you dig out whatever doubts they might have shared with you? Would you encourage them to compare themselves to others? I don't think you would... or at least I wouldn't. I'd try my best to remind them of all the progress they've already made and encourage them to take a break before continuing. That's what I'd do. &lt;/p&gt;

&lt;p&gt;For some reason, a lot of us seem to find it easier to be compassionate toward others than ourselves. While I'm not sure why that is, thinking about your closest friends and the way you'd treat them in the same situation might help you to avoid negative self-talk and treat yourself better. &lt;/p&gt;

&lt;h2&gt;
  
  
  Finding a go-to person
&lt;/h2&gt;

&lt;p&gt;I was lucky enough to be assigned a mentor at work that did not only help me become a better developer, but also became a good friend over time. But even if you weren't formally assigned a go-to person, there are still many ways to find one. &lt;/p&gt;

&lt;p&gt;You don't necessarily have to go up to a person and ask them to be your mentor. What you can do is pay attention to the things other people are good at that you'd like to learn and ask to pair up with them on certain tasks. That way, you can also get a sense of how patient they are and how comfortable they are with you asking lots of questions before making them your go-to person. Or at least that's what I did. That way, I actually found myself another person I'd consider a mentor even though we don't have a formal mentoring relationship. &lt;/p&gt;

&lt;p&gt;A go-to person is someone I often turn to for feedback or for questions that I might not feel comfortable asking in a bigger group. &lt;/p&gt;

&lt;p&gt;And if you can't find a person at work or want to find one outside of work, why not try one of the many &lt;a href="https://blog.jingjinghu.com/free-mentoring-platforms-for-developers-and-designers"&gt;free mentoring platforms&lt;/a&gt; out there. &lt;/p&gt;

&lt;h2&gt;
  
  
  Focusing on learning
&lt;/h2&gt;

&lt;p&gt;Or more specifically, focus on learning things that you're curious about. &lt;/p&gt;

&lt;p&gt;This is something I sometimes neglect by accident. But I've noticed that I tend to feel more positive about development and my coding skills more generally when I take the time to explore technologies and frameworks that I'm curious about. They don't necessarily have to have anything to do with work. That's where my problem lies, because I sometimes get so caught up in learning whatever is directly relevant to my work that I spend less time exploring topics that are not. &lt;/p&gt;

&lt;p&gt;But it's important that you do, especially at the beginning of your career, because that's how you find out what you really enjoy and what you'd like to focus on. I can't say that I've been particularly good at it, but I want to make it a priority for 2022. I know, I know it's never too early to start... but mentally, I still find the end of the year a good time to wrap things up and start with somewhat of a fresh mind in the new year. &lt;/p&gt;

&lt;p&gt;Of course it's even better when what you're curious about and want to learn and what you're working on overlap, but that's not always the case. And that's ok. &lt;/p&gt;

&lt;h2&gt;
  
  
  Helping others
&lt;/h2&gt;

&lt;p&gt;And finally, helping others. Whether it's helping new joiners at work or people outside of work - it's a way for you to apply your skills. Even if you think you're not ready for it, there is something you know that another person doesn't. And when you try to help others, you'll find out what it is. &lt;/p&gt;

&lt;p&gt;Of course there will be things that you don't know from time to time, but sharing is not only caring but also a form of learning. Being a buddy at work, for example, does not only remind me of the progress I've made since joining, but also makes me realise where the gaps are that I need to fill. It helps me narrow down what I need to focus on in terms of learning. &lt;/p&gt;

&lt;h2&gt;
  
  
  Concluding words
&lt;/h2&gt;

&lt;p&gt;And that's it. Those are some of the practices that, in hindsight, have helped me to feel less like an imposter. That doesn't mean that I don't experience self-doubts from time to time, but it has definitely helped me to feel more confident in my skills over time. &lt;/p&gt;

&lt;p&gt;Apart from the above and a general willingness to learn and improve, I think that a supportive team is also very important. I consider myself lucky in that regard, but I just wanted to mention this, as I've been in less supportive environments before and have definitely felt the difference. So it's not always you. &lt;/p&gt;

&lt;p&gt;And at this point, I should probably also mention that if you are a more experienced engineer and want to help new starters and career changers feel more comfortable around you, there are two things you can do today: 1) avoid using acronyms or explain them properly the first time you do, 2) say "I don't know... but I'll find out" more often. &lt;/p&gt;

&lt;p&gt;That's it (for real this time). Thanks for reading and have a nice day! 😊&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@timothycdykes?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Timothy Dykes&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/rubber-duck?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>psychology</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>Tips for starting your first developer job</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Tue, 07 Sep 2021 16:58:10 +0000</pubDate>
      <link>https://forem.com/jingjing142/tips-for-starting-your-first-developer-job-2gfe</link>
      <guid>https://forem.com/jingjing142/tips-for-starting-your-first-developer-job-2gfe</guid>
      <description>&lt;p&gt;Last week a new developer started in our team. Even though it's not her first role in engineering, it made me think about my own experience as a new joiner. I had just learnt how to code a couple months before, and it was not only my first job as a developer, but also my first role in tech. &lt;/p&gt;

&lt;p&gt;Looking back, there are some things I would have done exactly the way I did, and others that I would have done differently. So here are some tips for those of you who are about to or have just started your first developer job. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Take notes
&lt;/h2&gt;

&lt;p&gt;This is a piece of advice I came across elsewhere on the Internet that proved to be invaluable. From the moment I walked through the doors of the company, I started to take notes and organise them carefully. I paid particular attention to the engineering workflow, architecture, acronyms, terminal commands, keyboard shortcuts, and anything else that might come in handy. This helped me a lot in getting up to speed, without having to ask my colleagues about things that they had already told me once. &lt;/p&gt;

&lt;p&gt;Being completely new to life as a developer, I literally wrote down the steps I would have to take to get from a ticket to a merged pull request. These included things like creating a branch, starting a simulator, committing my changes, pushing my changes to the remote branch, creating a pull request, and so on. I then used these as a general guide until they became a habit, and noted down the mistakes I made along the way. &lt;/p&gt;

&lt;p&gt;My notes have become a personal documentation tailored to my work that I still refer to now. Even though it might slow you down a bit in the beginning, it really saves you a lot of time later on, as you don't have to ask again and wait for a response. It also makes it easier for you to help other people as you might have exactly the information they need but lost in one of the many messages you exchange at work. And in some cases, you're even able to convert your notes to proper team documentation. &lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Develop a note taking system
&lt;/h3&gt;

&lt;p&gt;Since you will probably not stay at the same company forever, I would suggest using a personal account for note-taking. I have separated company-related information from learning notes, organised by different technologies (e.g. React, TypeScript, GraphQL, and so on). That way, I can easily delete any company-specific information that I might be asked to delete later, but keep my personal knowledge library.&lt;/p&gt;

&lt;p&gt;When it comes to tools, I personally use Notion, but I might migrate my notes to GitHub at some point. GitHub can be used offline, while Notion only works online. It's also free to share your notes with as many people as you want and have them contribute to a set of notes together. Notion requires you to have a team plan for full collaboration. There's a free trial, but once this has been used up, you have to get a subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Scrutinise the codebase
&lt;/h2&gt;

&lt;p&gt;When you're just starting out, there will probably be someone who shows you the codebase and gives you a higher-level overview of how things work. Or at least that's what happened in my case. I then had some time to go over it myself, but since our codebase consisted of a monorepo, basically one huge repository shared between teams, I just skimmed through our feature. I thought I'd get to know the codebase better over time anyways. &lt;/p&gt;

&lt;p&gt;And I did. But in hindsight, there are a lot of questions that popped up along the way, or mistakes that I made that could have been avoided by taking a proper look at the codebase. So if I were to start again, I would spend more time doing that. For example, by going over the whole flow of the product in the simulator or on the web, and really trying to understand how the data travels through the codebase and ends up where it's supposed to be. &lt;/p&gt;

&lt;p&gt;Be critical and keep asking yourself why things are done in a particular way. This does not only help you get used to reviewing other people's code, but it also helps your team identify potential issues with the code. I was quite shy to do that in the beginning, as I often just assumed that it was somehow my problem that I couldn't understand parts of the code. But whenever I did ask, it usually turned out that that part of the code was either deprecated, superfluous or not very readable in the first place. &lt;/p&gt;

&lt;p&gt;It also helps to take a proper look at the &lt;code&gt;package.json&lt;/code&gt;, which usually lists all dependencies and scripts that you can use. It helps to understand which other teams interact with your feature and vice versa, and also familiarises you with some scripts that you can use in your daily work. Some of my teammates weren't aware of some of these useful scripts either, so this is also another way to be helpful. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Ask thoughtful questions
&lt;/h2&gt;

&lt;p&gt;When I first started, I had a lot of questions. And lucky for me, I was assigned a buddy and mentor that I could ask these questions. And in most cases, she knew the answer. This was great, but I later realised some things that I could have done better. &lt;/p&gt;

&lt;p&gt;Before I started, I asked her what tech stack the team worked with, so I could do some preparation. This question I would simply have asked earlier, as I only thought of it like two weeks before I joined when I was busy organising my move to Berlin. So I caught up on some stuff later, but it helps to read at least an intro to the technologies you've never worked with before. &lt;/p&gt;

&lt;p&gt;When it comes to code-related questions, I initially often focused on what I wanted to do rather than what I had already done. But this would often lead to suggestions I had already tried. So now, I always tell people straight away 1) what I'm trying to do, 2) what is not working, 3) what I have already tried, and then ask my question. This saves time and makes it easier for people to help you.&lt;/p&gt;

&lt;p&gt;When it comes to team practices or company-specific information, I could have asked more often where my buddy got the information from. Because I later realised that some of the questions I asked were already well-documented. As a new starter, I just didn't know where to find them. &lt;/p&gt;

&lt;h2&gt;
  
  
  4. Avoid context switching
&lt;/h2&gt;

&lt;p&gt;I think one of my biggest misconceptions about life as a developer was the assumption that developers spend most of their day coding. And in some places that might be exactly what they do. But in bigger companies, you will most likely spend a significant amount of time in meetings, waiting for your build to complete, waiting for code reviews, waiting for another team to get back to you, waiting for the designer to comment, and so on. &lt;/p&gt;

&lt;p&gt;This can lead to a lot of disruptive context switching. Things like the review process, the design handoff process and the amount of meetings you have will probably also depend on your team. But there are also some things you can do to try to avoid it. &lt;/p&gt;

&lt;p&gt;These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;asking to be marked optional in non-essential meetings &lt;/li&gt;
&lt;li&gt;declining optional meetings, especially if they're recorded&lt;/li&gt;
&lt;li&gt;blocking out some focus time in your calendar &lt;/li&gt;
&lt;li&gt;scheduling your learning sessions at the start or end of the day&lt;/li&gt;
&lt;li&gt;collecting stakeholder questions and asking them at once&lt;/li&gt;
&lt;li&gt;only joining messaging channels you really need&lt;/li&gt;
&lt;li&gt;if you use Slack, turn on Do Not Disturb mode &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While I realise that these suggestions might not work for everyone, they helped me reduce the amount of context switching I do. In the beginning I attended every meeting I was invited to, regardless of whether or not my input was necessary. I thought this would help me get a better overview over everything, but instead it often ended up draining me. So I hope you can be smarter than me and start prioritising sooner 🤓&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Join or create study groups
&lt;/h2&gt;

&lt;p&gt;This one I have to mention with a word of caution, because if you're anything like me, you might be tempted to join 50 study groups at the same time. Study groups really helped me stay consistent and finish bigger projects like passing the AWS Certified Developer - Associate exam. But they can also be distracting if you don't organise your time accordingly. That's why I am now only part of exactly one study group, and why I schedule my learning sessions either at the start or the end of the day. &lt;/p&gt;

&lt;p&gt;We get a Udemy Business subscription at work. Most companies have some form of learning budget, so you'll probably also have access to some learning platform. In the beginning, I started studying some topics by myself, but I rarely finished them. All the Udemy courses I have completed so far were part of some study group. It really helps because you feel a sense of responsibility and have people who hold you accountable. &lt;/p&gt;

&lt;p&gt;That's why I recently started my own study group. I created a learning path that I shared with others on a similar level as me and a Notion space that lists the to-dos for the week. That's also where we collect possible questions for discussion that might come up during our self-studies. We agreed on the course we want to do, and have weekly check-ins. It's not been long since we started this, but it's going well so far. So if I were to start again, I would try to form a study group from the get-go.&lt;/p&gt;

&lt;p&gt;It's also helpful to be able to apply your knowledge straight away, so you might want to discuss your learning plan with your manager or mentor at work. That way, you can align it with the tickets you're working on. For example, shortly after starting to learn TypeScript, I converted some of our JavaScript files to TypeScript. I could then use the issues I encountered as a basis for further learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Record your achievements
&lt;/h2&gt;

&lt;p&gt;This is probably one of the most important tips here. It's a suggestion that my manager made when I first started. And I'm very glad that I took it more seriously than he had initially meant. Because it did not only make it easier for my manager to make a case for me passing probation, but it also helped me feel less like a fraud. I will probably write a separate article on imposter syndrome at some point, but either way, make sure to record your achievements. &lt;/p&gt;

&lt;p&gt;There is just so much you do in your daily life that you simply forget. And at one point you might be standing there, looking back and wonder what you actually did. That has happened to me a lot since I first started working as a developer about a year ago. There are moments where you might doubt your skills and feel like you're not learning fast enough. Or moments where it seems like everyone else knows so much more than you. And that's when your achievement sheet can remind you of all the things you've done and learnt, and all the progress you've made since walking through the door. &lt;/p&gt;

&lt;p&gt;In my case, I just opened a Google doc that I called "my achievements" and noted down every ticket I worked on and what I learnt in a particular month. While quantity is not as important as quality, I also recorded the number of the ticket I was working on, as it felt like a personal milestone to me. In the first six months, I would also write a short summary every two months. I organised my achievements in reverse chronological order with the most recent work on top.&lt;/p&gt;

&lt;p&gt;Recording my achievements is actually something I wish I had done much sooner in my career. It only takes a couple minutes a day to write some bullet points of what you did and what you learnt. But you can use it well beyond your current job. It does not only serve as a means to motivate and encourage yourself, but also helps to refine your CV, to talk about the things you've done at interviews, and to make a case for yourself more generally. And it helps your manager too. Because a good manager wants you to succeed, but is often preoccupied with their own work and career. &lt;/p&gt;

&lt;p&gt;So it's not only a means of advocating for yourself, but also makes it easier for others to do so. Depending on what you've done, you can also share some achievements publicly to inspire others at some point, as I have seen some people do before. &lt;/p&gt;

&lt;h3&gt;
  
  
  And that's it.
&lt;/h3&gt;

&lt;p&gt;Those are the tips I have for people who are about to or have just started their first developer job. I hope that they help at least some of you 😊 And finally, good luck and much success to those of you just starting out. You can do it 💪🏼&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@dtravisphd?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;David Travis&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/taking-notes?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
      <category>womenintech</category>
    </item>
    <item>
      <title>Create your own Dockerfiles, Images and Containers</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Mon, 30 Aug 2021 20:49:21 +0000</pubDate>
      <link>https://forem.com/jingjing142/create-your-own-dockerfiles-images-and-containers-47mm</link>
      <guid>https://forem.com/jingjing142/create-your-own-dockerfiles-images-and-containers-47mm</guid>
      <description>&lt;p&gt;In the first part of this series, I described what Docker is and how it works. &lt;/p&gt;

&lt;p&gt;To recap, Docker is a service that helps us package and isolate our code in containers. &lt;strong&gt;Containers&lt;/strong&gt; are standardised, independent units of software and running instances of images. They contain our code and all required dependencies. &lt;strong&gt;Images&lt;/strong&gt; are read-only templates for containers that are built by the Docker Engine and based on Dockerfiles. &lt;strong&gt;Dockerfiles&lt;/strong&gt; are text files that you write that include all the commands needed to build a specific image in the order in which they should be executed.&lt;/p&gt;

&lt;p&gt;Now that we've covered the most fundamental Docker concepts, let's take a look at how you can create your own Dockerfiles, images and containers, assuming you've already installed Docker on your machine. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a Dockerfile
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;To create your own Dockerfile, simply start by creating a file named Dockerfile 😄 It doesn't have an extension and shouldn't include one. 
&lt;/li&gt;
&lt;li&gt;If you want to create a base image, one that isn't based on an existing image, start by writing
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM scratch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, most images are based on a base image, also called a &lt;strong&gt;parent image&lt;/strong&gt; for that particular image. Since the exact process for a base image will depend on what you want to package, we will focus on creating an image with a parent image. If your code is written in Node.js, for example, you'd start by writing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol start="3"&gt; &lt;li&gt;Then you specify the requirements needed for your image, using further commands. A full list of commands and their meaning can be found &lt;a href="https://docs.docker.com/engine/reference/builder/"&gt;here&lt;/a&gt;. &lt;/li&gt;
&lt;/ol&gt;


&lt;ol start="4"&gt; &lt;li&gt;You usually end a Dockerfile with a command that will run when a container is started based on the image.&lt;/li&gt;
&lt;/ol&gt;  If you'd like to run &lt;code&gt;app.js&lt;/code&gt; in the container, for example, you'd write&lt;br&gt;&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CMD ["node", "app.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you specify several &lt;code&gt;CMD&lt;/code&gt;, only the last one will be executed. If you specify none, the &lt;code&gt;CMD&lt;/code&gt; of the parent image will be executed.&lt;/p&gt;



&lt;p&gt;An example Dockerfile for a simple node application might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node &lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app &lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; ./someFolder /app &lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; 

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 80 &lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["node", "app.js"] &lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;FROM&lt;/code&gt; specifies the base image or parent image, in this case &lt;code&gt;node&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;WORKDIR&lt;/code&gt; tells Docker that all subsequent commands should be executed inside a particular folder, in this case the &lt;code&gt;app&lt;/code&gt; folder, including &lt;code&gt;COPY&lt;/code&gt; and &lt;code&gt;RUN&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COPY&lt;/code&gt; copies the content of one folder into a folder in the image file system, in this case it will copy the contents of &lt;code&gt;someFolder&lt;/code&gt; into the &lt;code&gt;app&lt;/code&gt; folder. If the &lt;code&gt;app&lt;/code&gt; folder doesn't exist yet, it will be created in the image file system. What you specify depends on which files on your local machine you want to go into the image&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RUN&lt;/code&gt; specifies the command that will be run when the image is created, in this case &lt;code&gt;npm install&lt;/code&gt; to install all the dependencies of your node application&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;EXPOSE&lt;/code&gt;, as you might have guessed it, exposes a specific port in the Docker container, in this case port 80, which can be accessed by a local machine&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CMD&lt;/code&gt; makes sure &lt;code&gt;node server.js&lt;/code&gt; will be run when a container is started&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to create Images and Containers
&lt;/h2&gt;

&lt;p&gt;Once we have written a Dockerfile, we can run &lt;code&gt;docker build&lt;/code&gt; in the terminal, along with the path or url where the Dockerfile is located. This command tells the Docker Engine to build a custom image based on the Dockerfile. The image is built with a specific id that you can use to run a container based on the image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Images
&lt;/h3&gt;

&lt;p&gt;To build an image, use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &amp;lt;file or url of Dockerfile&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Images are read-only. That means that you need to rerun the &lt;code&gt;docker build&lt;/code&gt; command and rebuild your image if you've made any changes to your Dockerfile. &lt;br&gt;&lt;br&gt; The order of the commands in a Dockerfile matter, because images are layer-based. When you build an image, every command in the Dockerfile creates a new image layer and the result of each command is cached, so it's not rerun if nothing changes. If you modify the port in the Dockerfile above, for example, by writing &lt;code&gt;EXPOSE 50&lt;/code&gt; instead of &lt;code&gt;80&lt;/code&gt; everything before that command will not be rerun. &lt;br&gt;&lt;br&gt; You can also tag an image by using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; name:tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might want to use tags to version your images, though they can be used for all kinds of purposes. &lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Containers
&lt;/h3&gt;

&lt;p&gt;To run a container based on an image, use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &amp;lt;image &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use &lt;code&gt;--name&lt;/code&gt; to name your containers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--name&lt;/span&gt; &amp;lt;your chosen container name&amp;gt; &amp;lt;image &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't, Docker will assign a random name for you. &lt;br&gt;&lt;br&gt;
You can also run Docker containers on a specific port. If we want to use port 3000 on our local machine to access port 80 in the Docker container that we specified in the Dockerfile above, for example, we could write&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:80 &amp;lt;image &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;p&lt;/code&gt; stands for publish.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to manage Images and Containers
&lt;/h2&gt;

&lt;p&gt;After creating some images and containers, you might want to manage or delete them. Here are some common commands that will help you do that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Managing Images
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;To list all locally stored images, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker image &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To rename an existing image, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker tag &amp;lt;old name&amp;gt; &amp;lt;new name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To inspect an image use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker image inspect &amp;lt;image &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To remove an image, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker rmi &amp;lt;image &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please note that images belonging to a container, whether running or not, cannot be removed. To remove those images, you need to remove the corresponding containers first. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To remove all unused images, you can run
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker image prune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to remove all images, including tagged ones, use the &lt;code&gt;-a&lt;/code&gt; flag with this command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Managing Containers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;To see all running containers, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;ps&lt;/code&gt; stands for processes. If you want to see both running and stopped containers, you can run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;a&lt;/code&gt; stands for all. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To stop a container, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker stop &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're in a hurry, you can also use &lt;code&gt;docker kill&lt;/code&gt;, which will stop the container immediately instead of giving it some time to shut down gracefully. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If nothing has changed, you can restart your container by running
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker start &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A difference between &lt;code&gt;docker run&lt;/code&gt; and &lt;code&gt;docker start&lt;/code&gt; is that the former runs the container in attached mode by default. This means that the container is started in the foreground and the output is printed in the terminal, which you cannot use at the same time. &lt;code&gt;docker start&lt;/code&gt; on the other hand, starts the container in detached mode, so it's running in the background and you can still use your terminal. &lt;br&gt;&lt;br&gt; To attach a running container that you started in detached mode, simply run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker attach &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to restart a container in attached mode, simply run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker start &lt;span class="nt"&gt;-a&lt;/span&gt; &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly, you can also use the &lt;code&gt;-d&lt;/code&gt; flag for detached with the &lt;code&gt;docker run&lt;/code&gt; command.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To run a container in interactive mode (if your programme requires user input for example), use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;-i&lt;/code&gt; stands for interactive, and &lt;code&gt;-t&lt;/code&gt; basically for the terminal.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To remove containers that are not running, you can use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can remove several containers at the same time by listing several container ids or names while leaving a space between them like so&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt; &amp;lt;container &lt;span class="nb"&gt;id &lt;/span&gt;or name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To remove containers automatically after they are stopped, use the &lt;code&gt;--rm&lt;/code&gt; flag.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sharing Images on Docker Hub
&lt;/h2&gt;

&lt;p&gt;To share your images on Docker Hub, use &lt;code&gt;docker login&lt;/code&gt; to log in to the default Docker Hub repository or to a specific registry, and &lt;code&gt;docker push &amp;lt;image id or name&amp;gt;&lt;/code&gt; to upload your image to the Docker Hub. To use an image from the Docker Hub, simply run &lt;code&gt;docker pull &amp;lt;image id or name&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When you use &lt;code&gt;docker run &amp;lt;image id or name&amp;gt;&lt;/code&gt; and you don't have a local image with that name, Docker will automatically pull the latest version from Docker Hub. If you do, Docker will not check that it's the latest version, so to ensure that it's the most recent version, you need to pull it from Docker Hub first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;And that's it. Those are all the commands you need to create, manage and delete some images and containers, and to share your images on Docker Hub. I realise that it's quite a lot and I might create a summarising cheatsheet at some point, but this is it for now.&lt;/p&gt;

&lt;p&gt;If you're new to Docker, I'd suggest creating a simple sample application in a language you're familiar with and playing around with the Docker commands above.&lt;/p&gt;

&lt;p&gt;Happy dockering! 🐳&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@phoebe_dill?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Phoebe Dill&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/whale?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>Docker - What it is and how it works</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Fri, 27 Aug 2021 07:19:11 +0000</pubDate>
      <link>https://forem.com/jingjing142/intro-to-docker-part-1-35l8</link>
      <guid>https://forem.com/jingjing142/intro-to-docker-part-1-35l8</guid>
      <description>&lt;p&gt;When I first started working as a developer, Docker seemed to be everywhere. I kept hearing docker this docker that, and often had to run some docker commands to get things working. But I didn't actually know what exactly Docker was, so I spent some time learning about it, and here is what I learnt.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;Docker is a service that helps us package and isolate our code in containers, so you can run it on different machines. It's like putting everything in your house into a huge shipping container with all that is needed to use your stuff. It doesn't matter where the container is, you will be able to use the things inside the container the same way you would in your house. &lt;/p&gt;

&lt;p&gt;This is important in software development, because you develop applications in a specific environment, and what works on your machine might not work on another. Your code might run perfectly on your computer, but stop working on your friend's. If, for example, your code is written in Node.js, the reason might be as simple as them having a different version of Node installed that is incompatible with the one you used.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Docker helps us create and manage  &lt;strong&gt;containers&lt;/strong&gt;. Containers are standardised, independent units of software that we can run. Modern operating systems have built-in support for containers, and technically, we don't need Docker to create containers, but it's a tool that makes it much easier for us to do so. &lt;/p&gt;

&lt;p&gt;Containers are running instances of &lt;strong&gt;images&lt;/strong&gt;. Images are like read-only templates for containers. They contain our code and all required tools, and we can create multiple containers based on the same image. &lt;/p&gt;

&lt;p&gt;Images are based on &lt;strong&gt;Dockerfiles&lt;/strong&gt;. Dockerfiles are text files that specify the requirements for a specific image and include the commands a user can run in the terminal to build it. Images can be stored and shared in repositories on &lt;strong&gt;Docker Hub&lt;/strong&gt;, which is a hosted registry and like a GitHub for Docker images. &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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629791087946%2FuXswXR5-8.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629791087946%2FuXswXR5-8.png" alt="Docker.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Containers differ from Virtual Machines
&lt;/h3&gt;

&lt;p&gt;Docker containers are sometimes compared to virtual machines, as they also provide an isolated environment for your code. But unlike containers, virtual machines contain their own operating system. It's like another computer running on your computer that takes up space on your hard drive and can therefore be quite slow. While the environment configurations for virtual machines can be shared and reproduced, this can sometimes be quite troublesome.&lt;/p&gt;

&lt;p&gt;Containers run on top of the &lt;strong&gt;Docker Engine&lt;/strong&gt;. The Docker Engine is a technology that takes care of the containerisation of your applications. It is a client-server application, which consists of three components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A &lt;strong&gt;client&lt;/strong&gt;, the Docker CLI, which allows us to interact with Docker using the command line. &lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;REST API&lt;/strong&gt; that sends our commands from the client to a server, which can be a local or remote machine. &lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;server&lt;/strong&gt;, a local or remote machine that has the Docker daemon running. The Docker daemon, also called dockerd, listens for API requests and manages Docker objects such as images and containers. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While Docker containers can contain an operating system layer on top of the Docker Engine, it's usually much more lightweight than that of a virtual machine. This makes containers faster than virtual machines.&lt;/p&gt;

&lt;p&gt;However, Docker containers are stateless by default. If you don't connect them to a persistent storage, your session data will be lost with the removal of the container. Virtual machines can be both stateful or stateless.&lt;/p&gt;

&lt;p&gt;The diagram below illustrates the difference between a virtual machines and a Docker containers. A Hypervisor is a software that creates and runs virtual machines. The Bins / Libs layer provides the software libraries and services needed for the app to run. &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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629821408357%2FmHUCoixZG.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629821408357%2FmHUCoixZG.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Docker is a service that helps us package and isolate our code in containers. &lt;strong&gt;Containers&lt;/strong&gt; are standardised, independent units of software and running instances of images. &lt;strong&gt;Images&lt;/strong&gt; are based on &lt;strong&gt;Dockerfiles&lt;/strong&gt; and created by the Docker daemon, which is part of the Docker Engine. Images are stored and shared on &lt;strong&gt;Docker Hub&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Unlike virtual machines, Docker containers do not contain a separate operating system and are stateless by default.&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@phoebe_dill?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Phoebe Dill&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/whale?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>How I passed the AWS Certified Developer exam</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Tue, 24 Aug 2021 07:07:17 +0000</pubDate>
      <link>https://forem.com/jingjing142/how-i-passed-the-aws-certified-developer-exam-35ii</link>
      <guid>https://forem.com/jingjing142/how-i-passed-the-aws-certified-developer-exam-35ii</guid>
      <description>&lt;p&gt;This week I took and passed the AWS Certified Developer – Associate exam 🥳 Since then, some people have asked me which resources I used, so I thought I'd spend some time writing about my experience and approach, including the resources I used. &lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you're completely new to the cloud, I suggest you start with &lt;a href="https://www.digitalocean.com/community/tutorials/a-general-introduction-to-cloud-computing"&gt;this article&lt;/a&gt;. It's a general introduction to cloud computing that tells you what it actually is and something about its history, benefits and drawbacks. &lt;/p&gt;

&lt;p&gt;After that, it's good to spend some time on the &lt;a href="https://aws.amazon.com/getting-started/fundamentals-core-concepts/?e=gs2020&amp;amp;p=fundoverview&amp;amp;p=gsrc&amp;amp;c=fo"&gt;AWS Fundamentals course&lt;/a&gt; to go over some core concepts and mental models that AWS is built on, which I wish I had done before I had dived into the material below. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Course
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/?couponCode=AUG_21_GET_STARTED"&gt;The AWS Certified Developer Associate course&lt;/a&gt; by Stephane Maarek &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exam was part of an AWS study group at work, and this is the course that it was structured around. The course is divided into around 30 sections based on different AWS services and each section consists of a theoretical part and a hands on session. There is also a practice exam at the end, along with some tips to pass the exam.&lt;/p&gt;

&lt;p&gt;Initially, I followed the pace of the study group by going over around 3h of video material a week, but I and some others eventually fell behind. We still had bi-weekly meetings, where we would discuss the topics we had learnt, but I ended up going over a lot of the material at once in several days instead of gradually week by week. &lt;/p&gt;

&lt;p&gt;If you have the time, I would strongly encourage you to spread it out more, and set smaller goals like one section or one service a week. That way you will have more time to explore a particular service and the concepts associated with it in detail before moving onto the next one.&lt;/p&gt;

&lt;p&gt;If you have less time or are more of a text-based learner, I would suggest going over the lecture slides instead of the videos. The instructor follows the slides quite closely and most of the added context comes from the hands on sessions rather than the theoretical lessons. &lt;/p&gt;

&lt;h2&gt;
  
  
  Practice Exams
&lt;/h2&gt;

&lt;p&gt;After completing the course above, I went over two sets of full practice exams, and an official Pearson VUE practice exam.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/aws-certified-developer-associate-practice-tests-dva-c01/"&gt;Practice Exams&lt;/a&gt; by Stephane Maarek &amp;amp; Abhishek Singh&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/aws-developer-associate-practice-exams/"&gt;Practice Exams&lt;/a&gt; by Neal Davis &amp;amp; Digital Cloud&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pearson VUE practice exam - you can request a free voucher &lt;a href="https://pages.awscloud.com/Globa_traincert_Get_AWS_Certified_Developer_Associate.html"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both sets of practice exams are quite good and include detailed explanations as to why an answer is correct and why the others are wrong. There also some repeating questions, but most are unique. Comparing them, I'd say that the first set by Stephane and Abhishek was slightly more difficult. But I could be biased as I did those first and was already familiar with the format when I did the second set. Both sets provided a great preparation for the actual exam.&lt;/p&gt;

&lt;p&gt;It took me around 30-45 minutes to do one practice exam, and I spent a considerable amount of time going over my mistakes afterwards. On Udemy, you can filter your responses to show only the incorrect ones. The explanations also reference the official AWS documentation, so you can continue reading if you need more details. &lt;/p&gt;

&lt;p&gt;I found the practice exams quite difficult and failed most of them on my first attempt. This got me really worried about failing the actual exam, so don't feel discouraged if that happens to you too. I just retook the practice exams I failed until I scored above 80% in all of them. While going over my mistakes, I didn't only pay attention to the correct answer, but also as to why the others were wrong. This helped me eliminate some answers more easily going forward, which also benefitted me in the actual exam.&lt;/p&gt;

&lt;p&gt;The Pearson VUE practice exam only included around 20 questions instead of 65, and no explanations at the end. But it familiarised me with the setup that I had in the actual exam, which included the ability to flag questions to come back to at the end. &lt;/p&gt;

&lt;h2&gt;
  
  
  Cheat Sheets
&lt;/h2&gt;

&lt;p&gt;I used these AWS cheat sheets to review important concepts and details. I only came across them later, after I had already done some practice exams, but I would suggest going over them before you do the practice exams.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://digitalcloud.training/certification-training/aws-developer-associate/"&gt;AWS Certified Developer Cheat Sheets&lt;/a&gt; by Neal Davis &amp;amp; Digital Cloud&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://tutorialsdojo.com/aws-cheat-sheets/"&gt;AWS Cheat Sheets&lt;/a&gt; by Tutorials Dojo&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I primarily used the first set of cheat sheets, but also looked at some of the latter ones. Digital Cloud has several sets of cheat sheets tailored to different exams, so their set is really tailored towards the AWS Certified Developer exam. They also include exam tips that I've found very helpful, as they highlight some details you need to know.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Website
&lt;/h2&gt;

&lt;p&gt;And finally, the official &lt;a href="https://aws.amazon.com/"&gt;AWS website&lt;/a&gt;. I used the documentation, FAQs sites and whitepapers as a reference and went over the AWS Certified Developer exam guide and sample questions &lt;a href="https://aws.amazon.com/certification/certified-developer-associate/"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;A couple of hours before the exam I also went over &lt;a href="https://dannys.cloud/7-tactical-tips-aws-certification-exam"&gt;this article&lt;/a&gt; by Danny Steenman on some tactical tips to increase your chances of passing the exam. Mainly because I was nervous, but I found it quite helpful. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;And that's it. These are all the resources I've used to prepare for the exam. Overall, it took me around a month of study, a couple hours every evening, to prepare for the exam. But as mentioned, I would highly suggest spreading it out over a longer period. &lt;/p&gt;

&lt;p&gt;Hope that's helpful. Good luck and much success to those of you who are preparing for the exam right now. You can do it 💪🏼&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@dallasreedy?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Dallas Reedy&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/clouds?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>My favourite free resources for learning how to code </title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Fri, 13 Aug 2021 18:45:20 +0000</pubDate>
      <link>https://forem.com/jingjing142/my-favourite-free-resources-for-learning-how-to-code-2ama</link>
      <guid>https://forem.com/jingjing142/my-favourite-free-resources-for-learning-how-to-code-2ama</guid>
      <description>&lt;p&gt;Since switching careers from politics to software engineering, some people have asked me how I learnt to code. At some point I noticed that I just kept repeating myself, so I've decided to write it all down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Before diving into it at the time, I did some quick research on what you actually need to learn to become a developer. For the web, the answer was pretty much &lt;strong&gt;HTML, CSS and JavaScript&lt;/strong&gt;. So that is what I started with.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.khanacademy.org/computing"&gt;Khan Academy&lt;/a&gt; - I went over the AP/College Computer Science Principles section to learn more about the foundations of computer science and programming.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codecademy.com/"&gt;Codecademy&lt;/a&gt; - I took the HTML, CSS and JavaScript courses. Their explanations are quite clear and they generally try to visualise where they can.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.sololearn.com/"&gt;SoloLearn&lt;/a&gt; - A learning platform with bitesized lessons, little quizzes and challenges for all kinds of languages. You can collect points and level up as you complete more lessons. There is a web and app version. I used the app on the go to revise my knowledge of HTML, CSS and JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/"&gt;freeCodeCamp&lt;/a&gt; - I did the Responsive Web Design certification, and most of the JavaScript Algorithms and Data Structures section. Don't feel intimidated if you're just starting out. It took me some time to solve my very first algorithmic challenge. If you get stuck, the best thing to do is to take a break, and then write down what you want to do and break it into little steps on a piece of paper. Talking it through with another person is also really helpful. FreeCodeCamp also has an active &lt;a href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ"&gt;YouTube channel&lt;/a&gt; and a &lt;a href="https://discord.gg/KVUmVXA"&gt;Discord server&lt;/a&gt; that you can join.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.theodinproject.com/"&gt;The Odin Project&lt;/a&gt; - This is my favourite. I started with The Odin Project after having spent some time on Codecademy and freeCodeCamp, but it eventually became my main resource. It's a open source curriculum for learning fullstack development with JavaScript or Ruby on the backend. The Odin Project requires you to set up your own environment, which can feel daunting at first, but it's a great step towards coding your first project :) They also have an active &lt;a href="https://discord.com/invite/fbFCkYabZB"&gt;Discord server&lt;/a&gt; where you can find study buddies and share your progress with fellow learners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whilst these were the main resources I've used to get started and returned to throughout, there are many more websites that I found very helpful.&lt;/p&gt;

&lt;h3&gt;
  
  
  For CSS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://flexboxfroggy.com/"&gt;Flexbox Froggy&lt;/a&gt; - A game for learning Flexbox&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cssgridgarden.com/"&gt;Grid Garden&lt;/a&gt; - A game for learning CSS Grid&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/"&gt;CSS Tricks&lt;/a&gt; - A great resource for more in-depth information and helpful tricks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS"&gt;MDN Dev Docs - CSS&lt;/a&gt; - Also a great reference, but not as visual as CSS Tricks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/"&gt;Frontend Mentor&lt;/a&gt; - Website for frontend challenges. They provide you with the requirements and images if needed and you try to code the project as best as you can. Once you submit your solution, the community can provide you with feedback. You can also comment on other people's solutions. I used one of the free challenges to practice my CSS skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://javascript30.com/"&gt;Wes Bos JavaScript 30&lt;/a&gt; - Thirty fun little projects to learn JavaScript&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascript.info/"&gt;JavaScript.info&lt;/a&gt; - JavaScript tutorials that I used for some topics&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyA"&gt;Traversy Media&lt;/a&gt; - YouTube channel with lots of great intros&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UClb90NQQcskPUGDIXsQEz5Q"&gt;Dev Ed&lt;/a&gt; - Another great YouTube channel &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw"&gt;Web Dev Simplified&lt;/a&gt; - Aaand another one (on YouTube)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UC5DNytAJ6_FISueUfzZCVsw"&gt;Code with Ania Kubów&lt;/a&gt; - Aaand another one (seriously YouTube is amazing for learning). Ania has lots of tutorials for coding cool games like Mario with JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://eloquentjavascript.net/"&gt;Eloquent JavaScript&lt;/a&gt; - A well-written book about JavaScript with helpful exercises&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md"&gt;You don't know JS&lt;/a&gt; - A book series to learn more about the weird parts of JavaScript&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodeschool.io/#workshoppers"&gt;Node School&lt;/a&gt; - Tutorials for learning Node.js (JavaScript on the backend). If you get stuck, you can consult this &lt;a href="https://joecreager.com/learnyounode-unofficial-companion/"&gt;unofficial guide&lt;/a&gt; for explanations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide"&gt;MDN Dev Docs - JavaScript Guide&lt;/a&gt; - For reference&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Coding Challenges
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codewars.com/"&gt;CodeWars&lt;/a&gt; - Fun way to practice your JavaScript skills. You start at level 8kyu and work your way up to 1kyu as you solve coding challenges and gain points. You can filter challenges by languages and difficulty level. Make sure not to rush through it, but take time to understand why your solution works (or doesn't work). After you've solved a challenge, you can view other people's solutions. Comparing solutions is very helpful in understanding what works and what doesn't. Be careful not to confuse the highest voted or shortest solution with the best one. Pairing on challenges and discussing solutions can be very helpful here. Or &lt;a href="https://blog.jingjinghu.com/free-mentoring-platforms-for-developers-and-designers"&gt;finding a mentor&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many more code challenge websites out there like &lt;a href="https://www.coderbyte.com/"&gt;CoderByte&lt;/a&gt;, &lt;a href="https://www.hackerrank.com/dashboard"&gt;HackerRank&lt;/a&gt;, &lt;a href="https://leetcode.com/"&gt;LeetCode&lt;/a&gt;, and &lt;a href="https://exercism.io/"&gt;Exercism&lt;/a&gt;, but I started with CodeWars and somehow it just stuck.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Computer Science
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x"&gt;Harvard's CS50 Intro to Computer Science&lt;/a&gt; - I started with this one, but never finished it. The lecturer is great though, and there are several specialisation courses you can take afterwards if you're more of a university-style learner. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://missing.csail.mit.edu/"&gt;The Missing Semester of Your CS Education&lt;/a&gt; - I did the first six sections or so with a particular focus on the command line (don't worry if this doesn't tell you anything right now, but if you want to find out more, you can read about it &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Command_line"&gt;here&lt;/a&gt;) . This is also where I learnt what I currently know about vim (including how to exit it :D). Vim is a code editor that you can navigate using your keyboard only. Some people love it, some hate it, because it's not necessarily very intuitive for everyone... that's why there are jokes about not being able to exit vim :P&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gitlab.com/slackermedia/bashcrawl"&gt;BashCrawl&lt;/a&gt; - A game to learn how to use the command line. Not technically a Computer Science course, but can be used in conjunction with the previous course to practice your command line skills. You need to know how to clone a repository for this one, which you can learn as part of &lt;a href="https://www.theodinproject.com/paths/foundations/courses/foundations/lessons/git-basics"&gt;The Odin Project&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For entire curricula, you can take a look at &lt;a href="https://github.com/ossu/computer-science"&gt;Open Source Society University&lt;/a&gt; (mostly online courses) or &lt;a href="https://teachyourselfcs.com/"&gt;Teach Yourself Computer Science&lt;/a&gt; (mostly books). I haven't gone through them yet, but I think they serve as a nice reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free Bootcamps
&lt;/h3&gt;

&lt;p&gt;Technically, not all of the below are resources I've used, but since some people have asked me about being self-taught vs. going to a bootcamp, I thought I'd list some free bootcamps I know. While App Academy for example is technically a paid bootcamp, their curriculum is freely available online and can give you a sense of whether you'd like to attend a bootcamp or not.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://fullstackopen.com/en/"&gt;Full Stack Open&lt;/a&gt; - A fullstack course by the University of Helsinki. The content is the same as the one taught at their Department of Computer Science. If you follow the timeline and complete the course, including exercises, you can earn a certificate. Finnish participants are also guaranteed interviews with the programme's corporate partners. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://open.appacademy.io/"&gt;App Academy Open&lt;/a&gt; - Uses the same resources as the paid content, but with less support (without live lectures, graded assessments, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rithmschool.com/courses"&gt;Rithm School&lt;/a&gt; - Free courses by a paid bootcamp.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://frontendfoxes.school/"&gt;Front-End Foxes&lt;/a&gt; - For women, by women. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.classcentral.com/report/webdev-bootcamp/"&gt;Class Central&lt;/a&gt; - Free, online and open to all. Structured around freeCodeCamp's web development certification.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://tutorials.codebar.io/"&gt;Codebar&lt;/a&gt; - Not technically a bootcamp, but the community holds regular workshops and also has an active &lt;a href="https://slack.codebar.io/"&gt;Slack channel&lt;/a&gt; and &lt;a href="https://discord.com/invite/fwjmg2k"&gt;Discord server&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.foundersandcoders.com/"&gt;Founders &amp;amp; Coders&lt;/a&gt; - Non-profit in London. You need to do quite some pre-work to apply, but I've only heard good things about it so far. I went to some of their open sessions to do some of the pre-work with others. During the pandemic, their cohort was online. I think they're back to in-person cohorts but I thought I'd list them anyways.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://openclassrooms.com/en/"&gt;Open Classrooms&lt;/a&gt; - Distance learning platform registered with the Board of Education in Paris. They offer a lot of free courses in English and French as well as paid training programmes in web development.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For more resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://hackr.io/"&gt;Hackr.io&lt;/a&gt; - You can find both paid and free resources for all kinds of languages on here, including JavaScript. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bento.io/tracks"&gt;Bento&lt;/a&gt; - Learning paths for different topics, including JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. I hope this list is helpful for at least some of you. If you're completely new to coding, I would suggest focusing on one resource first and consulting others as you try to learn more. Jumping between websites can actually be quite distracting, or at least it was for me. &lt;/p&gt;

&lt;p&gt;Also remember that you don't need to know it all. As someone who's now working as a developer, I can tell you that there's a lot I learnt during my self-studies that I don't actively use at work, and a lot that I only learnt on the job. So the best strategy in my eyes is still to get the fundamentals right, build some projects, and then apply for jobs, so you can start learning by doing as soon as possible. That way, you'll find out sooner what you want to focus on, as there is simply too much for one person to know it all. &lt;/p&gt;

&lt;p&gt;So happy learning! You can do it! 💪🏼&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@aaronburden?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Aaron Burden&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/books?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>resources</category>
      <category>learning</category>
    </item>
    <item>
      <title>From politics to programming: how I changed careers during the pandemic</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Fri, 01 Jan 2021 15:35:44 +0000</pubDate>
      <link>https://forem.com/jingjing142/from-politics-to-programming-how-i-changed-careers-during-a-pandemic-bap</link>
      <guid>https://forem.com/jingjing142/from-politics-to-programming-how-i-changed-careers-during-a-pandemic-bap</guid>
      <description>&lt;p&gt;I knew 2020 would be different. Because unlike other years, this one started with a resignation. After almost three years working in politics and policy in London and Beijing, I decided to call it quits; say goodbye to a career I had been working towards for years. It wasn't an easy decision to make, to leave a job without another one lined up, or even a proper plan. But I felt relieved when I finally handed in that resignation. My goal? To transition to a career in tech.&lt;/p&gt;

&lt;p&gt;Moving into tech had been in the back of my mind since living in Beijing three years ago and being surrounded by a vibrant tech community. There is just so much you can do, even without any coding skills. But back then, everything was still new and it felt too early to make a decision. Now that I had already worked at different organisations in politics before, in the public, private and non-profit sector, it was time to try something new.&lt;/p&gt;

&lt;p&gt;So there I was a few weeks later: bags packed, unemployed and full of hope. I moved from London back home, to a small town in southern Germany. I wanted to take a break before embarking on my career changing venture. But what came next probably sounds all too familiar: more and more countries in Europe started closing their borders. People were urged to stay at home. Hospitals were overwhelmed. A pandemic was raging and taking lives around the world. &lt;/p&gt;

&lt;p&gt;How I felt? Probably like much of the rest of the world: anxious, worried, and stuck. I mean, what do you do when you just quit your job and are confronted with news of a pandemic, a declining economy and mass unemployment? Well... first, you take a moment to acknowledge that you probably didn't choose the best time to make a 180 degree switch in your career. Second, you realise that timing is not a decisive factor. Third, you pull yourself together. &lt;/p&gt;

&lt;h2&gt;
  
  
  Where there's a will, there's a way
&lt;/h2&gt;

&lt;p&gt;So here is what I did. The very first step I took was simply to get my day-night-rhythm back in order. Wake up at a reasonable hour, and go to bed around midnight. It sounds odd to even mention it, but I think a lot of people underestimate the importance of essentials like sleep and food. I also dressed properly, took regular walks and stopped watching the news. Because by then, corona was pretty much all you would hear. And you didn't need to be a fortune teller to know that things weren't going to change anytime soon.&lt;/p&gt;

&lt;p&gt;Before quitting my job, I had done my fair share of research. I looked at possible roles, career paths, schooling options, and attended tech and startup-focused events. I did so to get a sense of the industry and the way it was heading. After researching the field and assessing my skills and interests, I narrowed it down to UX/UI design and software development. I wanted to work in teams to solve human-centred problems, acquire skills applicable to different domains, and write at least some code.  &lt;/p&gt;

&lt;p&gt;But I didn't know which one it was going to be. At the time, I had only touched HTML and CSS and just started to learn JavaScript. Throughout this period, I also read other people's career changing stories, which helped me to stay motivated. While reading those stories, I realised that there was also a lot of switching between roles in tech. And some unicorns did both code and design. So I decided to try both. After all, you won't know until you try. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Art of Do-It-Yourself
&lt;/h3&gt;

&lt;p&gt;What I did next is what lots of people do when they don't really know what to do: google my way through the internet. And googling I did. I started with freeCodeCamp and The Odin Project, but kept switching forth and back between different sources. From Codeacademy to Codewars to SoloLearn, Skillshare, Treehouse, the Interaction Design Foundation, Youtube and whatever other resource I could find. It's insane how much information is out there. But it can also be quite overwhelming.&lt;/p&gt;

&lt;p&gt;After some time, I had read and seen so much that I thought I kinda knew what I was doing. I had experimented with Figma, Photoshop, Illustrator, learned about Git and Github, set up a development environment, solved some JavaScript problems. I was kinda heading in the right direction. Except that I felt stuck at the basics. I tried to create a curriculum for myself, but couldn't quite stick to it. So in the end, I narrowed down my main focus to three resources: The Odin Project, the Interaction Design Foundation and Skillshare. &lt;/p&gt;

&lt;p&gt;While going through these resources, I somehow got hooked. I was building projects as part of The Odin Project when I found myself thinking more about coding problems than design questions. By then, I was no longer following a set schedule – I coded when I felt like it and took a break when I felt like I needed it. I also tried creative classes beyond product design. But I still finished one coding project after another until I had a handful to show on Github. They were simple, but presentable. And a way for me to measure my progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  It's a People World
&lt;/h3&gt;

&lt;p&gt;At the same time, I started talking to more and more people in tech. Since I didn't really know anyone in software development or UX/UI design before my career change, I started looking for online communities to join early on. I became part of whatever tech-related group I could find on Slack and Discord, reached out to people, and attended online events. I also found myself a pair programming buddy through the Odin community and joined a study group through a supportive and helpful fellow learner (thanks Ciaran!).&lt;/p&gt;

&lt;p&gt;Those communities are also how I found out about my current job and other opportunities. A recruiter posted the ad in a Slack channel I was part of and I reached out to see if they would also consider self-taught people. There was an initial chat with this recruiter and other people and before I knew it, I was in the midst of several application processes. During this time I also received a scholarship for a new online coding bootcamp, the Coyotiv School of Engineering. Even though I managed to secure job offers before class started, I loved being part of the community.&lt;/p&gt;

&lt;p&gt;Since joining Klarna as a software engineer, some people have reached out to me to ask about my career change. And a common question that I get is "how did you know you were ready to apply?". But truth is, I never really felt ready, and I still don't. If I had waited until I felt ready, I might never have applied. I just kept going until I felt like I had enough evidence to prove that I am serious about this career switch, and then I just talked to people. Because after all, we live in a people's world, and your attitude and willingness to learn matters. It's not all about your technical skills, but also about you as a potential colleague.&lt;/p&gt;

&lt;h2&gt;
  
  
  A New Beginning
&lt;/h2&gt;

&lt;p&gt;And that's my story: how I went from political and security analyst to software engineer in 2020. &lt;/p&gt;

&lt;p&gt;Now I can officially call myself a software engineer. But that's just the beginning. I still have a lot to learn and am grateful to Klarna for giving me the opportunity to grow as part of an amazing team. I hope that this story helps at least some people the way all those career changing stories out there helped me. Thanks for stopping by and happy new year! ✨&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@tateisimikito?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Jukan Tateisi&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/kid-stairs?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>womenintech</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Free mentoring platforms for developers and designers</title>
      <dc:creator>Jing</dc:creator>
      <pubDate>Tue, 30 Jun 2020 17:39:44 +0000</pubDate>
      <link>https://forem.com/jingjing142/free-mentoring-platforms-for-developers-and-designers-33i</link>
      <guid>https://forem.com/jingjing142/free-mentoring-platforms-for-developers-and-designers-33i</guid>
      <description>&lt;p&gt;As a career changer, I have spent a lot of time googling my way through coding resources. And if you are part of the DEV community, you probably have too. There are loads of articles on how to learn to code, and sites like &lt;a href="https://hackr.io/"&gt;&lt;b&gt;Hackr&lt;/b&gt;&lt;/a&gt; and &lt;a href="https://bento.io/tracks"&gt;&lt;b&gt;Bento&lt;/b&gt;&lt;/a&gt; make it easy to find resources based on topics and tools.&lt;/p&gt;

&lt;p&gt;But what about mentoring? If there is one thing I wish I had had at the start of my developer journey, it would have been a mentor. But finding one is actually not an easy task, especially if you come from a different field. That's why I have compiled a list of free mentorship platforms for developers and designers – to make it easier for others to find one when they need it. &lt;/p&gt;

&lt;h2&gt;&lt;b&gt;List of Free Mentoring Platforms&lt;/b&gt;&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;a href="https://www.get-merit.com/"&gt;&lt;b&gt;Merit&lt;/b&gt;&lt;/a&gt; - a coaching platform with automatic scheduling. You can filter coaches based on fields of expertise or themed playlists (e.g. launching side projects, dealing with imposter syndrome). When you first log in they offer you a list of recommendations based on your needs. It's quite US and Canada-focused, but hopefully that will change over time.&lt;/li&gt;  

&lt;li&gt;
&lt;a href="https://codingcoach.io/"&gt;&lt;b&gt;Coding Coach&lt;/b&gt;&lt;/a&gt; - a platform that provides you with the contact details of coaches. You can filter based on name, country, language, and technology. It also has an active slack channel.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://adplist.org/"&gt;&lt;b&gt;ADPList&lt;/b&gt;&lt;/a&gt; - a mentoring platform for designers. You can filter mentors based on country, languages and expertise (e.g. AR/VR Design, UX Design, Design Writing). According to their website, there are over 1000 registered mentors from around the world.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://www.designed.org/"&gt;&lt;b&gt;Designed&lt;/b&gt;&lt;/a&gt; - a platform primarily for designers that provides you with the contact details of mentors. You can filter based on topics or tools, location, time zone, language, and gender. It also has an active slack channel.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://www.re-create.com/mentors/"&gt;&lt;b&gt;Re-create&lt;/b&gt;&lt;/a&gt; - a mentoring platform for creatives. You can filter mentors based on role and country. You have to submit a mentor request through the website. It asks you for the length of the session (3, 6, 9, or 12 months), your reason for wanting to work with a particular mentor, and an example of your work. Due to high demand, you can only submit one request per day.&lt;/li&gt;

&lt;li&gt;
&lt;a href="http://officehoursproject.com/"&gt;&lt;b&gt;Office Hours&lt;/b&gt;&lt;/a&gt; - a mentoring website for designers. There are only a handful of mentors so far, and they all seem to be based in the US. But you can book a meeting directly via Calendly, or reach them on Twitter or LinkedIn. 

&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mentoring.design/"&gt;&lt;b&gt;Mentoring.Design&lt;/b&gt;&lt;/a&gt; - a mentoring platform for designers in Berlin. They are not currently accepting new mentees, but it might be worth keeping an eye on if you're interested.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://mentorcruise.com/"&gt;&lt;b&gt;Mentor Cruise&lt;/b&gt;&lt;/a&gt; - general mentoring platform that includes both paid and free mentorship. You can browse mentors based on name, tags, skills, main focus, services, price and availability.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://weareshesays.com/advocacy/whos-your-momma/"&gt;&lt;b&gt;She Says&lt;/b&gt;&lt;/a&gt; - a mentorship scheme for women in the UK creative industry.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://ambitiousladiesin.tech/"&gt;&lt;b&gt;Ambitious Ladies in Tech&lt;/b&gt;&lt;/a&gt; - a mentoring programme for women working at tech startups in London with less than 3 years of experience. The minimum commitment is 12 months.&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://www.builtbygirls.com/about-wave"&gt;&lt;b&gt;Built By Girls&lt;/b&gt;&lt;/a&gt; - a mentorship programme for female and non-binary students between the age of 15-22. They are US-based, but also offer remote mentoring.&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;&lt;b&gt;Other helpful websites&lt;/b&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://exercism.io/"&gt;&lt;b&gt;Exercism&lt;/b&gt;&lt;/a&gt; - a platform for coding challenges that offers reviews by mentors.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/"&gt;&lt;b&gt;Frontend Mentor&lt;/b&gt;&lt;/a&gt; - a website with frontend challenges. Once you submit your solution, you can receive feedback from other developers in the community. It also has an active slack channel.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://elpha.com/"&gt;&lt;b&gt;Elpha&lt;/b&gt;&lt;/a&gt; - a social and professional network for women in tech. It's a great platform for sharing and exchanging experiences, and CEOs and CTOs regularly offer office hours for any questions you might have.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope that was helpful. Feel free to message me if there are any great mentorship platforms or programmes that I've missed. &lt;/p&gt;

&lt;p&gt;And if you are looking for other online mentoring platforms (tech and non-tech, free and paid), take a look at &lt;a href="https://www.growthmentor.com/blog/online-mentoring-platforms-software/"&gt;&lt;b&gt;this list&lt;/b&gt;&lt;/a&gt; from Growth Mentor.&lt;/p&gt;

&lt;p&gt;Cover image by &lt;a href="https://unsplash.com/@christinhumephoto?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Christin Hume&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/writing?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>mentorship</category>
      <category>codenewbie</category>
      <category>womenintech</category>
    </item>
  </channel>
</rss>
