<?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: Kyam</title>
    <description>The latest articles on Forem by Kyam (@kyam).</description>
    <link>https://forem.com/kyam</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%2F58904%2Fd09fafb5-0cb3-43c2-b1fd-a6411e585d2f.png</url>
      <title>Forem: Kyam</title>
      <link>https://forem.com/kyam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kyam"/>
    <language>en</language>
    <item>
      <title>Laravel: Bind an interface based on request parameters</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Thu, 26 Nov 2020 05:07:05 +0000</pubDate>
      <link>https://forem.com/kyam/laravel-how-to-bind-an-interface-based-on-request-parameters-dp5</link>
      <guid>https://forem.com/kyam/laravel-how-to-bind-an-interface-based-on-request-parameters-dp5</guid>
      <description>&lt;p&gt;Recently at work, we encountered a problem that I couldn't find a solution to anywhere. So I thought I'd share our process and solution to help anyone else who might come across the same problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;We have an application with a small set of users. For reasons I won't go in to, if one user hits a certain Service class, we wanted the service to call one of its dependencies, DependencyA. However if any other user came through we needed the service to use DependencyB. The service looked something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private $depA;
private $depB;

public function __construct(DependencyA $depA, DependencyB $depB)
{
    $this-&amp;gt;depA = $depA;
    $this-&amp;gt;depB = $depB;
}

public function buildRequest(Request $request, string $user)
{
    if ($user === 'userA') {
        $stuff = $this-&amp;gt;depA-&amp;gt;doThing($request);
    } else {
        $stuff = $this-&amp;gt;$depB-&amp;gt;doThing($request);
    }

    return response()-&amp;gt;json($stuff);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which looks reasonably neat. However, the problem for us lay in the fact that in no scenario will both of this classes dependencies be used - UserA will hit depA but never depB, and UserB will hit depB but never depA.&lt;/p&gt;

&lt;p&gt;Ideally we want a scenario where the service only knows about the dependencies it needs for a given operation. We could implement a separate route, and service, for the two user groups, but we felt we could fix this with a code solution with minimal duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Only care about interfaces
&lt;/h2&gt;

&lt;p&gt;So, where do we start? Well, both dependencies do a similar job, just different results, they both have the method &lt;code&gt;doThing&lt;/code&gt;. So we could make them both implement a shared interface and type hint our service dependency by the interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private $depA;

public function __construct(Thingable $depA)
{
    $this-&amp;gt;depA = $depA;
}

public function buildRequest(Request $request)
{
    $stuff = $this-&amp;gt;depA-&amp;gt;doThing($request);

    return response()-&amp;gt;json($stuff);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neater, right? Or at least less code.&lt;br&gt;
Previously, when our service needed DependencyA and DependencyB, the Laravel IoC container would find those concrete classes and inject them into our service. However, now we only type hint by the Thingable interface, how does Laravel know what to inject? Somewhere, based on the request params, we need to tell it something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;App::bind(
    'App\Thingable', \\ The interface we want to bind to
    'App\DependencyA' \\ The implementation - or DependencyB.
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point it is worth knowing that the users name is being discerned by the URL they are hitting, eg &lt;code&gt;api/kyam/url&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So we need to do the above somewhere where&lt;br&gt;
a) we have access to the Application and&lt;br&gt;
b) we have access to the request parameters.&lt;/p&gt;
&lt;h2&gt;
  
  
  What we tried
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Middleware
&lt;/h3&gt;

&lt;p&gt;We currently have some middleware that checks for the user name, so maybe we could hook into that flow and set the binding at that time?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function handle($request, Closure $next)
{
    $userName = $request-&amp;gt;user_name;

    if ($userName === 'userA') {
        App::bind(
            'App\Thingable',
            'App\DependencyA'
        );
    } else {
        App::bind(
            'App\Thingable',
            'App\DependencyB'
        );
    }
    return $next($request);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, while we definitely have access to the user name here, we had problems setting anything with the application. It seemed like the App hadn't booted up yet, and so we couldn't set anything up on it. This makes sense, because we are in Middleware, which all happens before we hit the actual application, so it stands to reason that we can't access application code yet. Moving on.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Service Provider
&lt;/h3&gt;

&lt;p&gt;This is where you are supposed to set your application bindings, in the register method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function register()
{
    $userName = $request()-&amp;gt;user_name;

    if ($userName === 'userA') {
        App::bind(
            'App\Thingable',
            'App\DependencyA'
        );
    } else {
        App::bind(
            'App\Thingable',
            'App\DependencyB'
        );
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we definitely have the ability to set Application Bindings, so no problem there. However, getting parameters off of the request proved to be a problem. A &lt;a href="https://laracasts.com/discuss/channels/laravel/get-route-params-in-service-provider"&gt;Laracasts thread&lt;/a&gt; from 4 years ago suggested some solutions, but we couldn't get any of them to return us what we needed, and so this solution wouldn't work for us either.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controller
&lt;/h3&gt;

&lt;p&gt;Next, as a bit of a stab in the dark to get something working, we tried to set dependencies in the Controller before the code hit our Service. This did not work. The problem here was that the Controller depended on the Service, and the Service depended on a Thingable which wasn't bound yet, and so the Application struggled to load before we could set our dependency. We were in last chance saloon, and soon we were going to have to revert to our two-dependency solution we started with, for fear of dumping endless time into an unfixable problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Service Provider, Revisited
&lt;/h3&gt;

&lt;p&gt;Looking on the Laravel docs, we found out about &lt;a href="https://laravel.com/docs/8.x/container#contextual-binding"&gt;Contextual Binding&lt;/a&gt;. We weren't sure that this would work, but we were willing to try anything at this point! Our code looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function register()
{
    $this-&amp;gt;app-&amp;gt;when(Service::class)
        -&amp;gt;needs(Thingable::class)
        -&amp;gt;give(function () {
            return request()-&amp;gt;user_name === 'userA'
                ? $this-&amp;gt;app-&amp;gt;get(DependencyA::class)
                : $this-&amp;gt;app-&amp;gt;get(DependencyB::class);
        });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What is this doing? It is setting that when the App needs to make a Service class that needs a Thingable, run the following callback function. This will then do our user check logic, and return the correct dependency.&lt;/p&gt;

&lt;p&gt;This worked. Why? Well, I don't really know. I presume that we are running this after the app is booted, and so &lt;code&gt;request()&lt;/code&gt; returns us what we expect. But we haven't constructed the &lt;code&gt;Service&lt;/code&gt; class yet in our code, and so we are able to make changes to its dependencies. This is also nice because we are still able to set these dependencies where we are supposed to, in the AppServiceProvider.&lt;/p&gt;

&lt;p&gt;And that's it! Hopefully this is helpful to anyone else who might find themselves in this situation, but going through this problem helped me understand how Laravel dependencies are loaded and hopefully it did you too.&lt;/p&gt;

&lt;p&gt;And if anyone has any more details to fill in the &lt;code&gt;I don't really know why...&lt;/code&gt; bits of this, or another approach to solving this problem I'd love to learn more!&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Advice to myself a year ago</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Tue, 11 Jun 2019 19:05:36 +0000</pubDate>
      <link>https://forem.com/kyam/advice-to-myself-a-year-ago-1na6</link>
      <guid>https://forem.com/kyam/advice-to-myself-a-year-ago-1na6</guid>
      <description>&lt;p&gt;Hey, it’s me - &lt;strong&gt;you&lt;/strong&gt; a year in the future! I know, you've just finished your coding bootcamp and that previously your experience with programming wasn't much grander than getting your laptop to run “Hello, world” in Python, but soon you will accept your first job as a programmer - and you’re going to love it! You're going to do a great job, but you could have done &lt;em&gt;even better&lt;/em&gt;, and so I thought I’d pass on to you the gift of hindsight to help you make the most of your first year in the industry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get stuck in&lt;/strong&gt; - You're not going to get a job at a brand-new startup, so you are going to have to get to grips with some ☠️&lt;em&gt;legacy code&lt;/em&gt; ☠️. It can be a staggeringly difficult to navigate your way around, while keeping in mind what you have found and what you are looking for (and why you ever even started...). It can be &lt;em&gt;incredibly&lt;/em&gt; daunting to look at the hundreds of lines of code, and it’s &lt;em&gt;entirely&lt;/em&gt; natural to feel overwhelmed. The only way to get over this is to get stuck in -  start wading your way through (by yourself, where you can), trying your best, and you'll get used to the code and how it has been written - you will soon realise that you know more than you thought you did.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get bored&lt;/strong&gt; - Read my blog post &lt;a href="https://dev.to/kyam/the-importance-of-being-bored-3fb4"&gt;here&lt;/a&gt; about why I think it is important to allow your mind to wander. The TLDR is: &lt;em&gt;try and let your brain recover by giving it some time, every day, of peace where your mind isn't getting saturated by podcasts, twitter or reddit.&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Get bored and let yourself relax for a bit.&lt;/em&gt;&lt;/strong&gt; It has done wonders for my state of mind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get feedback from your peers&lt;/strong&gt; - You are going to join a team where your colleagues have a &lt;em&gt;lot&lt;/em&gt; more experience than you. Rather than feel disheartened or discouraged by this, you should make the most of this opportunity and take advantage of their knowledge. Try and expose yourself to their skills by teaming up for some pair-programming, ask them for some feedback on your approach by regularly asking for it, and (more importantly than &lt;em&gt;anything&lt;/em&gt; else) get them to review your code. Having your code reviewed not only gives you confidence that you aren’t going to break the product, it also lets you know where your shortfalls are and gives you an opportunity to know how your colleagues would approach problems in ways different to your own. It can be quite easy to be offended initially, or take code review comments as a criticism of something that you have created, but it’s important to view the code not as your baby but as something that your whole team are working together to create and perfect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Give yourself a break&lt;/strong&gt; - Programming is hard, and no-one knows everything. It’s really important to acknowledge this early, as you will be working with people who know a lot more than you which can lead to you feeling inferior or that you aren’t actually good enough (also known as imposter syndrome - something I’m not going to try and get into, but &lt;a href="https://twitter.com/KyamLeigh/status/1096866850414170112"&gt;these&lt;/a&gt; blog posts might help you feel a little better about it). Remember that you are &lt;em&gt;brand new&lt;/em&gt; to this, and still learning, and at some point in the past those really experienced  guys in your team were also in this position once and they made it - so can you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Look stupid&lt;/strong&gt; - So, you hate asking questions that you know everyone else already knows the answer to, and you don’t want to waste everyone’s time (or look stupid) by speaking up. The thing is, no-one cares to remember you asking that question, and may actually respect you more for having the guts to speak up. Also the chances are good that someone else in the room doesn’t know either and you are helping them out as well as yourself. So ask, fill your knowledge gap and potentially unwittingly help someone else who is afraid to speak up. If I still haven't convinced you, make notes throughout the day of anything you didn't understand and read up about it when you get a chance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don’t put off starting that project&lt;/strong&gt; - It’s really easy to think up that cool project you’d love to start but can't shake the “I’ll just wait until I know &lt;em&gt;(insert technology here)&lt;/em&gt; better”. By the time you know &lt;em&gt;that technology&lt;/em&gt; better, you’ll also want to perfect your &lt;em&gt;other tech skill&lt;/em&gt; too, and you’ll never get there. Just dive in and start something; you'll probably realise that you need to know more about &lt;em&gt;yet another technology&lt;/em&gt; along the way anyway - but at least you will have started something and know exactly where you need to focus your energy and time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plan your study time&lt;/strong&gt; - One thing that I wish I had done early on is to plan what I was going to study. I’m really lucky that my workplace offers specific training time each quarter, and one thing that I do now is plan out specifically what I am going to use that for a year (or more) in advance. This means that I have to know where I want to be and what I want to know a year in advance and means that I don’t bounce between learning technologies that might not actually help towards my long-term goals. This also allows me to plan any out-of-work reading that I want to do to support these quarterly sessions. Also don't get caught in a tutorial trap, where all you do is learn the basics of something shiny and new - put those skills into practise and &lt;strong&gt;make something yourself.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So enjoy the next year - it isn't going to be easy, but you are going to learn more than in any year since you left school and have an incredible time along the way - make the most of it!&lt;/p&gt;

</description>
      <category>advice</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The importance of being bored</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Wed, 10 Apr 2019 19:02:16 +0000</pubDate>
      <link>https://forem.com/kyam/the-importance-of-being-bored-3fb4</link>
      <guid>https://forem.com/kyam/the-importance-of-being-bored-3fb4</guid>
      <description>&lt;p&gt;For a long time I thought that an important part of working in tech meant that &lt;em&gt;everything&lt;/em&gt; I did now had to be about tech. Subscribe to programming subreddits, listen to coding podcasts, be (doing nothing, probably) on my laptop all evening - basically fill my brain to the brim with nothing but technology and screen time. &lt;/p&gt;

&lt;p&gt;Then one day I listened to an amazing (and yet, apparently impossible to find) podcast in which the guest proposes that in our modern world we never let ourselves get bored - we take &lt;em&gt;any&lt;/em&gt; opportunity to cram a constant stream of content in through our eyes and our ears.&lt;/p&gt;

&lt;p&gt;By occupying our minds every second of the day, we never give our brains time to rest. In boredom, our minds are able to wander and process and make plans - this is when we are able to do our most creative and original problem solving, and many of us &lt;em&gt;never&lt;/em&gt; let this process happen regularly. They suggest that by not getting bored enough, we could be making ourselves ill.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Not me”&lt;/em&gt;,  I thought listening to this. Until I looked at how every day panned out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6am&lt;/strong&gt; - &lt;em&gt;Wake up, listen to a podcast whilst in the shower. Watch television until leaving for work&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;7am-8am&lt;/strong&gt; - &lt;em&gt;Listen to a podcast, browse Reddit during commute&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;8am-4pm&lt;/strong&gt; - &lt;em&gt;Screen time at work&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;4pm-5pm&lt;/strong&gt; - &lt;em&gt;Listen to a podcast, browse Reddit during commute&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;5pm-7pm&lt;/strong&gt; - &lt;em&gt;Time with kids, music or radio on in the background (with a little screaming)&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;7pm-9pm&lt;/strong&gt; - &lt;em&gt;Television, browse social media&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;9pm-10pm&lt;/strong&gt; - &lt;em&gt;Browse reddit before bed&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not for a &lt;em&gt;single moment&lt;/em&gt; was I allowing myself to be bored. Not for a &lt;em&gt;second&lt;/em&gt; was I taking time to be away from some form of media or noise. And I could feel it - in my head, towards the end of the work day I would feel a little overwhelmed and I didn’t know why. Not long into the afternoon I was finding it difficult to concentrate, and (as I was brand new to my role) I was being trained up by my colleagues and it &lt;em&gt;just wasn’t sticking&lt;/em&gt;. Also, my mind would drift off in meetings and I would snap back, having &lt;em&gt;no&lt;/em&gt; idea what had been discussed for the last few minutes. It was &lt;em&gt;actively&lt;/em&gt; affecting my mind and wellbeing, and I was attributing it to not being smart or capable enough to do my job. It was pushing me into &lt;a href="https://dev.to/daraghjbyrne/how-to-beat-impostor-syndrome-and-stop-feeling-like-a-fake-18m8"&gt;imposter syndrome&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I decided to do something about it. I’m very lucky that part of my commute includes a 15 minute walk along a leafy footpath, bordered by trees and only occasional traffic. I began by &lt;em&gt;militantly&lt;/em&gt; not allowing myself to use my headphones in between leaving the bus and getting to the office. It gave me at least half an hour a day where I could get bored, and be forced to think about what I wanted to achieve that day or further in the future, or who I needed to get back in contact with, or any number of things that previously would have been ignored for a podcast. It gave me some time in the day to relax in the sounds of nature.&lt;/p&gt;

&lt;p&gt;Not long after I found that I was remembering a lot more of those things that my colleagues were teaching me. My productivity didn’t wane in the afternoon any longer, and I noticed that I was able to focus much more during meetings (well, depending on the meeting). I also found that when I got to work I already had an idea of what I wanted to achieve that day. I wasn't overwhelmed at the end of the day. Overall, my mind felt much clearer. &lt;/p&gt;

&lt;p&gt;All it took was to take some time to let myself be bored.&lt;/p&gt;

&lt;p&gt;So maybe have a look at when your mind gets time to wander each day. If, like me, it’s nowhere near enough, consider putting down your phone, taking out your earbuds and spending some time in the analogue world. It’s a small change that, for me, made a massive impact.&lt;/p&gt;

&lt;p&gt;(Check out the awesome &lt;a href="https://www.wnyc.org/series/bored-and-brilliant"&gt;Bored and Brilliant podcast&lt;/a&gt; by Note to Self , in which a group of participants try to reduce their exposure to their mobile phones. I do see the irony of a blog post asking you to put down your phone then recommending a podcast...)&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>wellbeing</category>
      <category>advice</category>
      <category>discuss</category>
    </item>
    <item>
      <title>MVP AF</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Sat, 03 Mar 2018 21:43:58 +0000</pubDate>
      <link>https://forem.com/kyam/mvp-innit--1b67</link>
      <guid>https://forem.com/kyam/mvp-innit--1b67</guid>
      <description>&lt;p&gt;So week 3 of Mayden Academy is over, and this week was our first full beginning-to-end site build. We were asked to design &amp;amp; create a portfolio website to showcase our skills to prospective employers, the coolest thing being that this was our first real implementation of Scrum from sprint planning to sprint retrospective, and all of the actual work in between. Also using Git within the context of an actual project made it seem a lot less scary (even if some of us had issues which had to be solved with...dark arts).&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Hard stuff&lt;/u&gt;&lt;br&gt;
I found the design aspect really challenging. Not only did I find it difficult to just to put pen-to-paper and decide on a wireframe, about halfway through the sprint I realised that I needed something very different to my design and spent about 15 minutes figuring out if I could start again (which, of course, I couldn't). So I had to carry on unhappy with it. &lt;/p&gt;

&lt;p&gt;&lt;u&gt;Good stuff&lt;/u&gt;&lt;br&gt;
As much as I struggled with the design, I learned a lot from it (and let's be honest, that's why I'm at the academy). I tried to cram content into every part of the page, rather than exploit space &amp;amp; images, and also figured that it &lt;i&gt;wouldn't&lt;/i&gt; be an absolute pain-in-the-arse to use portfolio images of varying sizes and aspects (of course it was). Also, I know that next time I'll try and make  my initial page responsive to as many different screen sizes as possible &lt;em&gt;before&lt;/em&gt; using a ton of media queries.&lt;/p&gt;

&lt;p&gt;Other 'Good stuff' was that the team really embraced Scrum: nobody worked in their own world, we shared ideas &amp;amp; problems and the burden of code review was truly shared across the whole team. It was a refreshing way of working, and felt collaborative rather than competitive.&lt;/p&gt;

&lt;p&gt;So overall some good stuff, some hard stuff, but we're still learning and growing and I can't wait to see what the next 13 weeks hold for us. And as much as I wasn't happy with my design, I still ended up satisfying all of the requirements. MVP, innit.&lt;/p&gt;

&lt;p&gt;In scary news, at the end of this week we will already be a &lt;em&gt;QUARTER&lt;/em&gt; of the way through...&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>scrum</category>
      <category>career</category>
    </item>
    <item>
      <title>The first two weeks at Mayden Academy</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Mon, 26 Feb 2018 21:13:39 +0000</pubDate>
      <link>https://forem.com/kyam/the-first-two-weeks-at-mayden-academy--3i14</link>
      <guid>https://forem.com/kyam/the-first-two-weeks-at-mayden-academy--3i14</guid>
      <description>&lt;p&gt;I've &lt;a href="https://dev.to/martycrane/the-start-of-a-new-journey--khl"&gt;previously alluded&lt;/a&gt; to the fact that I caused myself a lot more grey hairs in the weeks leading up to my time with the &lt;a href="https://maydenacademy.co.uk/" rel="noopener noreferrer"&gt;Mayden Academy&lt;/a&gt; than I really needed to; in fact the first 2 weeks have been (reasonably) relaxed. Sure, there's been a lot of content to cram in but Charlie and &lt;a href="https://dev.to/mporam"&gt;Mike&lt;/a&gt; (the two chaps who are running it) have let us learn at our own pace, leaving us plenty of time to ask questions &amp;amp; put into practice what we've been soaking up.&lt;/p&gt;

&lt;p&gt;We covered the basics of HTML &amp;amp; CSS in week 1, including mimicking two web-pages (one being responsive) to apply those skills. Week 2 was all about Developer Essentials -think git, IDE's and more. What was really exciting was that this included Scrum Master training, an Agile framework that many workplaces in the industry work to. It was refreshing to see a new way of working and, while my last position gave us a fair amount of autonomy, I can't wait to work in a team using Scrum. We are now all Certified Scrum Masters - meaning that we can take this new skill into a workplace and help lead them to implement Scrum. Also we played with Lego, and you can't compete with that. &lt;/p&gt;

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

&lt;p&gt;The upcoming week has us looking at building our first full website from beginning to end - a portfolio site designed to show off all of our progress and future builds. I am 100% concerned that I won't be able to design anything beyond a basic frame, but the guys have been pretty clear that we aren't expected to be designers (this is, after all, a course teaching us how to code, not design). I still can't help but feel a little useless when looking at others portfolio's.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;am&lt;/em&gt; a little worried about the upcoming weeks. I was hoping to be able to fit in some extra work most evenings just to recap the days content (luckily so far I haven't really needed to, but I expect that to change) but I have family commitments and a long commute: I have barely managed a minute of extra-curricular work. I've got my fingers crossed that I can find some solution. Also, american-isms like "gray", "math" and "color" keep slipping into use outside of the academy...that can't be healthy.&lt;/p&gt;

&lt;p&gt;At least by the end of this week I will have something of my own that I have built from nothing - which, even if it is entirely rubbish, will be pretty cool and something that I could not have achieved before a fortnight ago.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>A beginning</title>
      <dc:creator>Kyam</dc:creator>
      <pubDate>Fri, 23 Feb 2018 20:47:37 +0000</pubDate>
      <link>https://forem.com/kyam/the-start-of-a-new-journey--khl</link>
      <guid>https://forem.com/kyam/the-start-of-a-new-journey--khl</guid>
      <description>&lt;p&gt;I’d spent a large amount of the last 10 years regretting the fact that I’d wasted my opportunity of a university education in the most stereotypical fashion - I’d joined a band and abandoned my studies, spending two years of tuition getting nowhere except dingy pubs in England. Since, I’d resigned myself to careers in the unskilled sector - working in the service industry, managing in retail - jobs I enjoyed but was never fully happy in.&lt;/p&gt;

&lt;p&gt;Recently I had been managing a team in a national supermarket, a position that enabled me to find my strengths and play to them. It was during this time that I realised that I enjoyed using IT and tech to make life easier. Although this was contained largely to spreadsheets, I was able to help streamline and automate local processes that otherwise would have been left as manual.&lt;/p&gt;

&lt;p&gt;Although I obviously enjoyed it, I ruled out a career in tech because of my lack of a degree, and that was that - right?&lt;/p&gt;

&lt;p&gt;I had worked behind a bar previously and one of my former colleagues had recently got a job as a developer. But he had no degree! How did he do it? It occurred to me - if he can do it, why can’t I? Seeing as we were both at one point bar-monkeys, surely I could follow in his footsteps?&lt;/p&gt;

&lt;p&gt;As it turns out, I could. He attended a &lt;a href="https://maydenacademy.co.uk/"&gt;course&lt;/a&gt; run by local tech firm &lt;a href="https://mayden.co.uk/"&gt; Mayden&lt;/a&gt;- they set about training up local coding-wannabees to help solve a local workforce supply issue. Also, as it turns out, I am just the sort of person that would pass their requirements tests and be accepted onto their Full-Stack web developer course.&lt;/p&gt;

&lt;p&gt;I spent the last few weeks of supermarket work incredibly anxious of what it would be like: it had to be super intense and focussed at a screen 8 hours a day. There was no chance I was going to be able to keep up, and I was about to make a big mistake - putting my family in financial trouble and wasting the last 2 years of getting to a decent position at work. As such, I spent a good deal of my at-home time learning as much about the languages we were going to use as my head could fit.&lt;/p&gt;

&lt;p&gt;I turned up 2 Monday’s ago and it was….relaxed. The pace has been realistic and, although I have found it incredibly helpful doing all that extra work in advance, I probably could have (just-about) survived without.&lt;/p&gt;

&lt;p&gt;Now, 2 weeks in, I can start to see where my career as a developer might be. It may, of course, be nowhere - only by working hard and paying attention over the next 14 weeks will I be able to influence that, but at least I find myself on the right path. &lt;/p&gt;

&lt;p&gt;What’s been good: Building with HTML &amp;amp; CSS, playing with Lego&lt;br&gt;
What’s been painful: Nothing. Yet….&lt;br&gt;
Looking forward to: Having OOP explained to me.&lt;/p&gt;

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