<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sarah Williams</title>
    <description>The latest articles on DEV Community by Sarah Williams (@yellowbrickcode).</description>
    <link>https://dev.to/yellowbrickcode</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%2F20233%2Fb0415e25-9f49-420e-a686-480e732aa543.png</url>
      <title>DEV Community: Sarah Williams</title>
      <link>https://dev.to/yellowbrickcode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yellowbrickcode"/>
    <language>en</language>
    <item>
      <title>Fight for the Architecture</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Mon, 19 Feb 2018 17:39:13 +0000</pubDate>
      <link>https://dev.to/yellowbrickcode/fight-for-the-architecture--5k3</link>
      <guid>https://dev.to/yellowbrickcode/fight-for-the-architecture--5k3</guid>
      <description>&lt;p&gt;I’m currently reading &lt;a href="https://www.amazon.co.uk/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164"&gt;Clean Architecture by Uncle Bob&lt;/a&gt;. I’m still pretty early on in the book, but I just read a section that made me need to put it down and write this post!&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers are stakeholders too
&lt;/h2&gt;

&lt;p&gt;In a section titled ‘Fight For The Architecture’, Bob talks about the ongoing struggle of fighting for what you as a developer and/or architect believe is right for the company. Just as the management team, marketing team etc also do. The part of this section that really stood out to me was this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[Effective software development teams] unabashedly squabble with all the other stakeholders as equals. Remember, as a software developer, &lt;em&gt;you are a stakeholder&lt;/em&gt;. You have a stake in the software that you need to safeguard. That’s part of your role, and part of your duty. And it’s a big part of why you were hired.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This, so much this! I think this is something you don’t tend to recognise early in your career, at least I know I didn’t. I also think that if the company doesn’t recognise their development team as a stakeholder, it’s a steady slope to a product that will eventually fail. Without time spent on the architecture, you’ll end up with a product that’s more and more difficult to add to and maintain. You’ll have to add more people to the team, but your output won’t increase because the code base is harder to work in every day. Every line of code gradually gets more expensive to write, but your output will no longer match your investment. Eventually it’s going to need to be rewritten or abandoned. &lt;/p&gt;

&lt;p&gt;So for the developers reading this, remember, a software development team is definitely a stakeholder in the product they are developing. Sometimes we have to stand up for something for the good of the product and help make the other stakeholders understand why it’s important. We are in these positions because we understand the technical implications and because we’re good at what we do. If you sit back and let things go, you’re going to end up working in a mess of code that’s definitely not fun to work on and is challenging for all the wrong reasons!&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;Cover photo by sydney Rae on Unsplash&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.yellowbrickcode.co.uk/fight-for-the-architecture/"&gt;This was originally posted on my blog in January 2018&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>career</category>
      <category>team</category>
    </item>
    <item>
      <title>Why Fusion Drives &amp; Windows Don't Mix</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Wed, 26 Jul 2017 08:56:19 +0000</pubDate>
      <link>https://dev.to/yellowbrickcode/why-fusion-drives--windows-dont-mix</link>
      <guid>https://dev.to/yellowbrickcode/why-fusion-drives--windows-dont-mix</guid>
      <description>&lt;p&gt;My machine at work is a late 2015 model iMac, bought in August 2016. It's got a decent spec. The main bits, 3.3GHz i7 processor, 16GB RAM and 1TB Fusion Drive. That should definitely cover my requirements for development work, shouldn't it?&lt;/p&gt;

&lt;p&gt;I spend 99.9% of my time in Windows. Due to my machine having 16GB RAM (which is what I want Windows to have to help out with memory hungry apps like Chrome, Slack and Visual Studio), it's an easy decision to install Windows in a Bootcamp partition rather than on a VM where I would have to share resources with OSX.&lt;/p&gt;

&lt;p&gt;Fairly quickly after getting my iMac set up, I noticed that it was a bit slow in Windows. For quite a while I just put this down to me being spoiled by the SSD in my Macbook Pro that I use at home. As the months have gone on and the requirements for my work have gotten more intense, it's started to get to the point where I often find it unusable. I tend not to shut my machine down, instead just putting it to sleep. After a week of this, it takes around 25 minutes to close everything, reboot and open everything back up again. Even it it's only been on for one day, it can still take 12 to 20 minutes. &lt;/p&gt;

&lt;p&gt;I booted into OSX recently for the first time in around 11 months and noticed it was running much quicker, close to the performance of OSX on my own Macbook Pro. I decided it was time to research and finally I found the reason why I regularly want to throw my machine out of the window I sit next to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you install Windows on a Bootcamp partition on a Fusion Drive, Boot Camp Assistant creates the Windows partition on the disk drive, not the SSD.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And here it is straight from Apple - &lt;a href="https://support.apple.com/en-gb/HT201456"&gt;https://support.apple.com/en-gb/HT201456&lt;/a&gt; - see the 8th FAQ down (at the time of writing).&lt;/p&gt;

&lt;p&gt;In a way, I'm happy because I at least know that it's not just me being impatient! I'm also a bit annoyed with myself though. Firstly for not doing any research into how exactly a Fusion Drive works before we went into the Apple Store to buy the machine, and also for not just registering that the Fusion Drive is an Apple concept so probably doesn't work elsewhere. &lt;/p&gt;

&lt;p&gt;So hopefully someone finds this because they're doing what I should have done, &lt;strong&gt;research&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;My personal opinion, if you're thinking of installing Windows in a Bootcamp partition on a Fusion Drive for full time dev work (or anything moderately intensive), don't do it. Go for the SSD. It runs like a dream on my Macbook Pro! Alternatively, if you really want to/don't have a choice and go for the Fusion Drive, the new model 21" iMac (and the 27" iMac) can have up to 32GB RAM now. I have tried Windows in a Parallels VM on the Fusion Drive and it does run better than it does in Bootcamp. So if you do go for a Fusion Drive, also go for 32GB of RAM and run Windows in a VM rather that on a Bootcamp partition.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.yellowbrickcode.co.uk/why-fusion-drives-and-windows-dont-mix/"&gt;This was originally posted on my blog in June 2017&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hardware</category>
      <category>mac</category>
      <category>windows</category>
      <category>fusiondrive</category>
    </item>
    <item>
      <title>Are You Feeling Lucky? </title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Wed, 05 Jul 2017 13:25:03 +0000</pubDate>
      <link>https://dev.to/yellowbrickcode/are-you-feeling-lucky</link>
      <guid>https://dev.to/yellowbrickcode/are-you-feeling-lucky</guid>
      <description>&lt;p&gt;The past few days I've been struck with this lucky feeling.&lt;/p&gt;

&lt;p&gt;As I scroll through my Twitter feed, I realise I'm following some amazing people who are brilliant at tech. And thanks to Twitter, I have access to all these great minds in one place! As they share their insights and links to articles, I get to read it all and learn from it.&lt;/p&gt;

&lt;p&gt;Over on Slack, some local developers had the great idea to set up a group for local tech people to join. The early days in a startup can be difficult because the team is small, sometimes you need someone else in a similar position to yourself to bounce ideas off. Today I wanted someone to look at my plan for how I'm intending to structure our live Azure environment to make sure I wasn't doing anything crazy. A quick plea in the local tech Slack channel and less than an hour later, a complete stranger had offered their help and then spent almost an hour talking to me.&lt;/p&gt;

&lt;p&gt;In all of these cases, the people are the most important part because without them the tools wouldn't be of as much use. However having access to these tools makes these connections infinitely easier. &lt;/p&gt;

&lt;p&gt;Developers often joke that they couldn't do their job without Google, but I think that list is definitely starting to grow.&lt;/p&gt;

&lt;p&gt;What tools do you use on a daily basis that you wouldn't want to be without? Do they make your job easier or more enjoyable? Do they make you better at what you do? Are there any particular people you follow that you find inspirational? &lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>All of the Problems! How I Stay Sane</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Fri, 30 Jun 2017 12:55:39 +0000</pubDate>
      <link>https://dev.to/yellowbrickcode/all-of-the-problems-how-i-stay-sane</link>
      <guid>https://dev.to/yellowbrickcode/all-of-the-problems-how-i-stay-sane</guid>
      <description>&lt;p&gt;Most of my job as an architect in the early days of a start up lives in the realm of disorder. We're in the process of really getting to the heart of the problem that we're working to solve and as we define that, I need to analyse the options of how we can technically create these solutions. As I work the problem, the picture becomes clearer and gradually I get to the point where I have a solid plan and code is being written to implement it. Sometimes other problems get thrown up along the way and I need to figure out where they sit on the scale of "WTF?!" to "oh yeah no problem". &lt;/p&gt;

&lt;p&gt;A few years ago I was shown the Cynefin Framework. The Cynefin Framework was developed in the early 2000's at IBM as a sense making device. As a side note, it's nice to see a Welsh language word in tech language (cynefin is Welsh for habitat). For the non-Welsh speakers out there, it's pronounced kun-ev-in. Anyway, I probably picture this diagram in my head on a daily basis at the moment. Whenever I'm considering a problem or when a new problem gets raised, I think about where it sits on this diagram. &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%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F45%2FCynefin_framework_Feb_2011.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F45%2FCynefin_framework_Feb_2011.jpeg" alt="Cynefin Framework"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://commons.wikimedia.org/wiki/File:Cynefin_framework_Feb_2011.jpeg" rel="noopener noreferrer"&gt;Link to original file&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My thought process tends to go clockwise, starting at &lt;strong&gt;chaotic&lt;/strong&gt;. The first step is, we have a problem. We discuss it, make sense of it, define it and eventually begin to come up with an idea of how we think we could solve it with the software we're building.&lt;/p&gt;

&lt;p&gt;I then enter the &lt;strong&gt;complex&lt;/strong&gt; domain. I have an idea of an end solution to the problem. I have to think about how we can technically solve that problem in the larger context of our entire system. This domain for me will usually involve some proof of concept work and eventually I'll come up with a plan for a technical implementation to help us get to our end solution.&lt;/p&gt;

&lt;p&gt;The next domain is &lt;strong&gt;complicated&lt;/strong&gt;. For me, this is where I actually start putting some high level work into our architecture, making sense of how this implementation actually fits in. I see this step as the part where it goes from being and idea in my head or on paper, to being an implementation. This part can be slow and a bit frustrating for me personally, but when the solution is taking shape, it becomes a very rewarding part of the process!&lt;/p&gt;

&lt;p&gt;Eventually you get to the &lt;strong&gt;simple&lt;/strong&gt; domain. The architecture is now in place so here we're fleshing out the details and putting all the implementations in place using well known solutions and techniques that I've used lots of times before. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Problems don't always need to start in the chaotic domain&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A problem can start in any domain. Sometimes a problem will come up that will go straight into the simple domain, probably because you've already gone through the other three domains while working through a similar problem. It may just be something you've solved a hundred times before in your development career. &lt;/p&gt;

&lt;p&gt;I personally think the framework can be useful in lots of applications. It's definitely not just useful for startups or new projects. It could be helpful even in well established software projects. I don't believe it's usefulness is limited to the technical world either. &lt;/p&gt;

&lt;p&gt;So using this framework is how I stay sane in a world of disorder. I don't panic, I categorise the problem and that helps me stay calm. When I look at a problem and have no idea how to solve it, I know it's fine because it's not in the simple domain yet. I just need to work on it until it gets there.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.yellowbrickcode.co.uk/all-of-the-problems-how-i-stay-sane/" rel="noopener noreferrer"&gt;This was originally posted on my blog in March 2017&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cynefinframework</category>
      <category>architecture</category>
      <category>problemsolving</category>
    </item>
  </channel>
</rss>
