<?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: Robert Sweetman</title>
    <description>The latest articles on DEV Community by Robert Sweetman (@robertiansweetman).</description>
    <link>https://dev.to/robertiansweetman</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%2F174762%2Fdd08935a-97b0-4099-a73d-17acff94bca5.jpeg</url>
      <title>DEV Community: Robert Sweetman</title>
      <link>https://dev.to/robertiansweetman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robertiansweetman"/>
    <language>en</language>
    <item>
      <title>Estimation... Often terrible sometimes harmful</title>
      <dc:creator>Robert Sweetman</dc:creator>
      <pubDate>Sun, 01 Sep 2019 12:32:08 +0000</pubDate>
      <link>https://dev.to/robertiansweetman/estimation-often-terrible-sometimes-harmful-45p4</link>
      <guid>https://dev.to/robertiansweetman/estimation-often-terrible-sometimes-harmful-45p4</guid>
      <description>&lt;p&gt;tldr; Estimation can be useful when choosing between items of similar business value. Using story points as a proxy to forecast when a feature or epic might be finished? Utterly useless and a waste of time.&lt;/p&gt;

&lt;p&gt;I feel as thought I don't even have the energy to get into this particular debate but since writing this post has been on my to-do list for at least three months... here goes!&lt;/p&gt;

&lt;p&gt;This is my understanding of how 'classic' story point estimation for items should be used. In the early days of your 'agile transformation' you'll all be sitting around a table, playing a game with cards whereby everyone talks about an item, flips over their cards and then the consensus view is adopted with some room for challenge (based mainly on the inter-personal dynamics of the group). Rinse, Repeat. There's room for debate, knowledge sharing and discussion.&lt;/p&gt;

&lt;p&gt;However this soon becomes a PITA which is time consuming and this devolves to someone 'giving it a number'. Any debate or learning that would have happened about part 'x' of the code base has now vanished.&lt;/p&gt;

&lt;p&gt;Now the focus becomes how many 'story points' a particular team can get done or might be able to 'commit to' in a sprint. Let's just isolate that 'commit to' phrase for a moment because it's essentially meaningless. This month I "committed to" getting some exercise every day. I can have &lt;em&gt;all the commitment in the world&lt;/em&gt; but there's really nothing underpinning that statement which will ensure I do as I say. Any number of things might come up. &lt;/p&gt;

&lt;p&gt;Similarly "committing" to 30 story points in a sprint and then continually failing to meet that commitment, as well as being harangued by the PM or scrum master for failing to hit some arbitrary number, soon leads to a very toxic work environment. &lt;/p&gt;

&lt;p&gt;Estimating single items (as story points as some measure of 'size') and then grouping them together as a way of trying to freeze the number of tasks in a week is ridiculously counter productive. Each item you are presented with will likely turn into a task list, removing all critique and creative potential that might mean the problem is addressed in a better way.&lt;/p&gt;

&lt;p&gt;Estimates of single items are riddled with the following issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People just inherently are terrible at estimating task time in isolation&lt;/li&gt;
&lt;li&gt;Huge tendency to low-ball estimates in order to please PMs/Managers&lt;/li&gt;
&lt;li&gt;Unknown unknowns, especially around code, are always present&lt;/li&gt;
&lt;li&gt;Failing to consider the time needed to write documentation&lt;/li&gt;
&lt;li&gt;Failing even more to consider the time needed to write good tests&lt;/li&gt;
&lt;li&gt;Peer pressure when making estimates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Management will talk about 'getting better estimates' or having more frequent reviews of items progress during the sprint but neither of these are really effective uses of time. &lt;/p&gt;

&lt;p&gt;Where estimates &lt;em&gt;do&lt;/em&gt; have legitimacy (and the only place this applies) is when looking at a list of &lt;em&gt;possible&lt;/em&gt; items to do. It will be pretty clear, because humans are actually good at this, when items will require more work versus the others. This can be used to inform any discussion around feature, bug or epic prioritization since the &lt;em&gt;value&lt;/em&gt; will be apparent and then 'cost' relative to the other items on the list can be used to inform a judgement as to what to do next and why.&lt;/p&gt;

&lt;p&gt;Let's take a step back from story points and scrum to see why they exist in the context of time and whether there's a better way. Ideally there are only two frameworks for consistently shipping software: - &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fixed date - "we will ship on a regular cadence" e.g. monthly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed scope - "we have a roadmap and the next release will contain these features"...&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I &lt;em&gt;much&lt;/em&gt; prefer option 1 and the inevitable response from Sales, marketing and the CEO to option 2 will be... "So, when is the next release coming out?". You should immediately be able to see the issue with option 2. not just because it's a throwback to how software was planned, delivered and sold back in 1998...&lt;/p&gt;

&lt;p&gt;Now you've got some sort of 'sprint velocity' which has been painstakingly assembled over time through building a ziggurat of Story Points. &lt;/p&gt;

&lt;p&gt;This is now the measuring stick you're going to use to try to map 'n' features which happen to be in a fixed scope release against time to answer the "when is it coming out?" question. And you're inevitably going to get this wrong and developers will feel bad &lt;em&gt;even if you're supper supportive&lt;/em&gt;! &lt;/p&gt;

&lt;p&gt;No-one likes to miss a target, even if having one is super ill-conceived in the first place. &lt;/p&gt;

&lt;p&gt;Fixed date releasing is FAR better than fixed scope for so many reasons...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You don't need story points, you can focus on customer value&lt;/li&gt;
&lt;li&gt;You get better at shipping software 'cause you're doing in more often&lt;/li&gt;
&lt;li&gt;Requires you to invest in tooling an automation to make your life pleasant&lt;/li&gt;
&lt;li&gt;The business knows releases happen on a regular basis and understand why&lt;/li&gt;
&lt;li&gt;Testing 3-4 weeks of changes is SO MUCH SAFER than testing 6-12 weeks of changes! &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Story points, as required by management, exist for only one reason. An attempt to answer the question from the business of "when?". They're also an attempt to replace communication around the progress of an item (or not) with a number that, at the start of a sprint, everyone can happily agree is "true".&lt;/p&gt;

&lt;p&gt;Rather than teach engineers and developers how to communicate better about the state of an item their working on the inventors of this methodology decided to let them pick numbers for tasks, because that's easier.&lt;/p&gt;

&lt;p&gt;Let's say that an item is a three... but half way through the sprint some god awful new implementation detail appears which means it's now almost the same amount of work again... &lt;/p&gt;

&lt;p&gt;Does the item still have business value? Should it still even be worked on? Well, in the case of fixed date releases it's all about doing the correct, most valuable thing. Time is expansive and it's a real discussion to be had.&lt;/p&gt;

&lt;p&gt;In the case of fixed scope (but now everyone wants a date for the next release) it's all about shoving the item in, under pressure, possibly badly or creating technical debt, &lt;em&gt;and still feeling bad about it!&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;As someone a lot wiser than me pointed out...&lt;/p&gt;

&lt;p&gt;Happiness is all about your expectations.&lt;/p&gt;

&lt;p&gt;Adopting a methodology which is effectively guaranteed to fail, where you or others are always painfully aware of your own shortcomings, is a terrible environment to work in.&lt;/p&gt;

&lt;p&gt;Let's spend the time we would have spent in countless estimation debates as to whether something is a 3, 5 or 8 learning rather how to communicate and manage people's expectations in the moment when something inevitably slips. &lt;/p&gt;

&lt;p&gt;There's a huge benefit in educating the rest of the business and others as to how GOOD software is written. Yes, use a number for relative size of items (and risk) versus customer value BUT never, ever use velocity as a proxy for time. &lt;/p&gt;

&lt;p&gt;While we're here, let's not call them sprints. If development is all about naming things, let's rename this. Sprint 114 is daft and self-flagellatory. &lt;/p&gt;

&lt;p&gt;Let's say Iteration 114 'cause that's better. It also tells non-developers something about how software is built. It's not a sprint, it's a marathon.  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>To bootcamp, or not to bootcamp, is that the question?</title>
      <dc:creator>Robert Sweetman</dc:creator>
      <pubDate>Mon, 12 Aug 2019 08:59:22 +0000</pubDate>
      <link>https://dev.to/robertiansweetman/to-bootcamp-or-not-to-bootcamp-is-that-the-question-5fe6</link>
      <guid>https://dev.to/robertiansweetman/to-bootcamp-or-not-to-bootcamp-is-that-the-question-5fe6</guid>
      <description>&lt;p&gt;Asking the right question when problem solving is often the biggest hurdle when looking to achieve a particular goal. The tendency to focus on solutions can quickly drive good sense and creative thinking from the problem space.&lt;/p&gt;

&lt;p&gt;Granted, rushing to take action assuages that feeling of uncertainty but ultimately could lead to ending up in the wrong place. So let's first take a step back, figure out the landscape, see what we can learn and look at the options...&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the landscape?
&lt;/h2&gt;

&lt;p&gt;Firstly let's recognize that there is a pull from companies for development skills and the sheer numbers of vacancies mean that 'traditional' education establishments simply aren't geared up to meet this need. &lt;/p&gt;

&lt;p&gt;Anywhere that a demand outstrips supply there's an opportunity for someone to make money. This landscape of scarce supply creates the following conditions: -&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Companies with vacancies are prepared to broaden their pipeline.

&lt;ul&gt;
&lt;li&gt;Doing this is seen by most of them as a risk initially&lt;/li&gt;
&lt;li&gt;Continued exposure to good experiences may change this perception, but only 
company by company&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Being able to show a portfolio has more influence on hiring.

&lt;ul&gt;
&lt;li&gt;Even Comp-Sci grads have to prove they can code 'something'&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Recruiters are &lt;em&gt;likely&lt;/em&gt; to be adding LESS value than before

&lt;ul&gt;
&lt;li&gt;In an arena where the candidate has options and there are fewer of them then traditional recruitment companies are less likely to get paid&lt;/li&gt;
&lt;li&gt;Recruiters work for the company that pays them a cut, not candidates. Sorry, recruiters don't work for you, regardless of what they say.&lt;/li&gt;
&lt;li&gt;I will die on this hill, fight me&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Access to training material, code samples, courses is virtually unlimited...&lt;/li&gt;
&lt;li&gt;Access to trainers (actual people) is definitely NOT unlimited

&lt;ul&gt;
&lt;li&gt;Developers have jobs so their energy goes there&lt;/li&gt;
&lt;li&gt;Academics (in traditional education establishments) often don't have industry experience and are mostly teaching an out-dated tech stack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Employees must (ideally) have experience, can't get a job with out experience, can't get experience without a job...

&lt;ul&gt;
&lt;li&gt;Adverts for Junior devs (implying we will train you up) are always over-subscribed&lt;/li&gt;
&lt;li&gt;People hire people like themselves, which makes the diversity problem in tech even worse...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So broadly that's the map of the terrain. &lt;/p&gt;

&lt;h2&gt;
  
  
  Where are the pain points?
&lt;/h2&gt;

&lt;p&gt;Demand has outstripped supply and there are entities with money who are in pain. This means they're prepared to forgo their usual (tried and tested) approaches and change to meet the new reality.&lt;/p&gt;

&lt;p&gt;You, as a prospective developer, want to benefit from the high value (and wages) tech workers have and enjoy the fact that there are a LOT of opportunities out there. Yes, there are gate-keepers but the supply versus demand is so asymmetrical (and will remain so indefinitely) that &lt;strong&gt;if you're prepared to do the work&lt;/strong&gt; the game is stacked in your favor.&lt;/p&gt;

&lt;p&gt;Prospective developers have the following pain points:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Not knowing enough to know what to learn&lt;/li&gt;
&lt;li&gt;Having the time and perseverance to suck at something before it becomes fun&lt;/li&gt;
&lt;li&gt;No confidence (yet) that you'll be able to land a role, even after time invested&lt;/li&gt;
&lt;li&gt;Nobody to ask or talk you through something when you get REALLY stuck&lt;/li&gt;
&lt;li&gt;Self directed practice is just HARD and the world is almost built to distract you&lt;/li&gt;
&lt;li&gt;It really helps to have a peer group&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your enthusiasm, desire, preparedness to do the work is great. Well done! &lt;/p&gt;

&lt;p&gt;It also makes you vulnerable and exploitable. I could really go all dark side  here and lay it on thick but I'd simply ask people to recognize that having a burning NEED makes you vulnerable to being led around by the nose. Now you're at least aware of that fact you might be able to participate slightly more consciously than before.&lt;/p&gt;

&lt;p&gt;Do prospective employers really have pain points? &lt;/p&gt;

&lt;p&gt;Well, I'd say yes and no. If they wait around long enough eventually they'll manage to hire someone but it's clear that if a bunch of roles can't be filled that product/value/feature can't just be magicked into existence. Companies would at least like to not have recruitment as a huge problem. They're prepared to spend money with recruiters, other third parties, referral bonuses etc. for this problem to not be so acute. &lt;/p&gt;

&lt;h2&gt;
  
  
  Who gets what part of the value?
&lt;/h2&gt;

&lt;p&gt;Also known as the 'follow the money' question.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional education
&lt;/h3&gt;

&lt;p&gt;You pay us for training (only) which may or may not land you a job in your chosen field and we have no &lt;em&gt;real&lt;/em&gt; incentive to keep up-to-date. You &lt;em&gt;might&lt;/em&gt; benefit from our prestige as an institution. When it comes to Comp-Sci I'd argue this is negligible. If you're white, male, 18-19 and also want to enjoy a further 3 years insulated from the harsh reality of the job market I'd go with this!&lt;/p&gt;

&lt;h3&gt;
  
  
  Bootcamp
&lt;/h3&gt;

&lt;p&gt;You pay us for training and we 'guarantee' a job but whether it's funded via an ISA or some other financial instrument, the risk is still yours. You benefit from our recruitment network and the fact the Bootcamp is incentivised to ensure there's a good outcome. A positive outcome increases our value and also avoids negative publicity. &lt;/p&gt;

&lt;p&gt;As a prospective inductee into this approach (applying to join a bootcamp) your other option will be to 'teach yourself'... If we disqualify a Comp-Sci degree then what we're actually trying to decide between is teaching yourself and joining a bootcamp. &lt;/p&gt;

&lt;h2&gt;
  
  
  What's the real difference?
&lt;/h2&gt;

&lt;p&gt;Remember, the option to teach yourself or enter the tech world via a bootcamp only exists due to traditional education paths failures. I don't think this is likely to change soon but, whether you go 'self taught' or 'bootcamp' route, you're still going to have to grind through the following: -&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learning to code is hard, takes time and requires you to actually BUILD THINGS&lt;/li&gt;
&lt;li&gt;You will need to develop self discipline and perseverance&lt;/li&gt;
&lt;li&gt;You will need to carve out large chunks of time every day for months&lt;/li&gt;
&lt;li&gt;You will need to follow an actual curriculum leading to building real things&lt;/li&gt;
&lt;li&gt;You will have to study specific topics to pass a code interview
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These things are common to both paths because this list is basically just the learning bit... Now, this is where things become really interesting... &lt;/p&gt;

&lt;p&gt;Here's are some questions you can ask yourself.&lt;/p&gt;

&lt;p&gt;"Do I think I will be able to succeed at all?" 'Cause let's face it, you will be the one doing the work &lt;strong&gt;regardless of your path&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;"Are there aspects of my lived experience, background etc. that joining a bootcamp may not be able to directly help with, and may make worse?"&lt;/p&gt;

&lt;p&gt;"Do I believe the 'value add' that this bootcamp offers (peergroup, mentorship, interview contacts, exposure to hiring companies, regular schedule) is worth what I'm ultimately going to pay?" &lt;/p&gt;

&lt;p&gt;In the recent debate (Twitter bustup?) and questioning around bootcamps in general and Lambda school in particular there were concerns raised that a VC funded entity was likely to be remiss in their handling of some students, especially those from areas/backgrounds/ethnicities already seriously under-represented in tech. &lt;/p&gt;

&lt;p&gt;People wanted to know whether particular stories were true, how 'specifically' Lambda would put safeguards in place to encourage openness and so on. &lt;/p&gt;

&lt;p&gt;One thing that puzzled me (and I'll be prepared to admit I might be wrong here) was the impression I got that somehow traditional education, with it's flawed model and all, somehow had an in-built higher moral standard than a for-profit company?... I'm compelled to point out this is garbage.&lt;/p&gt;

&lt;p&gt;Still, it was interesting to read. &lt;/p&gt;

&lt;p&gt;Hopefully those still reading at this point will see just from the three questions I asked above that the right answer for you, trying to choose, is ... it depends. &lt;/p&gt;

&lt;p&gt;It really does depend on you as an individual to decide whether the shorter timeframe to go from zero to hero is worth it. Don't conveniently forget it's market demand setting the destination, you're the engine and the bootcamp is just the vehicle you've chosen to get there. &lt;/p&gt;

&lt;p&gt;So, no answer at all then! I hear you cry - and yes. I apologize. By way of compensation for those still reading I'll offer another option...&lt;/p&gt;

&lt;h2&gt;
  
  
  Do the work, build your own 'bootcamp'
&lt;/h2&gt;

&lt;p&gt;Lets list the things you &lt;strong&gt;don't&lt;/strong&gt; get access to on your own.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A tutor - defined as someone to answer questions when they're stuck, not someone spending hours taking you through work on a whiteboard daily &lt;/li&gt;
&lt;li&gt;A peergroup&lt;/li&gt;
&lt;li&gt;Mentorship&lt;/li&gt;
&lt;li&gt;Career advice/introductions/opportunities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I'd suggest, especially to those already established developers is that if they'd like to step up and help their prospective colleagues, then there's very little stopping them from doing so.&lt;/p&gt;

&lt;p&gt;I reckon one person wouldn't have too much trouble mentoring up to three motivated individuals. Depending on how much time they dedicate then &lt;em&gt;maybe&lt;/em&gt; there's some sort of money involved, maybe not. This whole topic rests on &lt;strong&gt;managing expectations&lt;/strong&gt; but I'd guarantee all parties would quickly learn a metric shit ton about themselves pretty fast. &lt;/p&gt;

&lt;p&gt;As an aside, ageism is also rampant in tech/recruiting/development. I'd suggest you dyed in the wool devs with 20, coming up on 30, years experience could make a very comfortable retirement indeed helping out the younger generation!&lt;/p&gt;

&lt;p&gt;Now, again, this is not an easy option. The goal is to get those participating up to a standard where they have proof they can do the job they're being asked to do. This is both a blessing and a curse. Let's view it as a blessing.&lt;/p&gt;

&lt;p&gt;It requires a fair amount of self-knowledge and self awareness of all those participating. It would however get the students access to the top three (previously missing) components in the list above. If they're all switched on the person they managed to work with would have an intro (with a referral bonus) already on place with their own employer.&lt;/p&gt;

&lt;p&gt;If it was constructed as a social change endeavor you could have one, then three, then 9 people participating and the structure might truly grow exponentially. &lt;/p&gt;

&lt;p&gt;Very difficult to maintain a a moral/ethical core as that happens but still worth striving for. It's organic growth, rather than via a VC steroidal injection.&lt;/p&gt;

&lt;p&gt;As with many topics out in the world today, no-one is going to save us. &lt;/p&gt;

&lt;p&gt;Political, moral, religious and corporate entities have failed.&lt;/p&gt;

&lt;p&gt;It's on us to save ourselves.&lt;/p&gt;

&lt;p&gt;I hope this provides food for thought.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As an aside, who am I?&lt;/strong&gt;&lt;br&gt;
Or the answer to the "under what authority do I speak?" question.&lt;/p&gt;

&lt;p&gt;I am in a very fortunate position to have been in a company where I've gone from sales, pre-sales, support, support team lead, project manager, release manager to program manager. I'm 47, hence the shout-out to ageism above. Not looking forward to that I can tell ya!&lt;/p&gt;

&lt;p&gt;I basically snuck in the technical back door by moving from project management and teaching myself Powershell while in my former role &lt;strong&gt;but&lt;/strong&gt; I've also benefited hugely from the fact I'm surrounded by some ridiculously good programmers. They're very generous with their time and explanations. &lt;/p&gt;

&lt;p&gt;I'm learning Javascript at the moment. Why? Because even though we're in Bracknell (something of a tech-hub outside London) we simply can't find good Javascript Front-End developers... Which should tell you something!&lt;/p&gt;

&lt;p&gt;I'm not going to proscribe which option you choose but I thought it was worth pointing out some of the factors at play and that, having broken down a problem into some of it's constituent parts, there might be a way of tackling it that suits you better. &lt;/p&gt;

&lt;p&gt;Personally I could very well see myself going down the bootcamp route but (at my age and work situation) it wouldn't make very much financial sense. I am spending a lot of my off-hours teaching myself and it's just brutal. Doing this via a bootcamp part-time wouldn't help me because the challenge for me is not so much 'coding'. It's finding the time/energy in order to practice in order for me to get to a baseline productive level.&lt;/p&gt;

&lt;p&gt;I don't have the financial cushion to take 9 months off work and then re-enter the workforce as a junior developer alongside handing off a percentage of my earnings for the next three - five years. But then again I'm not &lt;em&gt;really&lt;/em&gt; the target demographic bootcamps are after either, at least that's my impression.&lt;/p&gt;

&lt;p&gt;In summary, I've chosen to teach myself. Yes, it will take maybe 2-3 times longer (more?) however it will also mean I've developed more self-discipline and self belief which are traits I'd like to cultivate. Self-awareness and communication skills are hugely undervalued in the tech industry, don't forget those.&lt;/p&gt;

&lt;p&gt;I love learning but it's all about time and self-discipline really.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
