Jekyll2023-11-06T13:05:55+00:00https://armyofminions.com//Army of Minions | James GiffordSoftware, teams, Ruby and DevOpsJames GiffordUse a System, not Scraps of Paper.2018-12-29T00:00:00+00:002019-03-29T02:05:01+00:00https://armyofminions.com/2018/12/use-a-system-not-scraps-of-paper<p><img src="/wp-content/uploads/2018/12/image.jpg" /></p>
<p>Use a system, not scraps of paper or sticky notes.</p>
<p>Try to show professionalism of the “I got this” variety, not the “I’ll completely forget about this”.</p>
<!--more-->
<p>Quote is from<em> <a href="https://www.amazon.com/dp/0596007833/ref=cm_sw_r_cp_api_i_hu2jCbZRV485N" target="_blank" rel="noopener">Time Management for System Administrators: Stop Working Late and Start Working Smart</a></em></p>James GiffordUse a system, not scraps of paper or sticky notes.
Try to show professionalism of the “I got this” variety, not the “I’ll completely forget about this”.The details you focus on go smoothly, so choose the details carefully2018-10-20T00:00:00+00:002019-03-29T02:05:01+00:00https://armyofminions.com/2018/10/the-details-you-focus-on-go-smoothly-so-choose-the-details-carefully<p>“When doing project management, you can’t ensure everything goes smoothly, only the things you focus on.”
<!--more-->
If the above statement is true, then the things that do not go smoothly are the ones you chose not to focus on, and your inattention is why they failed.</p>
<p>Choose carefully, else others will choose for you by being noisy - “whichever stakeholder makes the most noise” is not a viable prioritization strategy for your attention.</p>James Gifford“When doing project management, you can’t ensure everything goes smoothly, only the things you focus on.”Premortems are powerful and underutilized2018-10-16T00:00:00+00:002019-03-29T02:05:01+00:00https://armyofminions.com/2018/10/premortems-are-powerful-and-underutilized<!-- wp:paragraph -->
<p><p>Among the most powerful of team building and communication tools a leader can have is the retrospective (known in some circles as “postmortem” or “root cause analysis”). During the retrospective, the team talks about <em>as a group</em> and <em>without blame of individuals</em> what went well, what didn’t, and how they can improve.</p>
<p><!--more--></p>
Equally powerful is the premortem, or retrospective before the project starts. The way this works is the facilitator of the premortem opens with some variant of the following:</p>
<!-- /wp:paragraph -->
<!-- wp:quote -->
<blockquote class="wp-block-quote"><p>You’re probably wondering why I’ve gathered you all here today. <em>ominous stare sweeping the crowd here</em> It is 1 year in the future, and the project has failed. We are here to discover why, so we can gauge the risks.</p></blockquote>
<!-- /wp:quote -->
<!-- wp:paragraph -->
<p>From there, lead the team through brainstorming ideas, all along the lines of “why did this project fail”. Normally I try to do this for 10-15 minutes, at which point we’ll shift gears from “making up reasons” to “sorting through them”. After this, I normally move to a <a href="http://leancoffee.org">lean coffee</a> format to discuss the items.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Here are a few things that came up during a premortem I lead at a Scouting planning meeting about a backpacking trip:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul><li>We got get lost and were late for dinner</li><li>We had inexperienced Scouts along who tried to carry too much gear with them</li><li>We forgot the food</li><li>We had experienced Scouts who didn’t watch over the inexperienced Scouts to make sure they were OK, and the inexperienced Scouts weren’t OK.</li><li>We didn’t have enough tents for all participants</li></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>We’ll walk through the first 3 (we solved all of them) and how they (almost) were solved by the actions we took beforehand.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3>#1: We got lost and were late for dinner</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>This is a very real fear for a 14 year old. What is worse than missing a meal?! Answer: Missing more than one.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>What could we do to prevent this from happening?</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul><li>We could distribute copies of maps to multiple people, so we didn’t have a single point of failure</li><li>We could make sure we stuck together as a group</li><li>
<ul>
<li>This prevents us from being late for dinner, not so much for getting lost. If everyone is together, then we could stop and have dinner at any point in time, since we’d have everyone and everything we needed.</li>
</ul>
</li><li>We could have someone hike the trail the weekend before so we had someone familiar with the route</li><li>
<ul>
<li>We ended up not being able to do this, but it was a good planned item.</li>
</ul>
</li></ul>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<h3>#2: We had inexperienced Scouts along who tried to carry too much gear with them</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>This is really bad when you’re carrying everything for 10 miles. It can ruin an otherwise glorious weekend, because if you’re carrying too much gear with you down the trail, you will get exhausted (and be in pain) before the end.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>We could prevent this from happening by:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul><li>Having experienced Scouts check backpacks before leaving on the trip, and redistribute or move gear as necessary</li><li>
<ul>
<li>We did this, and it helped a lot.</li>
</ul>
</li><li>Sending Scouts with a packing list that covers recommended gear</li><li>
<ul>
<li>This is something that we had done before (to great success) but slipped through the cracks on this trip.</li>
</ul>
</li></ul>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<h3>#3: We forgot the food</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Forgetting the food is great while you’re hiking (less to carry!) but a problem when you need to eat (after you didn’t get lost and were on time for dinner)</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>We solved for this by:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul><li>Creating a pre-departure checklist that included the item “Make sure everyone has their food”</li><li>Calling the folks who were doing the shopping 3 days before and reminding them</li><li>
<ul>
<li>Most of them knew to expect a call and had bought all the food the night before we called</li>
</ul>
</li></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>I hope this example of how a premortem can help you as you plan anything, ranging from campouts to software projects.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>More Resources:</h2>
<!-- /wp:heading -->
<!-- wp:list -->
<ul><li><a href="https://www.burrus.com/2018/02/power-pre-mortems/">The power of Pre-Mortems</a></li><li><a href="https://www.atlassian.com/team-playbook/plays/pre-mortem">Atlassian Team Playbook - Premortems</a></li><li><a href="https://hbr.org/2007/09/performing-a-project-premortem">Harvard Business Review - Performing a Project Premortem</a></li></ul>
<!-- /wp:list -->James GiffordAmong the most powerful of team building and communication tools a leader can have is the retrospective (known in some circles as “postmortem” or “root cause analysis”). During the retrospective, the team talks about as a group and without blame of individuals what went well, what didn’t, and how they can improve.One Month of Teaching Programming2018-02-01T00:00:00+00:002018-02-01T03:04:46+00:00https://armyofminions.com/one-month-of-teaching-programming<p>It’s a month of lessons into our #learntocode group (we took a few weeks off over the holidays) and I’ve been learning a lot about myself, my students, programming and how people learn entirely new concepts.</p>
<!--more-->
<p>Primary lessons learned are:</p>
<ol>
<li>
<p>When starting out with teaching, it’s very easy to <strong>overwhelm the beginner with too much information</strong>. It’s tempting to say “don’t worry about XYZ right now”.</p>
</li>
<li>
<p>Its also very easy to <strong>leave out</strong> too much information by saying “don’t worry about XYZ” all the time.</p>
</li>
<li>
<p>Because of 1&2, it’s easy to fall into the trap of having hard and fast rules - “explain everything” or “explain nothing”. This is bad, because now you’re treating everyone like they learn the same way. This leads to my next lesson…</p>
</li>
<li>
<p>Every student is different and will comprehend certain topics at a different pace.</p>
</li>
</ol>
<p>I look forward to the next month as we dive more into Rails and start building larger projects with more complexity.</p>
<p>For those that have taught people programming, what has been your experience with striking that balance of just the right amount of information? <a href="mailto:james@armyofminions.com">Send me an email</a> - I’d love to chat.</p>
<p>For those that haven’t taught people programming, what has been your experience with a teacher striking that balance? Hit reply - I’d also <a href="mailto:james@armyofminions.com">love to chat</a>.</p>James GiffordIt’s a month of lessons into our #learntocode group (we took a few weeks off over the holidays) and I’ve been learning a lot about myself, my students, programming and how people learn entirely new concepts.Leadership, Trust and Integrity2017-12-07T00:00:00+00:002017-12-07T21:30:19+00:00https://armyofminions.com/leadership-trust-and-integrity<p>When picking who you’re going to go into the fray with…</p>
<p>Find a leader who understands that trust is important.
Also find one that knows it is earned, not given. They’ll likely understand that it’s easily broken, but double check.</p>
<!--more-->
<p>Perhaps more importantly, find yourself a team that will be forgiving, and understands that life moves fast and sometimes you just have to run with the opportunities laid before you.</p>
<p>It’s a delicate balance, and is hard to do.</p>
<p>But above all…</p>
<p>Find people who are honest and have integrity.</p>
<p>If you have those, then you cannot fail.</p>
<blockquote>
<p>Waste no more time arguing about what a good man should be. Be one.</p>
</blockquote>
<blockquote>
<p>– Marcus Aurelius</p>
</blockquote>James GiffordWhen picking who you’re going to go into the fray with…
Find a leader who understands that trust is important.
Also find one that knows it is earned, not given. They’ll likely understand that it’s easily broken, but double check.2017 Cleveland GiveCamp2017-11-09T00:00:00+00:002017-11-09T12:42:04+00:00https://armyofminions.com/givecamp/2017-cleveland-givecamp<p><em>Note: This was written shortly after GiveCamp. It’s been sitting in my drafts folder for 4 months, for which I apologize</em></p>
<p>In July, I had the chance to go to the <a href="http://clevelandgivecamp.org/">2017 Cleveland GiveCamp</a>.</p>
<p>GiveCamp is a annual event where ~200 programmers and designers get paired with
a collection of non-profit organizations to help with their technology needs.
Most often, that means a website that allows for donations, contact forms and
photo galleries of what the nonprofit does. This was my 7th GiveCamp - I
attended in 2011, 2012, 2014, 2015, <a href="/2016/08/2016-cleveland-givecamp/">2016</a>
and Seattle in October 2017 as well.</p>
<!--more-->
<p>As always, it was an amazing experience. Once again, I was on Team Y (floaters).
For those unfamiliar with CLE GiveCamp parlance, that simply means my team was
dedicated to unblocking other teams. Over the course of the weekend, I managed
to visit every team at least once and lend a hand (or just an ear) to help them
get unstuck.</p>
<p>Over the course of the weekend, I did 29,707 steps (or 16 miles) walking between
the LeanDog boat and Burke Lakefront (which was only 300 feet away).</p>
<p><img src="/blog_uploads/2017-cleveland-givecamp/friday_evening_standup.jpg" alt="A gathering of project managers, organizers and floaters on Friday" /></p>
<p><img src="/blog_uploads/2017-cleveland-givecamp/friday_night_standup.jpg" alt="Another gathering, this time on the top deck of the LeanDog boat. Oil on Canvas, 2017" /></p>
<p>They fed us well (as always!!)</p>
<p><img src="/blog_uploads/2017-cleveland-givecamp/saturday_lunch.jpg" alt="Saturday Lunch" /></p>
<p>Thanks everyone who was able to be a part of it this year, and for those that weren’t able to be there…</p>
<p>I hope to see you there in 2018!</p>James GiffordNote: This was written shortly after GiveCamp. It’s been sitting in my drafts folder for 4 months, for which I apologize
In July, I had the chance to go to the 2017 Cleveland GiveCamp.
GiveCamp is a annual event where ~200 programmers and designers get paired with
a collection of non-profit organizations to help with their technology needs.
Most often, that means a website that allows for donations, contact forms and
photo galleries of what the nonprofit does. This was my 7th GiveCamp - I
attended in 2011, 2012, 2014, 2015, 2016
and Seattle in October 2017 as well.Makefiles For Easy To Use ‘Public’ Development UI2017-10-21T00:00:00+00:002017-10-21T20:29:39+00:00https://armyofminions.com/makefiles-for-easy-to-use-public-development-ui<p>Recently, I read an article titled
<a href="https://medium.com/@jolson88/its-time-for-makefiles-to-make-a-comeback-36cbc358bb0a">Time for Makefiles to Make a Comeback</a>
which reminded me of a fantastic UNIX tool that far too many people view as being scary.</p>
<!--more-->
<p>Make dates back to 1976 (41 years ago!), where it was used by Stuart Feldman
at Bell Labs. Here’s what the creator of Make had to say about it:</p>
<blockquote>
<p>Make originated with a visit from Steve Johnson (author of yacc, etc.),
storming into my office, cursing the Fates that had caused him to waste a
morning debugging a correct program (bug had been fixed, file hadn’t been
compiled, cc *.o was therefore unaffected). As I had spent a part of the
previous evening coping with the same disaster on a project I was working on,
the idea of a tool to solve it came up. It began with an elaborate idea of a
dependency analyzer, boiled down to something much simpler, and turned into
Make that weekend. Use of tools that were still wet was part of the culture.
Makefiles were text files, not magically encoded binaries, because that was
the Unix ethos: printable, debuggable, understandable stuff.</p>
<p>— Stuart Feldman, The Art of Unix Programming, Eric S. Raymond 2003</p>
</blockquote>
<p>Since reading that I’ve been working on creating Makefiles for all my various
projects and codebases.</p>
<p>Here is my template Makefile that I use as a starting point (for Ruby projects)</p>
<pre><code class="language-Makefile">start: setup
docker-compose up
setup:
docker-compose create
rebuild:
docker-compose run app bundle install
$(MAKE) setup
test: start
docker-compose run app rspec spec/
</code></pre>
<p>This simplifies most projects setup and day-to-day use immensely.</p>
<p>Now, instead of having to remember a bunch of different commands for each
project I just set every project up to have the same public interface,
regardless of if it’s running on the metal or Docker, if it’s Ruby or Golang,
webapp or CLI utility.</p>
<p>Resources for Makefiles:</p>
<ul>
<li><a href="https://matthias-endler.de/2017/makefiles/">Afraid of Makefiles? Don’t be!</a></li>
<li><a href="http://mrbook.org/blog/tutorials/make/">Mrbooks Makefile tutorial</a></li>
<li><a href="https://www.gnu.org/software/make/manual/make.html">The GNU Make Manual</a></li>
</ul>James GiffordRecently, I read an article titled
Time for Makefiles to Make a Comeback
which reminded me of a fantastic UNIX tool that far too many people view as being scary.September 26th 2017 #DevDiscuss - How do you deal with impostor syndrome?2017-09-26T00:00:00+00:002017-10-21T20:13:59+00:00https://armyofminions.com/devdiscuss-imposter-syndrome<p>One of the things that gets talked a lot about in our industry is “impostor syndrome” - basically, the inability to internalize our accomplishments and living in persistent fear of being exposed as a fraud.</p>
<!--more-->
<p><a href="https://twitter.com/shannon_crabill/status/912855186133196800">Shannon</a> asked the twitterverse how they handle it.</p>
<p>To this day, I still struggle with it. I’ve accepted that it’s going to stick around for a long time.</p>
<p>My coping mechanism has 2 parts:</p>
<ol>
<li>Keep a running list of all the awesome things you’ve done.</li>
<li>Read that list regularly.</li>
</ol>
<p>It’s not just enough for us to put down what we did and why it was awesome (that sense of accomplishment/”done”-ness is definitely amazing!), but we also need to refresh our memory. It’s unfortunate that as a general rule, we tend to look on the depressing side of things and forget the happy, good things.</p>
<p>Here are the most recent things on my list:</p>
<ul>
<li>2017-10-03: Figured out how to use function_score and functions in elasticsearch.</li>
<li>2017-10-01: Started work in integrating precalculated scores into elasticsearch geo coding.</li>
<li>2017-09-29: Managed communications with management during a bug-in-production. Learned some valuable lessons in how to communicate during semi-crisis situations.</li>
</ul>
<p>Every Monday morning, I read the list of things I’ve accomplished. On days I’ve been run through the wringer, I pull up the text file and read through it. It helps, a little. Since I started this 6 months ago, I’ve noticed that impostor syndrome is still there, but it isn’t as severe as it used to be.</p>
<p>Just remember:</p>
<blockquote>
<p>Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use.</p>
<ul>
<li>Steve Jobs</li>
</ul>
</blockquote>JamesOne of the things that gets talked a lot about in our industry is “impostor syndrome” - basically, the inability to internalize our accomplishments and living in persistent fear of being exposed as a fraud.September 5th 2017 #DevDiscuss - What are some career mistakes you’ve made or observed in others?2017-09-09T00:00:00+00:002017-10-21T20:13:59+00:00https://armyofminions.com/devdiscuss-for-september-5th-2017<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">What are some career mistakes you've made or observed in others? How do you avoid them? <a href="https://twitter.com/hashtag/devdiscuss?src=hash">#devdiscuss</a></p>— The Practical Dev (@ThePracticalDev) <a href="https://twitter.com/ThePracticalDev/status/905235894613024769">September 6, 2017</a></blockquote>
<!--more-->
<p>This one is near and dear to my heart, because I believe that as an industry, we
try to dust our career mistakes under the rug and pretend that they don’t exist.</p>
<p>My most memorable career mistake wasn’t a technical one - although the time I
commented out <code class="language-plaintext highlighter-rouge">invoice.charge_card!</code> and deployed to prod is
<em>definitely</em> memorable.</p>
<p>Once upon a time, I was a younger, much more naive developer, who believed that
<code class="language-plaintext highlighter-rouge">work == purpose == life == meaning == happiness</code>.</p>
<p>Needless to say, that didn’t go so well long term.</p>
<p>After about 6 months of consistently not attending
family events and working most nights and weekends, I woke up with no memory of
falling asleep.</p>
<p>My journal entry from the day before:</p>
<blockquote>
<p>I just sat and cried for 20 minutes for no reason.</p>
</blockquote>
<blockquote>
<p>5:07PM</p>
</blockquote>
<p>And my journal entry from that morning:</p>
<blockquote>
<p>Not sure what happened last night (or this morning).</p>
</blockquote>
<blockquote>
<p>The last thing I remember is writing about crying for no reason last night,
and then I woke up a few hours (edit: 2AM). I didn’t text anyone or anything,
which is even weirder.</p>
</blockquote>
<blockquote>
<p>10:14AM</p>
</blockquote>
<p>Just over a week later, I wrote that I had worked 40 hours that week and
it was only 4PM on Wednesday. At this point (in hindsight) my journal was
turning into a remarkably self-aware (if lacking in understanding) startup and
emotional horror story.</p>
<p>Fast forward a month, and I was beginning to feel that while I needed to
make a change, things weren’t that bad.</p>
<p>And then Wednesday happened.</p>
<p>I spent an entire hour sitting in the parking lot, unable to force myself to
<em>show up to work</em>. One of my coworkers had to come out and
ask me if something was wrong before I was able to go into the building.</p>
<p>I felt empty. No anger, no pain, no joy. Just nothing.</p>
<p>It was in a full 2 months from that first entry until I realized I needed to
make a change (amazing how when you’re in a hole, it’s obvious to everyone
except you that you’re in a hole) and started actively looking for a new job
because I didn’t know what else to change.</p>
<p>So I found a new job (which has been great) and have been slowly healing ever since.</p>
<p>The moral of the story is…</p>
<blockquote>
<p><strong>Never</strong> put anything before your self care and happiness.
The ability to give selflessly is important, but there comes a point at which
you will have given far more than you can give, and overdrafts on the accounts
of emotion and health <strong>carry very hefty fees</strong>.</p>
</blockquote>
<p>Anyone who would like to talk to me about <em>their</em> burnout, feel free to email me.
Sometimes you just need someone to talk to who has been there before.</p>
<blockquote>
<p>james@armyofminions.com</p>
</blockquote>
<p>Resources for self care and dealing with burnout:</p>
<ul>
<li>A great twitter bot that posts reminders to take care of yourself
<a href="https://twitter.com/selfcare_tech">@selfcare_tech</a></li>
<li>A great website listing resources for handling self care
<a href="http://selfcare.tech">selfcare.tech</a></li>
<li><a href="http://philome.la/jace_harr/you-feel-like-shit-an-interactive-self-care-guide/play">You feel like shit</a>. Great little site that walks you through some immediate short-term things to help.</li>
</ul>JamesWhat are some career mistakes you've made or observed in others? How do you avoid them? #devdiscuss— The Practical Dev (@ThePracticalDev) September 6, 2017Adventures in Time Blocking2017-04-05T00:00:00+00:002017-10-21T20:13:59+00:00https://armyofminions.com/adventures-in-time-blocking<p>For the past 2 weeks, I’ve been experimenting with the idea of time blocking my day, and am happy to say that for the most part, it works.</p>
<!--more-->
<p>The idea of time blocking was popularized recently by <a href="http://calnewport.com/blog/2013/12/21/deep-habits-the-importance-of-planning-every-minute-of-your-work-day/">Cal Newport</a>, a computer science professor and author.</p>
<p>The premise is simple - plan out every single minute of your day, and you are now in control of your day and the outcome.</p>
<p>If we were having a conversation, this is where you would (likely) say something like this:</p>
<blockquote>
<p>But James, that’ll never work! I have meetings and people pulling me into design discussions and OMG I’ll never be able to make it work!</p>
</blockquote>
<p>To which I respond: If you don’t make time for your own work, <strong>nobody else will</strong>. It’s that simple.</p>
<blockquote>
<p>James, I don’t know what I’m doing in 15 minutes, let alone for the entire day!</p>
</blockquote>
<p>I think you do. If you sit down and think for a few minutes with a pen & pencil (that’s a must!) and write out anything that comes to mind, you’ll know what you have to do for the day. Your page will be messy (“walk the dog” right next to “send pitch deck to Balsa Ventures” right next to “fix bug #432”), and not everything there should be done, but you’ll have an idea of what is truly important and can get started.</p>
<p>I’m not going to claim that it’s a piece of cake to engage in time blocking - our entire modern world is built around distraction. But without an emphasis on hours at a time spent on big, knotty problems you will forever be behind and at the mercy of others.</p>
<p>Additional resources on time blocking:</p>
<ul>
<li>http://www.lifehack.org/articles/productivity/scheduling-time-blocks.html</li>
<li>https://toggl.com/time-blocking</li>
<li>https://www.entrepreneur.com/article/226231</li>
<li>http://calnewport.com/blog/2013/12/21/deep-habits-the-importance-of-planning-every-minute-of-your-work-day/</li>
<li>http://calnewport.com/blog/2015/09/29/deep-habits-three-recent-daily-plans/</li>
</ul>JamesFor the past 2 weeks, I’ve been experimenting with the idea of time blocking my day, and am happy to say that for the most part, it works.