<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Parveen Kaler</title>
    <description>Engineering Leader • Builder • Entrepreneur</description>
    <link>https://kaler.io/</link>
    <atom:link href="https://kaler.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 20 Jul 2026 16:21:14 +0000</pubDate>
    <lastBuildDate>Mon, 20 Jul 2026 16:21:14 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Book Notes: Ultralearning by Scott Young</title>
        <description>&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot; https://www.amazon.com/Ultralearning-Master-Outsmart-Competition-Accelerate-ebook/dp/B07K6MF8MD/ &quot;&gt;
&lt;img src=&quot;/images/ultralearning/thumbnail.jpg&quot; alt=&quot;Ultralearning by
Scott Young&quot; width=&quot;200&quot; height=&quot;300&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Ultralearning-Master-Outsmart-Competition-Accelerate-ebook/dp/B07K6MF8MD/&quot;&gt;Ultralearning&lt;/a&gt; is a prescriptive work that teaches an intense and
self-directed strategy for acquiring skills and knowledge.&lt;/p&gt;

&lt;h3 id=&quot;principles-of-ultralearning&quot;&gt;Principles of Ultralearning&lt;/h3&gt;

&lt;p&gt;There are 9 principles in Ultraleaning:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Metalearning&lt;/li&gt;
  &lt;li&gt;Focus&lt;/li&gt;
  &lt;li&gt;Directness&lt;/li&gt;
  &lt;li&gt;Drill&lt;/li&gt;
  &lt;li&gt;Retrieval&lt;/li&gt;
  &lt;li&gt;Feedback&lt;/li&gt;
  &lt;li&gt;Retention&lt;/li&gt;
  &lt;li&gt;Intuition&lt;/li&gt;
  &lt;li&gt;Experimentation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Metalearning&lt;/strong&gt; involves researching syntopically.  Start by drawing
  a map of how to learn the subject or skill.  Metalearning may differ
  based upon &lt;em&gt;Instrumental&lt;/em&gt; vs &lt;em&gt;Intrinsic&lt;/em&gt; projects.  Instrumental
  projects are those with the purpose of achieving a specific result.
  Instrinsic projects are those that are pursued for their own sake.&lt;/p&gt;

&lt;p&gt;Interviewing an expert may help with Metalearning.  The key is to
  write a simple, to the point email, explaining why you’re reaching
  out and asking for fifteen minutes of their time.&lt;/p&gt;

&lt;p&gt;The subject can then be structured into &lt;em&gt;Concepts&lt;/em&gt;, &lt;em&gt;Facts&lt;/em&gt;, and &lt;em&gt;Procedures&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus&lt;/strong&gt; involves cultivating time to concentrate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Directness&lt;/strong&gt; involves learning the subject by directly working on
  the subject rather than proxies.  Opting for a project rather than a
  class may be better for learning.  &lt;em&gt;Immersion&lt;/em&gt; is the process of
  surrounding yourself with the subject or skill.  This allows for
  much more practice than typical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drill&lt;/strong&gt; involves improving your weakest points by repeatedly
  practicing.  Careful analysis and deliberate practice is key.  This
  is especially key for the &lt;em&gt;Rate-deterimining steps&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrieval&lt;/strong&gt; involves actively recalling information.  Flash cards
  are a simple but effective tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback&lt;/strong&gt; involves calibrating knowledge of the subject or skill.
  There are three types of feedback: &lt;em&gt;Outcome&lt;/em&gt;, &lt;em&gt;Corrective&lt;/em&gt;, and
  &lt;em&gt;Metafeedback&lt;/em&gt;.  Learning rate is an example of metafeedback.
  High-intensity, rapid feedback provides both informational and
  emotional advantages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rentention&lt;/strong&gt; involves learning things for now and forever.
  Spreading learning sessions over more intervals over longer periods
  of time tends to cause better performance in the long run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intuition&lt;/strong&gt; involves getting a feel for the subject by exploring and
  playing with concepts.  Most people learn abstract rules after being
  exposed to many concrete examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experimentation&lt;/strong&gt; involves discovering past the known edges of a
  subject and discovering new knowledge.&lt;/p&gt;

</description>
        <pubDate>Mon, 24 Aug 2020 00:00:00 +0000</pubDate>
        <link>https://kaler.io/ultralearning-scott-young</link>
        <guid isPermaLink="true">https://kaler.io/ultralearning-scott-young</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Book Notes: The Score Takes Care Of Itself by Bill Walsh</title>
        <description>&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot;https://www.amazon.com/Score-Takes-Care-Itself-Philosophy/dp/1591843472&quot;&gt;
&lt;img src=&quot;/images/the-score-takes-care-of-itself/cover.jpg&quot; alt=&quot;The
Score Takes Care of Itself by Bill Walsh&quot; width=&quot;400&quot; height=&quot;600&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Score-Takes-Care-Itself-Philosophy/dp/1591843472&quot;&gt;The Score Takes Care of Itself&lt;/a&gt;
describes the attitudes and actions required for implementing a high
Standard of Performance.&lt;/p&gt;

&lt;h3 id=&quot;standard-of-performance&quot;&gt;Standard of Performance&lt;/h3&gt;

&lt;p&gt;Guidelines for createing a &lt;em&gt;Standard of Performance&lt;/em&gt;:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Create a comprehensive list of specific attitudes and actions&lt;/li&gt;
  &lt;li&gt;Communicate clearly that high effort and execution is expected&lt;/li&gt;
  &lt;li&gt;Communicate expectation of high expertise&lt;/li&gt;
  &lt;li&gt;Teach connection and extension to the team&lt;/li&gt;
  &lt;li&gt;Make metrics explicit&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fundamental leadership assertion: Regardless of your specific job, it
is vital to our team that you do that job at the highest possible
level in all its various aspects.&lt;/p&gt;

&lt;p&gt;A philosophy is the aggregate of your attitudes toward fundamental
matters and is derived from a process of consciously thinking about
critical issues and developing rational reasons for holding one
particular belief or position rather than another.&lt;/p&gt;

&lt;p&gt;Hire personnel with four characteristics:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Talent&lt;/li&gt;
  &lt;li&gt;Character&lt;/li&gt;
  &lt;li&gt;Functional intelligence&lt;/li&gt;
  &lt;li&gt;Eagerness to adopt philosophy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There was no timetable for the 49ers to win a Super Bowl.  There was a
comprehensive standard and plan for installing a level of higher
competency in all areas.  Have faith the score would take care of
itself.&lt;/p&gt;

&lt;h3 id=&quot;innovation-planning-and-common-sense&quot;&gt;Innovation, Planning, and Common Sense&lt;/h3&gt;

&lt;p&gt;Create scripts or plans before heading into “foul weather”:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Flying by the seat of your pants precedes crashing by the seat of
your pants.&lt;/li&gt;
  &lt;li&gt;When you prepare for everything, you’re ready for anything.&lt;/li&gt;
  &lt;li&gt;Create a crisis-management team that is smart enough to anticipate
and plan for crises.&lt;/li&gt;
  &lt;li&gt;All personnel must recognize that your organization is adaptive and
dynamic in facing unstable weather.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;people-priorities-and-performance&quot;&gt;People, Priorities, and Performance&lt;/h3&gt;

&lt;p&gt;Checklist of personal qualities in staff members:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;A fundamental knowledge of their area&lt;/li&gt;
  &lt;li&gt;High energy and enthusiasm&lt;/li&gt;
  &lt;li&gt;Ability to discern talent in potential employees&lt;/li&gt;
  &lt;li&gt;Ability to communicate&lt;/li&gt;
  &lt;li&gt;Unconditional loyalty to team&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Checklist for keeping staff on the same page:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Establish clear parameters and methods for staff&lt;/li&gt;
  &lt;li&gt;Address philosophical differences privately and one-on-one&lt;/li&gt;
  &lt;li&gt;Use different approaches that vary with staff&lt;/li&gt;
  &lt;li&gt;Be visible to all departments&lt;/li&gt;
  &lt;li&gt;Delegate but monitor&lt;/li&gt;
  &lt;li&gt;Correct differences in philosophy in different departments&lt;/li&gt;
  &lt;li&gt;Watch out for teaching of personal beliefs&lt;/li&gt;
  &lt;li&gt;Prioritize personal contact&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Daily reminders to stay on track during a losing streak:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Concentrate on what will produce results rather than on the
results, the process rather than the prize.&lt;/li&gt;
  &lt;li&gt;Rely on expertise, composure, patience, and common sense&lt;/li&gt;
  &lt;li&gt;Maintain the Standard of Performance&lt;/li&gt;
  &lt;li&gt;Don’t isolate yourself&lt;/li&gt;
  &lt;li&gt;Don’t let the magnitude of the challenge take away from the next
incremental step.&lt;/li&gt;
  &lt;li&gt;Stay upbeat and determined.&lt;/li&gt;
  &lt;li&gt;Hold staff meetings with what to expect.&lt;/li&gt;
  &lt;li&gt;Don’t label a new plan as the thing that will “get us back on
track”.&lt;/li&gt;
  &lt;li&gt;Maintain courtesy and respect.&lt;/li&gt;
  &lt;li&gt;Don’t plead with employees to “do better”.&lt;/li&gt;
  &lt;li&gt;Avoid threatening or chastising.&lt;/li&gt;
  &lt;li&gt;Deal with immediate superiors one-on-one.&lt;/li&gt;
&lt;/ol&gt;

</description>
        <pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
        <link>https://kaler.io/the-score-takes-care-of-itself-bill-walsh</link>
        <guid isPermaLink="true">https://kaler.io/the-score-takes-care-of-itself-bill-walsh</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Book Notes: High Output Management by Andy Grove</title>
        <description>&lt;p&gt;&lt;em&gt;I am writing a series of posts on management books including High
Output Managment, Measure What Matters, The Score Takes Care Of
Itself, and Trillion Dollar Coach.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Subscribe by &lt;a href=&quot;http://parveenkaler.com/feed.xml&quot;&gt;RSS&lt;/a&gt; or
 &lt;a href=&quot;http://eepurl.com/gbexrP&quot;&gt;Email&lt;/a&gt; to get updates.&lt;/em&gt;&lt;/p&gt;

&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot;https://www.amazon.com/High-Output-Management-Andrew-Grove/dp/0679762884&quot;&gt;
&lt;img src=&quot;/images/high-output-management/cover.jpg&quot; alt=&quot;High Output
Managment by Andy Grove&quot; width=&quot;400&quot; height=&quot;600&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/High-Output-Management-Andrew-Grove/dp/0679762884&quot;&gt;High Output Management&lt;/a&gt;
is concerned with improving the performance of technology company
managers.  It contains three central ideas:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;An output oriented approach to management.&lt;/li&gt;
  &lt;li&gt;The output of a manager is the output of organizational units under
his or her supervision and influence.&lt;/li&gt;
  &lt;li&gt;High productivity depends on performing high leverage tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;leverage-and-the-factory-metaphor&quot;&gt;Leverage and the Factory Metaphor&lt;/h2&gt;

&lt;p&gt;The author uses a manufacturing production metaphor to support his
thesis.  The basic requirements of production are to build and deliver
products in response to the demands of the customer at a scheduled
time, at an acceptable quality level, and at the lowest possible cost.&lt;/p&gt;

&lt;p&gt;Production consists of tasks that are arranged in steps.  The first
thing we must do is determine the &lt;strong&gt;limiting step&lt;/strong&gt;.  The &lt;strong&gt;limiting
step&lt;/strong&gt; is the point where the highest &lt;strong&gt;leverage&lt;/strong&gt; can be applied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Leverage&lt;/strong&gt; is the output generated by a specific type of work
activity.  An activity with high leverage will generate a high level
of output.  An activity with low leverage will generate a low level
of output.&lt;/p&gt;

&lt;h2 id=&quot;managers-and-leverage&quot;&gt;Managers and Leverage&lt;/h2&gt;

&lt;p&gt;A manager’s output is the output of his organization and the output of
the neighbouring organizations under his influence.  A distinction
must be made between the activities that a manager performs and output
that is actually achieved.&lt;/p&gt;

&lt;p&gt;A manager’s output is the sum of the result of the individual
activities having varying degrees of leverage.  The key to high output
means being aware of leverage.&lt;/p&gt;

&lt;p&gt;Managerial productivity can be improved in three ways:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Increasing the rate at which activities are performed.&lt;/li&gt;
  &lt;li&gt;Incresing the leverage associated with activities.&lt;/li&gt;
  &lt;li&gt;Shifting from low leverage activities to high leverage activities.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;High leverage activities can be organized in three ways:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;When many people are affected by one manager.&lt;/li&gt;
  &lt;li&gt;When a person’s activity is affected over a long period of time by
a manager’s brief, well-focused set of actions.&lt;/li&gt;
  &lt;li&gt;When a large group’s work is affected by an individual supplying a
unique, key piece of knowledge.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-monitoring&quot;&gt;Managers and Monitoring&lt;/h2&gt;

&lt;p&gt;How often a subordinate should be monitored depends on his
&lt;strong&gt;task-relevant maturity&lt;/strong&gt;.  &lt;strong&gt;Task-relevant maturity&lt;/strong&gt; is the amount
of experience and prior performance with a specific task.&lt;/p&gt;

&lt;p&gt;Monitoring is a form of quality assurance.  Quality assurance should
be added at the lowest-added-value stage of process based upon
&lt;strong&gt;task-relevant maturity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, for senior engineers with high amounts of experience,
code can simply be reviewed at the time a pull request is created.
Training and review before a task is started is required for junior
engineers with low amounts of experience.&lt;/p&gt;

&lt;h2 id=&quot;managers-and-calendars&quot;&gt;Managers and Calendars&lt;/h2&gt;

&lt;p&gt;As an individual contributor, I am used to Getting Things Done.  This
means getting things out of the calendar, email, Slack, and meetings
and onto my TODO list that I sequentially grind through in a focused
manner.&lt;/p&gt;

&lt;p&gt;High output management requires the opposite mindset.  The calendar
must be used as a production planning tool by:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Filling holes between time-critical events with non-time-critical
but necessary activities.&lt;/li&gt;
  &lt;li&gt;Saying no to work beyond your capacity.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-meetings&quot;&gt;Managers and Meetings&lt;/h2&gt;

&lt;p&gt;Manufacturers turn out standard products.  Managers must take a
similar approach pinning down the types of interruptions they see and
preparing standard responses.  This is the role of meetings.&lt;/p&gt;

&lt;p&gt;Sets of similar chores should be batched together.  These should be
accumulated and handled at once in staff and one-on-one meetings.  An
event that was irregular must be standardized and turned into
something regular.&lt;/p&gt;

&lt;p&gt;There are two general types of meetings:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Process-oriented meetings&lt;/strong&gt; take place on a regular schedule and
are for knowledge exchange.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mission-oriented meetings&lt;/strong&gt; are one off events designed to solve
a specific problem.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-decisions&quot;&gt;Managers and Decisions&lt;/h2&gt;

&lt;p&gt;The output of meetings are decisions.  High output decisions need to
settle six important questions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;What decision needs to be made?&lt;/li&gt;
  &lt;li&gt;When does it have to be made?&lt;/li&gt;
  &lt;li&gt;Who will decide?&lt;/li&gt;
  &lt;li&gt;Who will need to be consulted prior to making the decision?&lt;/li&gt;
  &lt;li&gt;Who will ratify or veto the decision?&lt;/li&gt;
  &lt;li&gt;Who will need to be informed of the decision?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-objectives&quot;&gt;Managers and Objectives&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Difference analysis&lt;/strong&gt; is determining what the environment demands of
you today and what the environment will demand of you in the future.
How you react to this gap is the key outcome of a planning process.&lt;/p&gt;

&lt;p&gt;This is the basis of a successful &lt;strong&gt;Management by Objective (MBO)&lt;/strong&gt;
system:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Objective: Where do I want to go?&lt;/li&gt;
  &lt;li&gt;Key Results: How will I pace myself to see if I am getting there?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-dual-reporting&quot;&gt;Managers and Dual Reporting&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mission-oriented&lt;/strong&gt; organizations are split into business units with
little tie-in to other business units.  &lt;strong&gt;Function-oriented&lt;/strong&gt;
organizations are split into units grouped by function.&lt;/p&gt;

&lt;p&gt;This yields &lt;strong&gt;Grove’s Law&lt;/strong&gt;: All large organizations with a common
purpose end up in a hybrid organizational form.&lt;/p&gt;

&lt;p&gt;For managers to be high leverage:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;They must accept hybrid organizations.&lt;/li&gt;
  &lt;li&gt;They must master dual reporting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-modes-of-control&quot;&gt;Managers and Modes of Control&lt;/h2&gt;

&lt;p&gt;There are three main ways that actions can be influenced:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Free-market forces&lt;/li&gt;
  &lt;li&gt;Contractual obligations&lt;/li&gt;
  &lt;li&gt;Cultural values&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Management creates a common set of values through articulation and by
example.&lt;/p&gt;

&lt;p&gt;Given a set of conditions, there is always a &lt;strong&gt;most appropriate mode of
control&lt;/strong&gt;.  This is governed by a person’s motivation and their
environment.  Environmental factors are an index of complexity,
uncertainty, and ambiguity which is called the &lt;strong&gt;CUA factor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/high-output-management/cua-factor.png&quot; alt=&quot;CUA Factor&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;managers-and-performance&quot;&gt;Managers and Performance&lt;/h2&gt;

&lt;p&gt;There are two reasons why a person may not being doing their job:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;They are not capable.&lt;/li&gt;
  &lt;li&gt;They are not motivated.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are two ways to improve performance:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Training&lt;/li&gt;
  &lt;li&gt;Motivation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The ideal manager is an excellent coach that:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Takes no personal credit for the success of the team and as a
result the team trusts him.&lt;/li&gt;
  &lt;li&gt;He is tough on the team and gets their best performance out of
them.&lt;/li&gt;
  &lt;li&gt;A good coach was likely a good player at one time.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;managers-and-feedback&quot;&gt;Managers and Feedback&lt;/h2&gt;

&lt;p&gt;The goal of a assessment is to improve performance.  This can
be done by assessing the employees skill level and closing gaps.  And
also by intensify the employees motivation.&lt;/p&gt;

&lt;p&gt;There are three keys when delivering a review:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Leveling: clearly providing praise and criticism&lt;/li&gt;
  &lt;li&gt;Listening: employing all of your senses to make certain you’ve been
heard&lt;/li&gt;
  &lt;li&gt;Leaving yourself out.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Given a performance problem, there are 5 stages in performance
problem.  The biggest step is &lt;strong&gt;assuming responsibility&lt;/strong&gt; because it
requires both an intellectual and emotional step.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/high-output-management/finding-a-solution.png&quot; alt=&quot;Problem Solving&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 21 Apr 2019 00:00:00 +0000</pubDate>
        <link>https://kaler.io/high-output-management-andy-grove</link>
        <guid isPermaLink="true">https://kaler.io/high-output-management-andy-grove</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Book Notes: Drive</title>
        <description>&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot;https://www.amazon.com/Drive-Surprising-Truth-About-Motivates/dp/1594484805&quot;&gt;
&lt;img src=&quot;/images/drive/cover.jpg&quot; alt=&quot;Drive by Daniel Pink&quot; width=&quot;400&quot; height=&quot;600&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Drive-Surprising-Truth-About-Motivates/dp/1594484805&quot;&gt;Drive&lt;/a&gt;
studies the science of motivation.  The author takes the current
carrot-and-stick model of motivation and expands it with three
concepts.  &lt;strong&gt;Autonomy&lt;/strong&gt; is the desire to direct our own lives.
&lt;strong&gt;Mastery&lt;/strong&gt; is the urge to make progress and get better at something
that matters.  &lt;strong&gt;Purpose&lt;/strong&gt; is the yearning to do something in the
service of something larger than ourselves.&lt;/p&gt;

&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;/h3&gt;

&lt;p&gt;The author separates motivation into three layers.  Motivation 1.0 is
the biological drive for food, water, and sex.  Motivation 2.0 is
built around external rewards and punishments.  And Motivation 3.0
consists of Authority, Mastery, and Purpose.&lt;/p&gt;

&lt;p&gt;The problem with Motivation 2.0 is that it may squash intrinsic
motivation.  It may also encourage unethical behaviour and short-term
thinking.  Motivation 2.0 may be useful for rote tasks.  However, it
is problematic for creative work.&lt;/p&gt;

&lt;h3 id=&quot;autonomy&quot;&gt;Autonomy&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Autonomy&lt;/strong&gt; consists of four conditions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Task autonomy (What a person does)&lt;/li&gt;
  &lt;li&gt;Time autonomy (When it is done)&lt;/li&gt;
  &lt;li&gt;Team autonomy (Whom they do it with)&lt;/li&gt;
  &lt;li&gt;Technique autonomy (How they do it)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;mastery&quot;&gt;Mastery&lt;/h3&gt;

&lt;p&gt;Engagement produces &lt;strong&gt;Mastery&lt;/strong&gt;.  Mastery begins with Mihaly
Csikszentmihalyi’s concept of &lt;strong&gt;Flow&lt;/strong&gt;.  A task must match our
abilities and not be too easy or too hard.&lt;/p&gt;

&lt;p&gt;There are three rules to &lt;strong&gt;Mastery&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Growth mindset&lt;/li&gt;
  &lt;li&gt;Effort, grit, and deliberate practice&lt;/li&gt;
  &lt;li&gt;Asymptotic.  Mastery is a journey, not a destination.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;purpose&quot;&gt;Purpose&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt; is the desire to make a contribution to a cause that is
  greater than oneself that endures over the long term.&lt;/p&gt;

&lt;p&gt;Purpose is expressed in three ways:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Goals that address profits and purpose&lt;/li&gt;
  &lt;li&gt;Language that expresses more than self-interest&lt;/li&gt;
  &lt;li&gt;Policies that allow the pursuit of purpose&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate>
        <link>https://kaler.io/drive-daniel-pink</link>
        <guid isPermaLink="true">https://kaler.io/drive-daniel-pink</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        <category>psychology</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Book Notes: 7 Powers</title>
        <description>&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot;https://www.amazon.com/7-Powers-Foundations-Business-Strategy-ebook/dp/B01MRLFFQ7&quot;&gt;
&lt;img src=&quot;/images/7-powers/cover.png&quot; alt=&quot;7 Powers&quot; width=&quot;400&quot; height=&quot;600&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/7-Powers-Foundations-Business-Strategy-ebook/dp/B01MRLFFQ7&quot;&gt;7 Powers&lt;/a&gt;
analyzes the statics and dynamics of business strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Statics&lt;/strong&gt; is about &lt;em&gt;“Being There”&lt;/em&gt;.  What makes a business so durably
 valuable?  &lt;strong&gt;Dynamics&lt;/strong&gt; is about &lt;em&gt;“Getting There”&lt;/em&gt;.  What developments
 yielded this attractive state of affairs in the first place?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power&lt;/strong&gt; is defined as the set of conditions creating the potential for
 persistent differential returns.&lt;/p&gt;

&lt;p&gt;The author lists the 7 Powers as:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Scale Economies&lt;/li&gt;
  &lt;li&gt;Network Economies&lt;/li&gt;
  &lt;li&gt;Counter-Positioning&lt;/li&gt;
  &lt;li&gt;Switching Costs&lt;/li&gt;
  &lt;li&gt;Branding&lt;/li&gt;
  &lt;li&gt;Cornered Resource&lt;/li&gt;
  &lt;li&gt;Process Power&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;equations&quot;&gt;Equations&lt;/h3&gt;

&lt;p&gt;The author defines a &lt;strong&gt;Fundamental Equation of Strategy&lt;/strong&gt; as:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  Value = Mgsm
  
Where:
  M = current market size
  g = discounted market growth factor
  s = long term market share
  m = long term differential margin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Each of the chapters on the 7 Powers also derive a &lt;strong&gt;Surplus Leader
Margin&lt;/strong&gt; for each of the Powers.  &lt;strong&gt;Surplus Leader Margin&lt;/strong&gt; is the profit
margin the business with Power can expect to achieve if pricing is
such that its competitor’s profits are zero.&lt;/p&gt;

&lt;p&gt;Surplus Leader Margin is an important concept to think through.
However, I found the equations more academic than pragmatic.&lt;/p&gt;

&lt;h3 id=&quot;1-scale-economies&quot;&gt;1) Scale Economies&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scale Economies&lt;/strong&gt; is a business in which per unit cost declines as
production volume increases.&lt;/p&gt;

&lt;p&gt;The benefit is that you can offer a lower price to customers over
time than your competitors can.  And you can decrease investment over
time faster than your competition.&lt;/p&gt;

&lt;h3 id=&quot;2-network-economies&quot;&gt;2) Network Economies&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Network Economies&lt;/strong&gt; is a business in which the value realized by a
customer increases as the installed base increases.&lt;/p&gt;

&lt;p&gt;Network Economies business are, in general, winner-take-all.  This
creates a massive barrier to entry from competitors.&lt;/p&gt;

&lt;h3 id=&quot;3--counter-positioning&quot;&gt;3)  Counter-Positioning&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Counter-Positioning&lt;/strong&gt; is when a newcomer adopts a new superior
business model with the incumbent does not mimic due to damaging
their existing business.&lt;/p&gt;

&lt;p&gt;I found this chapter be the best written and the most insightful.  The
author lists multiple reasons why an incumbent may not be able to
challenge an upstart:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Milking the old business or Negative Combined Net Present Value&lt;/li&gt;
  &lt;li&gt;History’s Slave or having a Cognitive Bias against the new business&lt;/li&gt;
  &lt;li&gt;Job Security or
&lt;a href=&quot;https://en.wikipedia.org/wiki/Principal–agent_problem&quot;&gt;The Principal Agent Problem&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;4-switching-costs&quot;&gt;4) Switching Costs&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Switching Costs&lt;/strong&gt;  is when the value loss expected by a customer
that would be incurred from switching to an alternate supplier for
additional purchases.&lt;/p&gt;

&lt;p&gt;There may be financial, procedural, or relational switching costs.&lt;/p&gt;

&lt;h3 id=&quot;5-branding&quot;&gt;5) Branding&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Branding&lt;/strong&gt; is an asset that communicates information and evokes
positive emotions in the customer, leading to an increased willingness
to pay for the product.  It is the durable attribution of higher value
to an objectively identical offering that arises from historical
information about the seller.&lt;/p&gt;

&lt;h3 id=&quot;6-cornered-resource&quot;&gt;6) Cornered Resource&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;Cornered Resource&lt;/strong&gt; is preferential access at attractive terms to
a coveted asset that can independently enhance value.&lt;/p&gt;

&lt;p&gt;There are five tests to qualify as a Cornered Resource:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Idiosyncratic. If a firm repeatedly acquires coveted assets at
attractive terms, then the proper strategy question is, “Why are they
able to do this?”&lt;/li&gt;
  &lt;li&gt;Non-arbitraged. Price is not arbitraged away.&lt;/li&gt;
  &lt;li&gt;Transferable. This resource could create value at another firm.&lt;/li&gt;
  &lt;li&gt;Ongoing. Power remains over time.&lt;/li&gt;
  &lt;li&gt;Sufficient. Continued differential returns.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;7-process-power&quot;&gt;7) Process Power&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Process Power&lt;/strong&gt; is company organization and activity sets which
  enable lower costs and superior product, and which can be matched
  only by an extended commitment.&lt;/p&gt;

&lt;p&gt;Process Power equals operational excellence, plus hysteresis.&lt;/p&gt;

&lt;h3 id=&quot;power-intensity-benefits-and-barriers&quot;&gt;Power Intensity, Benefits, and Barriers&lt;/h3&gt;

&lt;p&gt;Power Intensity can be outlined in a table:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/7-powers/power-intensity.png&quot; alt=&quot;Power Intensity&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The Benefits and Barriers to Power can be summarized in a diagram:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/7-powers/power-benefits-barriers.png&quot; alt=&quot;Power Benefits/Barriers&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;power-progression&quot;&gt;Power Progression&lt;/h3&gt;

&lt;p&gt;The author caps the book off with a description of Power Dynamics.
How to get there from here.&lt;/p&gt;

&lt;p&gt;At &lt;strong&gt;Origination&lt;/strong&gt;, a firm must start with a Cornered Resource or
Counter Positioning.  Then at &lt;strong&gt;Takeoff&lt;/strong&gt;, the firm must build
Network Economies, Scale Economies, or Switching Costs.  And when the
firm reaches &lt;strong&gt;Stability&lt;/strong&gt;, the firm must create Branding and Process
Power.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/7-powers/power-progression.png&quot; alt=&quot;Power Progression&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 15 Feb 2019 00:00:00 +0000</pubDate>
        <link>https://kaler.io/book-notes-7-powers-hamilton-helmer</link>
        <guid isPermaLink="true">https://kaler.io/book-notes-7-powers-hamilton-helmer</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        <category>business</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Custom Xcode Templates for UIViewControllers</title>
        <description>&lt;p&gt;One way to enforce good software design and architecture is by using
boiler plate code.  Xcode supports custom file templates to help with
this.&lt;/p&gt;

&lt;p&gt;Let’s walk through creating a custom template for a UIViewController.
First we will create the directory that Xcode looks for templates in. Then
we will copy a template into this directory that we can edit.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ mkdir -p ~/Library/Developer/Xcode/Templates/File\ Templates/Custom
$ cd ~/Library/Developer/Xcode/Templates/File\ Templates/Custom
$ cp /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File\ Templates/Source/Swift\ File.xctemplate Swift\ UIViewController.xctemplate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next open up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TemplateInfo.plist&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; $ open Swift\ UIViewController.xctemplate/TemplateInfo.plist 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You will want to edit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Description&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Summary&lt;/code&gt; fields.&lt;/p&gt;

&lt;p&gt;Next open up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;___FILEBASENAME__.swift&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ open Swift\ UIViewController.xctemplate/___FILEBASENAME___.swift 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I like to split up my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UIViewControllers&lt;/code&gt; using extensions.  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IBOutlets&lt;/code&gt;,
members, and existing initializer‘s must be in the class declaration.
However, lifecycle code can be in an extension.  I also put segues and
actions in their own extensions.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;//___FILEHEADER___

import UIKit

class ___FILEBASENAMEASIDENTIFIER___: UIViewController {

    // MARK: - IBOutlets

    // MARK: - Members

    // MARK: - Initializers
    
    required init?(coder aDecoder: NSCoder) {
        fatalError(&quot;init(coder:) has not been implemented&quot;)
    }
}

extension ___FILEBASENAMEASIDENTIFIER___ {
    
    // MARK: - View lifecycle

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    }

   override  func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    }

   override  func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
    }
}

extension ___FILEBASENAMEASIDENTIFIER___ {
    
    // MARK: - Segues
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Inject dependencies in child viewcontrollers
    }
}

extension ___FILEBASENAMEASIDENTIFIER___ {
    // MARK: - IBActions
    
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now when you create a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File -&amp;gt; New -&amp;gt; File&lt;/code&gt;, the Swift
UIViewController template appears in the dialog box.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/custom-xcode-template-uiviewcontroller/dialog.png&quot; alt=&quot;Custom Template&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 29 Dec 2018 00:00:00 +0000</pubDate>
        <link>https://kaler.io/custom-xcode-template-uiviewcontroller</link>
        <guid isPermaLink="true">https://kaler.io/custom-xcode-template-uiviewcontroller</guid>
        
        <category>xcode</category>
        
        <category>swift</category>
        
        <category>ios</category>
        
        
        <category>xcode</category>
        
      </item>
    
      <item>
        <title>IBInspectable and UIButton Borders in Storyboards</title>
        <description>&lt;p&gt;iOS 7 ushered in the era of flat design.  It also ushered in one major
design flaw.  Buttons do not look like buttons.&lt;/p&gt;

&lt;p&gt;Text that is a button requires visual affordance that it can be tapped
as opposed to text that is purely a label.  The way that I style
buttons is by adding a border with rounded corners.  I feel this adds
the required affordance while still staying true the minimal, flat
design of the rest of the operating system.&lt;/p&gt;

&lt;p&gt;I lay out views in Interface Builder.  It is not possible to set the
border out of the box.  However, we can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@IBInspectable&lt;/code&gt; to help
us.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;// UIView+Inspectable.swift

extension UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue &amp;gt; 0
        }
    }
    
    @IBInspectable var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }
    
    @IBInspectable var borderColor: UIColor? {
        get {
            guard let borderColor = layer.borderColor else {
                return nil
            }
            return UIColor(cgColor: borderColor)
        }
        set {
            layer.borderColor = newValue?.cgColor
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After we add this file to our Xcode project we are able to set these
values in the Attribute Inspector.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/ibinspectable-uibutton/inspector.png&quot; alt=&quot;Attribute Inspector&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 27 Dec 2018 00:00:00 +0000</pubDate>
        <link>https://kaler.io/ibinspectable-uibutton-borders-storyboard</link>
        <guid isPermaLink="true">https://kaler.io/ibinspectable-uibutton-borders-storyboard</guid>
        
        <category>Xcode</category>
        
        <category>Swift</category>
        
        <category>iOS</category>
        
        
        <category>Xcode</category>
        
      </item>
    
      <item>
        <title>Book Notes: Thinking In Systems</title>
        <description>&lt;div style=&quot;text-align:center&quot;&gt;
&lt;a href=&quot;https://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp/1603580557&quot;&gt;
&lt;img src=&quot;/images/thinking-in-systems/cover.png&quot; alt=&quot;Thinking In Systems&quot; width=&quot;400&quot; height=&quot;600&quot; /&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp/1603580557&quot;&gt;Thinking In Systems&lt;/a&gt;
analyzes the structures and behaviours of systems.&lt;/p&gt;

&lt;p&gt;Donella Meadows was an environmental scientist, teacher, and writer.
She primarly focused on systems thinking and how that applied to the
environment.  This type of thinking can also be applied to many other
domains.&lt;/p&gt;

&lt;p&gt;The beefy part of the book lays out a number of systems traps and
analyzes the ways to get out of them.&lt;/p&gt;

&lt;h2 id=&quot;highlights&quot;&gt;Highlights&lt;/h2&gt;

&lt;h3 id=&quot;page-1--location-189&quot;&gt;Page 1 · Location 189&lt;/h3&gt;

&lt;p&gt;The answer clearly lies within the Slinky itself. The hands that manipulate it suppress or release some behavior that is latent within the structure of the spring. That is a central insight of systems theory. Once we see the relationship between structure and behavior, we can begin to understand how systems work, what makes them produce poor results, and how to shift them into better behavior patterns.&lt;/p&gt;
&lt;h3 id=&quot;page-5--location-262&quot;&gt;Page 5 · Location 262&lt;/h3&gt;
&lt;p&gt;I start with the basics: the definition of a system and a dissection of its parts ( in a reductionist, unholistic way ). Then I put the parts back together to show how they interconnect to make the basic operating unit of a system: the feedback loop.&lt;/p&gt;
&lt;h3 id=&quot;page-5--location-264&quot;&gt;Page 5 · Location 264&lt;/h3&gt;
&lt;p&gt;Next I will introduce you to a systems zoo — a collection of some common and interesting types of systems. You’ll see how a few of these creatures behave and why and where they can be found. You’ll recognize them ; they’re all around you and even within you.&lt;/p&gt;
&lt;h3 id=&quot;page-5--location-266&quot;&gt;Page 5 · Location 266&lt;/h3&gt;
&lt;p&gt;With a few of the zoo “ animals ” — a set of specific examples — as a foundation, I’ll step back and talk about how and why systems work so beautifully and the reasons why they so often surprise and confound us.&lt;/p&gt;
&lt;h3 id=&quot;page-11--location-327&quot;&gt;Page 11 · Location 327&lt;/h3&gt;
&lt;p&gt;system * is an interconnected set of elements that is coherently organized in a way that achieves something. If you look at that definition closely for a minute, you can see that a system must consist of three kinds of things: elements, interconnections, and a function or purpose.&lt;/p&gt;
&lt;h3 id=&quot;page-12--location-346&quot;&gt;Page 12 · Location 346&lt;/h3&gt;
&lt;p&gt;A system is more than the sum of its parts. It may exhibit adaptive, dynamic, goal - seeking, self - preserving, and sometimes evolutionary behavior.&lt;/p&gt;
&lt;h3 id=&quot;page-14--location-384&quot;&gt;Page 14 · Location 384&lt;/h3&gt;
&lt;p&gt;Many of the interconnections in systems operate through the flow of information. Information holds systems together and plays a great role in determining how they operate.&lt;/p&gt;
&lt;h3 id=&quot;page-14--location-399&quot;&gt;Page 14 · Location 399&lt;/h3&gt;
&lt;p&gt;Purposes are deduced from behavior, not from rhetoric or stated goals.&lt;/p&gt;
&lt;h3 id=&quot;page-16--location-422&quot;&gt;Page 16 · Location 422&lt;/h3&gt;
&lt;p&gt;Keeping sub - purposes and overall system purposes in harmony is an essential function of successful systems.&lt;/p&gt;
&lt;h3 id=&quot;page-17--location-443&quot;&gt;Page 17 · Location 443&lt;/h3&gt;
&lt;p&gt;A change in purpose changes a system profoundly, even if every element and interconnection remains the same.&lt;/p&gt;
&lt;h3 id=&quot;page-18--location-465&quot;&gt;Page 18 · Location 465&lt;/h3&gt;
&lt;p&gt;A stock is the memory of the history of changing flows within the system.&lt;/p&gt;
&lt;h3 id=&quot;page-18--location-466&quot;&gt;Page 18 · Location 466&lt;/h3&gt;
&lt;p&gt;Stocks change over time through the actions of a flow. Flows are filling and draining, births and deaths, purchases and sales, growth and decay, deposits and withdrawals, successes and failures. A stock, then, is the present memory of the history of changing flows within the system.&lt;/p&gt;
&lt;h3 id=&quot;page-22--location-531&quot;&gt;Page 22 · Location 531&lt;/h3&gt;
&lt;p&gt;A stock can be increased by decreasing its outflow rate as well as by increasing its inflow rate. There’s more than one way to fill a bathtub!&lt;/p&gt;
&lt;h3 id=&quot;page-23--location-542&quot;&gt;Page 23 · Location 542&lt;/h3&gt;
&lt;p&gt;Stocks generally change slowly, even when the flows into or out of them change suddenly. Therefore, stocks act as delays or buffers or shock absorbers in systems.&lt;/p&gt;
&lt;h3 id=&quot;page-24--location-562&quot;&gt;Page 24 · Location 562&lt;/h3&gt;
&lt;p&gt;Stocks allow inflows and outflows to be decoupled and to be independent and temporarily out of balance with each other.&lt;/p&gt;
&lt;h3 id=&quot;page-27--location-613&quot;&gt;Page 27 · Location 613&lt;/h3&gt;
&lt;p&gt;A feedback loop is a closed chain of causal connections from a stock, through a set of decisions or rules or physical laws or actions that are dependent on the level of the stock, and back again through a flow to change the stock.&lt;/p&gt;
&lt;h3 id=&quot;page-28--location-639&quot;&gt;Page 28 · Location 639&lt;/h3&gt;
&lt;p&gt;This kind of stabilizing, goal - seeking, regulating loop is called a balancing feedback loop, so I put a B inside the loop in the diagram. Balancing feedback loops are goal - seeking or stability - seeking. Each tries to keep a stock at a given value or within a range of values. A balancing feedback loop opposes whatever direction of change is imposed on the system. If you push a stock too far up, a balancing loop will try to pull it back down. If you shove it too far down, a balancing loop will try to bring it back up.&lt;/p&gt;
&lt;h3 id=&quot;page-31--location-677&quot;&gt;Page 31 · Location 677&lt;/h3&gt;
&lt;p&gt;It is called a reinforcing feedback loop, and will be noted with an R in the diagrams. It generates more input to a stock the more that is already there ( and less input the less that is already there ). A reinforcing feedback loop enhances whatever direction of change is imposed on it.&lt;/p&gt;
&lt;h3 id=&quot;page-32--location-703&quot;&gt;Page 32 · Location 703&lt;/h3&gt;
&lt;p&gt;Reinforcing feedback loops are self - enhancing, leading to exponential growth or to runaway collapses over time. They are found whenever a stock has the capacity to reinforce or reproduce itself.&lt;/p&gt;
&lt;h3 id=&quot;page-39--location-805&quot;&gt;Page 39 · Location 805&lt;/h3&gt;
&lt;p&gt;The information delivered by a feedback loop — even nonphysical feedback — can only affect future behavior; it can’t deliver a signal fast enough to correct behavior that drove the current feedback. Even nonphysical information takes time to feedback into the system.&lt;/p&gt;
&lt;h3 id=&quot;page-40--location-820&quot;&gt;Page 40 · Location 820&lt;/h3&gt;
&lt;p&gt;A stock - maintaining balancing feedback loop must have its goal set appropriately to compensate for draining or inflowing processes that affect that stock. Otherwise, the feedback process will fall short of or exceed the target for the stock.&lt;/p&gt;
&lt;h3 id=&quot;page-48--location-924&quot;&gt;Page 48 · Location 924&lt;/h3&gt;
&lt;p&gt;QUESTIONS FOR TESTING THE VALUE OF A MODEL&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Are the driving factors likely to unfold this way?&lt;/li&gt;
  &lt;li&gt;If they did, would the system react this way?&lt;/li&gt;
  &lt;li&gt;What is driving the driving factors?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;page-50--location-977&quot;&gt;Page 50 · Location 977&lt;/h3&gt;
&lt;p&gt;The central question of economic development is how to keep the
reinforcing loop of capital accumulation from growing more slowly than
the reinforcing loop of population growth — so that people are getting
richer instead of poorer.&lt;/p&gt;

&lt;h3 id=&quot;page-55--location-1040&quot;&gt;Page 55 · Location 1040&lt;/h3&gt;
&lt;p&gt;A delay in a balancing feedback loop makes a system likely to oscillate.&lt;/p&gt;
&lt;h3 id=&quot;page-57--location-1069&quot;&gt;Page 57 · Location 1069&lt;/h3&gt;
&lt;p&gt;Delays are pervasive in systems, and they are strong determinants of behavior. Changing the length of a delay may ( or may not, depending on the type of delay and the relative lengths of other delays ) make a large change in the behavior of a system.&lt;/p&gt;
&lt;h3 id=&quot;page-57--location-1076&quot;&gt;Page 57 · Location 1076&lt;/h3&gt;
&lt;p&gt;We can’t begin to understand the dynamic behavior of systems unless we know where and how long the delays are. And we are aware that some delays can be powerful policy levers. Lengthening or shortening them can produce major changes in the behavior of systems.&lt;/p&gt;
&lt;h3 id=&quot;page-59--location-1113&quot;&gt;Page 59 · Location 1113&lt;/h3&gt;
&lt;p&gt;In physical, exponentially growing systems, there must be at least one reinforcing loop driving the growth and at least one balancing loop constraining the growth, because no physical system can grow forever in a finite environment.&lt;/p&gt;
&lt;h3 id=&quot;page-71--location-1267&quot;&gt;Page 71 · Location 1267&lt;/h3&gt;
&lt;p&gt;Nonrenewable resources are stock - limited. The entire stock is available at once, and can be extracted at any rate ( limited mainly by extraction capital ). But since the stock is not renewed, the faster the extraction rate, the shorter the lifetime of the resource.&lt;/p&gt;
&lt;h3 id=&quot;page-71--location-1270&quot;&gt;Page 71 · Location 1270&lt;/h3&gt;
&lt;p&gt;Renewable resources are flowlimited. They can support extraction or harvest indefinitely, but only at a finite flow rate equal to their regeneration rate. If they are extracted faster than they regenerate, they may eventually be driven below a critical threshold and become, for all practical purposes, nonrenewable.&lt;/p&gt;
&lt;h3 id=&quot;page-75--location-1313&quot;&gt;Page 75 · Location 1313&lt;/h3&gt;
&lt;p&gt;Consider the properties of highly functional systems — machines or human communities or ecosystems — which are familiar to you. Chances are good that you may have observed one of three characteristics: resilience, self - organization, or hierarchy.&lt;/p&gt;
&lt;h3 id=&quot;page-76--location-1323&quot;&gt;Page 76 · Location 1323&lt;/h3&gt;
&lt;p&gt;Resilience is a measure of a system’s ability to survive and persist within a variable environment. The opposite of resilience is brittleness or rigidity.&lt;/p&gt;
&lt;h3 id=&quot;page-76--location-1328&quot;&gt;Page 76 · Location 1328&lt;/h3&gt;
&lt;p&gt;Even higher meta - meta - resilience comes from feedback loops that can learn, create, design, and evolve ever more complex restorative structures. Systems that can do this are self - organizing,&lt;/p&gt;
&lt;h3 id=&quot;page-81--location-1430&quot;&gt;Page 81 · Location 1430&lt;/h3&gt;
&lt;p&gt;Systems often have the property of self - organization — the ability to structure themselves, to create new structure, to learn, diversify, and complexify. Even complex forms of self - organization may arise from relatively simple organizing rules — or may not.&lt;/p&gt;
&lt;h3 id=&quot;page-85--location-1500&quot;&gt;Page 85 · Location 1500&lt;/h3&gt;
&lt;p&gt;When a subsystem’s goals dominate at the expense of the total system’s goals, the resulting behavior is called suboptimization.&lt;/p&gt;
&lt;h3 id=&quot;page-85--location-1512&quot;&gt;Page 85 · Location 1512&lt;/h3&gt;
&lt;p&gt;Hierarchical systems evolve from the bottom up. The purpose of the upper layers of the hierarchy is to serve the purposes of the lower layers.&lt;/p&gt;

&lt;h3 id=&quot;page-86--location-1525&quot;&gt;Page 86 · Location 1525&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Everything we think we know about the world is a model.&lt;/li&gt;
  &lt;li&gt;Our models usually have a strong congruence with the world.&lt;/li&gt;
  &lt;li&gt;However, and conversely, our models fall far short of representing
the world fully. That is why we make mistakes and why we are regularly
surprised.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;page-87--location-1538&quot;&gt;Page 87 · Location 1538&lt;/h3&gt;
&lt;p&gt;Everything we think we know about the world is a model. Our models do have a strong congruence with the world. Our models fall far short of representing the real world fully.&lt;/p&gt;
&lt;h3 id=&quot;page-89--location-1583&quot;&gt;Page 89 · Location 1583&lt;/h3&gt;
&lt;p&gt;System structure is the source of system behavior. System behavior reveals itself as a series of events over time.&lt;/p&gt;
&lt;h3 id=&quot;page-90--location-1596&quot;&gt;Page 90 · Location 1596&lt;/h3&gt;
&lt;p&gt;These behavior - based models are more useful than event - based ones, but they still have fundamental problems. First, they typically overemphasize system flows and underemphasize stocks.&lt;/p&gt;
&lt;h3 id=&quot;page-90--location-1601&quot;&gt;Page 90 · Location 1601&lt;/h3&gt;
&lt;p&gt;Second, and more seriously, in trying to find statistical links that relate flows to each other, econometricians are searching for something that does not exist. There’s no reason to expect any flow to bear a stable relationship to any other flow. Flows go up and down, on and off, in all sorts of combinations, in response to stocks, not to other flows.&lt;/p&gt;
&lt;h3 id=&quot;page-91--location-1625&quot;&gt;Page 91 · Location 1625&lt;/h3&gt;
&lt;p&gt;A linear relationship between two elements in a system can be drawn on a graph with a straight line. It’s a relationship with constant proportions.&lt;/p&gt;
&lt;h3 id=&quot;page-91--location-1628&quot;&gt;Page 91 · Location 1628&lt;/h3&gt;
&lt;p&gt;A nonlinear relationship is one in which the cause does not produce a proportional effect. The relationship between cause and effect can only be drawn with curves or wiggles, not with a straight line.&lt;/p&gt;
&lt;h3 id=&quot;page-106--location-1920&quot;&gt;Page 106 · Location 1920&lt;/h3&gt;
&lt;p&gt;Bounded rationality means that people make quite reasonable decisions based on the information they have. But they don’t have perfect information, especially about more distant parts of the system. Fishermen don’t know how many fish there are, much less how many fish will be caught by other fishermen that same day.&lt;/p&gt;
&lt;h3 id=&quot;page-107--location-1940&quot;&gt;Page 107 · Location 1940&lt;/h3&gt;
&lt;p&gt;Economic theory as derived from Adam Smith assumes first that homo economicus acts with perfect optimality on complete information, and second that when many of the species homo economicus do that, their actions add up to the best possible outcome for everybody.&lt;/p&gt;
&lt;h3 id=&quot;page-111--location-2014&quot;&gt;Page 111 · Location 2014&lt;/h3&gt;
&lt;p&gt;But some systems are more than surprising. They are perverse. These are the systems that are structured in ways that produce truly problematic behavior; they cause us great trouble. There are many forms of systems trouble, some of them unique, but many strikingly common. We call the system structures that produce such common patterns of problematic behavior archetypes. Some of the behaviors these archetypes manifest are addiction, drift to low performance, and escalation.&lt;/p&gt;

&lt;h3 id=&quot;page-116--location-2101&quot;&gt;Page 116 · Location 2101&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-policy-resistance&quot;&gt;THE TRAP: POLICY RESISTANCE&lt;/h4&gt;

&lt;p&gt;When various actors try to pull a
system stock toward various goals, the result can be policy
resistance. Any new policy, especially if it’s effective, just pulls
the stock farther from the goals of other actors and produces
additional resistance, with a result that no one likes, but that
everyone expends considerable effort in maintaining.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out&quot;&gt;THE WAY OUT&lt;/h4&gt;

&lt;p&gt;Let go. Bring in all the actors and use the energy
formerly expended on resistance to seek out mutually satisfactory
ways for all goals to be realized — or redefinitions of larger and
more important goals that everyone can pull toward together.&lt;/p&gt;

&lt;h3 id=&quot;page-119--location-2161&quot;&gt;Page 119 · Location 2161&lt;/h3&gt;

&lt;p&gt;There are three ways to avoid the &lt;em&gt;tragedy of the commons&lt;/em&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Educate and exhort. Help people to see the consequences of unrestrained use of
the commons. Appeal to their morality. Persuade them to be
temperate. Threaten transgressors with social disapproval or eternal
hellfire.&lt;/li&gt;
  &lt;li&gt;Privatize the commons. Divide it up, so that each person
reaps the consequences of his or her own actions. If some people lack
the self - control to stay below the carrying capacity of their own
private resource, those people will harm only themselves and not
others.&lt;/li&gt;
  &lt;li&gt;Regulate the commons. Garrett Hardin calls this option,
bluntly, “ mutual coercion, mutually agreed upon. ” Regulation can
take many forms, from outright bans on certain behaviors to quotas,
permits, taxes, incentives. To be effective, regulation must be
enforced by policing and penalties.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;page-121--location-2202&quot;&gt;Page 121 · Location 2202&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-tragedy-of-the-commons&quot;&gt;THE TRAP: TRAGEDY OF THE COMMONS&lt;/h4&gt;

&lt;p&gt;When there is a commonly shared
resource, every user benefits directly from its use, but shares the
costs of its abuse with everyone else. Therefore, there is very weak
feedback from the condition of the resource to the decisions of the
resource users. The consequence is overuse of the resource, eroding
it until it becomes unavailable to anyone.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-1&quot;&gt;THE WAY OUT:&lt;/h4&gt;
&lt;p&gt;Educate and
exhort the users, so they understand the consequences of abusing the
resource. And also restore or strengthen the missing feedback link,
either by privatizing the resource so each user feels the direct
consequences of its abuse or ( since many resources cannot be
privatized ) by regulating the access of all users to the resource.&lt;/p&gt;

&lt;h3 id=&quot;page-123--location-2249&quot;&gt;Page 123 · Location 2249&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-drift-to-low-performance&quot;&gt;THE TRAP: DRIFT TO LOW PERFORMANCE&lt;/h4&gt;

&lt;p&gt;Allowing performance standards
to be influenced by past performance, especially if there is a
negative bias in perceiving past performance, sets up a reinforcing
feedback loop of eroding goals that sets a system drifting toward low
performance.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-2&quot;&gt;THE WAY OUT:&lt;/h4&gt;
&lt;p&gt;Keep performance standards absolute. Even better, let
standards be enhanced by the best actual performances instead of
being discouraged by the worst. Use the same structure to set up a
drift toward high performance!&lt;/p&gt;

&lt;h3 id=&quot;page-126--location-2302&quot;&gt;Page 126 · Location 2302&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-escalation&quot;&gt;THE TRAP: ESCALATION&lt;/h4&gt;

&lt;p&gt;When the state of one stock is determined by
trying to surpass the state of another stock — and vice versa — then
there is a reinforcing feedback loop carrying the system into an arms
race, a wealth race, a smear campaign, escalating loudness, escalating
violence. The escalation is exponential and can lead to extremes
surprisingly quickly. If nothing is done, the spiral will be stopped
by someone’s collapse — because exponential growth cannot go on
forever.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-3&quot;&gt;THE WAY OUT:&lt;/h4&gt;

&lt;p&gt;The best way out of this trap is to avoid getting in
it. If caught in an escalating system, one can refuse to compete (
unilaterally disarm ), thereby interrupting the reinforcing loop. Or
one can negotiate a new system with balancing loops to control the
escalation.&lt;/p&gt;

&lt;h3 id=&quot;page-130--location-2382&quot;&gt;Page 130 · Location 2382&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-success-to-the-successful&quot;&gt;THE TRAP: SUCCESS TO THE SUCCESSFUL&lt;/h4&gt;
&lt;p&gt;If the winners of a competition
are systematically rewarded with the means to win again, a reinforcing
feedback loop is created by which, if it is allowed to proceed
uninhibited, the winners eventually take all, while the losers are
eliminated.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-4&quot;&gt;THE WAY OUT:&lt;/h4&gt;

&lt;p&gt;Diversification, which allows those who are losing the
competition to get out of that game and start another one; strict
limitation on the fraction of the pie any one winner may win
(antitrust laws); policies that level the playing field, removing some
of the advantage of the strongest players or increasing the advantage
of the weakest; policies that devise rewards for success that do not bias the next round of competition.&lt;/p&gt;

&lt;h3 id=&quot;page-135--location-2475&quot;&gt;Page 135 · Location 2475&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-shifting-the-burden-to-the-intervenor&quot;&gt;THE TRAP: SHIFTING THE BURDEN TO THE INTERVENOR&lt;/h4&gt;

&lt;p&gt;Shifting the
burden, dependence, and addiction arise when a solution to a systemic
problem reduces (or disguises) the symptoms, but does nothing to
solve the underlying problem. Whether it is a substance that dulls
one’s perception or a policy that hides the underlying trouble, the
drug of choice interferes with the actions that could solve the real
problem. If the intervention designed to correct the problem causes
the self - maintaining capacity of the original system to atrophy or
erode, then a destructive reinforcing feedback loop is set in
motion. The system deteriorates; more and more of the solution is
then required. The system will become more and more dependent on the
intervention and less and less able to maintain its own desired state.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-5&quot;&gt;THE WAY OUT:&lt;/h4&gt;
&lt;p&gt;Again, the best way out of this trap is to avoid getting
in. Beware of symptom - relieving or signal - denying policies or
practices that don’t really address the problem. Take the focus off
short - term relief and put it on long term restructuring.&lt;/p&gt;

&lt;h3 id=&quot;page-137--location-2524&quot;&gt;Page 137 · Location 2524&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-rule-beating&quot;&gt;THE TRAP: RULE BEATING&lt;/h4&gt;

&lt;p&gt;Rules to govern a system can lead to rule
beating — perverse behavior that gives the appearance of obeying the
rules or achieving the goals, but that actually distorts the system.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-6&quot;&gt;THE WAY OUT&lt;/h4&gt;

&lt;p&gt;Design, or redesign, rules to release creativity not in
the direction of beating the rules, but in the direction of
achieving the purpose of the rules.&lt;/p&gt;

&lt;h3 id=&quot;page-139--location-2566&quot;&gt;Page 139 · Location 2566&lt;/h3&gt;

&lt;p&gt;GNP is a measure of throughput — flows of stuff made and purchased in
a year — rather than capital stocks, the houses and cars and computers
and stereos that are the source of real wealth and real pleasure.&lt;/p&gt;

&lt;h3 id=&quot;page-142--location-2584&quot;&gt;Page 142 · Location 2584&lt;/h3&gt;

&lt;h4 id=&quot;the-trap-seeking-the-wrong-goal&quot;&gt;THE TRAP: SEEKING THE WRONG GOAL&lt;/h4&gt;
&lt;p&gt;System behavior is particularly
sensitive to the goals of feedback loops. If the goals — the
indicators of satisfaction of the rules — are defined inaccurately or
incompletely, the system may obediently work to produce a result that
is not really intended or wanted.&lt;/p&gt;

&lt;h4 id=&quot;the-way-out-7&quot;&gt;THE WAY OUT&lt;/h4&gt;
&lt;p&gt;Specify indicators and goals that reflect the real
welfare of the system. Be especially careful not to confuse effort
with result or you will end up with a system that is producing
effort, not result.&lt;/p&gt;

&lt;h3 id=&quot;page-164--location-2981&quot;&gt;Page 164 · Location 2981&lt;/h3&gt;

&lt;p&gt;Systems modelers say that we change paradigms by building a model of
the system, which takes us outside the system and forces us to see it
whole.&lt;/p&gt;

&lt;h3 id=&quot;page-164--location-2983&quot;&gt;Page 164 · Location 2983&lt;/h3&gt;

&lt;p&gt;There is yet one leverage point that is even higher than changing a paradigm. That is to keep oneself unattached in the arena of paradigms, to stay flexible, to realize that no paradigm is “ true, ” that every one, including the one that sweetly shapes your own worldview, is a tremendously limited understanding of an immense and amazing universe that is far beyond human comprehension. It is to “ get ” at a gut level the paradigm that there are paradigms, and to see that that itself is a paradigm, and to regard that whole realization as devastatingly funny.&lt;/p&gt;
</description>
        <pubDate>Sun, 23 Dec 2018 00:00:00 +0000</pubDate>
        <link>https://kaler.io/book-notes-thinking-in-systems</link>
        <guid isPermaLink="true">https://kaler.io/book-notes-thinking-in-systems</guid>
        
        <category>books</category>
        
        <category>notes</category>
        
        <category>donella meadows</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Senior iOS Developer Checklist</title>
        <description>&lt;p&gt;I have been doing a lot of interviewing as I am helping
&lt;a href=&quot;https://earnin.com&quot;&gt;Earnin&lt;/a&gt; build out a Vancouver office.  I have had
as many as three interviews on the busiest of days.&lt;/p&gt;

&lt;p&gt;This has forced me to structure my evaluation and ranking of developers.  I
ask a number of cultural questions that are company and context specific.
However, the technical topics are portable enough to make sense at
most software companies.&lt;/p&gt;

&lt;p&gt;I made myself a checklist of five main topics:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Programming Languages&lt;/li&gt;
  &lt;li&gt;Frameworks&lt;/li&gt;
  &lt;li&gt;Data Structures &amp;amp; Algorithms&lt;/li&gt;
  &lt;li&gt;Product&lt;/li&gt;
  &lt;li&gt;Process&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s expand on each bullet in the above list.&lt;/p&gt;

&lt;h2 id=&quot;programming-languages&quot;&gt;Programming Languages&lt;/h2&gt;

&lt;p&gt;The best developers have an excellent understanding of Swift,
Objective-C, and C.&lt;/p&gt;

&lt;p&gt;They have an understanding all the way from high-level language design
to compiler implementation.  They understand the basic syntax, control
flow, and types.  They also understand scope, memory model, and
concurrency.&lt;/p&gt;

&lt;p&gt;A senior developer can compare and contrast these languages at a
superficial syntax level.  And they can also describe these
differences in terms of static vs dynamic, type theory, compilation,
and runtime.&lt;/p&gt;

&lt;h3 id=&quot;swift&quot;&gt;Swift&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Basic syntax and semantics&lt;/li&gt;
  &lt;li&gt;Control flow&lt;/li&gt;
  &lt;li&gt;Strings&lt;/li&gt;
  &lt;li&gt;Collections&lt;/li&gt;
  &lt;li&gt;Functions and closures&lt;/li&gt;
  &lt;li&gt;Enumerations, structures, and classes&lt;/li&gt;
  &lt;li&gt;Memory model and lifecycle&lt;/li&gt;
  &lt;li&gt;Optionals and error cases&lt;/li&gt;
  &lt;li&gt;Protocols&lt;/li&gt;
  &lt;li&gt;Generics&lt;/li&gt;
  &lt;li&gt;Operators&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;objective-c&quot;&gt;Objective-C&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Classes and objects&lt;/li&gt;
  &lt;li&gt;Methods and messages&lt;/li&gt;
  &lt;li&gt;Extensions&lt;/li&gt;
  &lt;li&gt;Protocols and delegates&lt;/li&gt;
  &lt;li&gt;Properties&lt;/li&gt;
  &lt;li&gt;Blocks&lt;/li&gt;
  &lt;li&gt;Errors&lt;/li&gt;
  &lt;li&gt;Collections&lt;/li&gt;
  &lt;li&gt;Memory and reference counting&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;c&quot;&gt;C&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Types, operators, and expressions&lt;/li&gt;
  &lt;li&gt;Control flow&lt;/li&gt;
  &lt;li&gt;Functions&lt;/li&gt;
  &lt;li&gt;Pointers and arrays&lt;/li&gt;
  &lt;li&gt;Structures&lt;/li&gt;
  &lt;li&gt;I/O&lt;/li&gt;
  &lt;li&gt;Header files&lt;/li&gt;
  &lt;li&gt;Preprocessor&lt;/li&gt;
  &lt;li&gt;Linker&lt;/li&gt;
  &lt;li&gt;Compiler&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;frameworks&quot;&gt;Frameworks&lt;/h2&gt;

&lt;p&gt;The senior developer has a broad understanding of many of the
frameworks that are used day-to-day.  But they can also compare and
contrast them with 3rd party frameworks and frameworks from other
languages and operating systems.&lt;/p&gt;

&lt;p&gt;I am looking for understanding.  But I am also looking for nuanced
opinions on pros and cons.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Foundation&lt;/li&gt;
  &lt;li&gt;UIKit&lt;/li&gt;
  &lt;li&gt;Auto Layout&lt;/li&gt;
  &lt;li&gt;Core Data&lt;/li&gt;
  &lt;li&gt;Core Animation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;data-structures-and-algorithms&quot;&gt;Data Structures and Algorithms&lt;/h2&gt;

&lt;p&gt;This section will be controversial.&lt;/p&gt;

&lt;p&gt;My belief is that you can be a productive member of a team as a junior
or intermediate software developer without a deep understanding of
computer science.&lt;/p&gt;

&lt;p&gt;However, a senior developer must have a strong foundation of computing
science theory, and even more importantly, be able to implement this
in software.&lt;/p&gt;

&lt;p&gt;That may involve implementing a cache, fixing concurrency errors,
creating memory pools for optimization, or low-level integration with
systems software.&lt;/p&gt;

&lt;p&gt;This theory must also be engineered in a well-designed, well-tested manner.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Search&lt;/li&gt;
  &lt;li&gt;Sort&lt;/li&gt;
  &lt;li&gt;Lists&lt;/li&gt;
  &lt;li&gt;Associative Data Structures&lt;/li&gt;
  &lt;li&gt;Protocols: HTTP, TCP/IP, TLS, etc&lt;/li&gt;
  &lt;li&gt;Design Patterns&lt;/li&gt;
  &lt;li&gt;Unit Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;product&quot;&gt;Product&lt;/h2&gt;

&lt;p&gt;At least half of mobile development is interfacing software with the
operator of that software.&lt;/p&gt;

&lt;p&gt;I try to understand if the developers can critique and implement good
design vs bad design.  Do they have an interest and an understanding?&lt;/p&gt;

&lt;p&gt;Do they think about the customer of the software when writing code?
Do they think through business implications?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Design&lt;/li&gt;
  &lt;li&gt;Typography&lt;/li&gt;
  &lt;li&gt;Layout&lt;/li&gt;
  &lt;li&gt;Animation&lt;/li&gt;
  &lt;li&gt;Customers&lt;/li&gt;
  &lt;li&gt;Business&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;process&quot;&gt;Process&lt;/h2&gt;

&lt;p&gt;Software is a team sport.  Senior developers are able to take large
feature requests and break them down into small TODO items that can be
iteratively shipped.&lt;/p&gt;

&lt;p&gt;They interact with product, design, QA to get this done.&lt;/p&gt;

&lt;p&gt;They know how to use tools to effectively communicate.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Iteration&lt;/li&gt;
  &lt;li&gt;Source Code Control: git, Github, branching/merging, PRs&lt;/li&gt;
  &lt;li&gt;Bug tracking: JIRA, etc&lt;/li&gt;
  &lt;li&gt;Working with Design: Sketch, Zeplin, feedback&lt;/li&gt;
  &lt;li&gt;Working with Product: User stories, Job-To-Be-Done&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 12 Dec 2018 00:00:00 +0000</pubDate>
        <link>https://kaler.io/senior-ios-developer-checklist</link>
        <guid isPermaLink="true">https://kaler.io/senior-ios-developer-checklist</guid>
        
        <category>ios</category>
        
        <category>programming</category>
        
        <category>swift</category>
        
        
        <category>ios</category>
        
        <category>programming</category>
        
        <category>swift</category>
        
      </item>
    
      <item>
        <title>Lessons Learned Shipping Impact for iOS</title>
        <description>&lt;p&gt;I shipped &lt;a href=&quot;https://impact.fit&quot;&gt;Impact&lt;/a&gt; earlier this year.  Impact is an iOS App that helps CrossFit athletes plan and log their workouts.  I’m happy with the progress I’ve made with it so far and after some reflection I have ideas where I want to take the App next.  This is what I learned shipping version 1.0.&lt;/p&gt;

&lt;h2 id=&quot;1-ship-early&quot;&gt;1) Ship Early&lt;/h2&gt;

&lt;p&gt;I shipped the first version of the App to TestFlight after a few weeks.  This was very early–maybe even too early.  The experience was buggy.  The views and animations were janky.  There was no signup or login flow.  Saving and loading to disk or the network wasn’t even built.  The data that had had just been entered would disappear every time the App was relaunched.&lt;/p&gt;

&lt;p&gt;However, it was critical to ship this early.  Was I on the right track?  Did some bit of UI make sense on my screen size device but not on another?  Should I prioritize one feature over another?  Is adding an animation critical to creating a magic moment or is it just gratuitous?  This feedback was critical.&lt;/p&gt;

&lt;p&gt;Products consist of a few very large decisions and thousands of micro-decisions.  Both are criticial to get correct.&lt;/p&gt;

&lt;p&gt;It is key to let initial testers know that they are receiving early access to the App.  The App shouldn’t be relied on to get day-to-day tasks done.  It is important to let testers know that their feedback is important and that it will actually affect product development.&lt;/p&gt;

&lt;h2 id=&quot;2-ship-often&quot;&gt;2) Ship Often&lt;/h2&gt;

&lt;p&gt;This leads to the next point.  The best way to make progress is in short, bursty, iterations.&lt;/p&gt;

&lt;p&gt;I shipped a TestFlight build almost every week.  I paired this with a demo video that explained what was new in the build.&lt;/p&gt;

&lt;p&gt;Sometimes, I would receive feedback from a build and put together a fix and ship another build the same day.  This led to a positive feedback loop.  It kept my morale up but it also kept testers engaged.  They felt like their feedback was resulting in progress.&lt;/p&gt;

&lt;h2 id=&quot;3-listen-to-athletes&quot;&gt;3) Listen to Athletes&lt;/h2&gt;

&lt;p&gt;Impact does not have users. Drug dealers have users.  Impact is for CrossFit athletes.  Impact is for CrossFit coaches.  Impact is for CrossFit affiliate owners.&lt;/p&gt;

&lt;p&gt;The way one speaks is the way one listens.  If one calls people “users” then they will treat them like nameless, faceless slot machine pullers that should be served another ad.&lt;/p&gt;

&lt;p&gt;It is clearer to map the job-to-be-done for a CrossFit athlete than a generic user.  How does a CrossFit athlete prepare on a Sunday night for the week?  How do they prepare before a WOD?  How do they train during a WOD?  And what about after?  What language do they use?&lt;/p&gt;

&lt;p&gt;How does an athlete interact with their coach?  How does an athlete interact with other athletes?&lt;/p&gt;

&lt;p&gt;Start asking questions.  Lots and lots of questions.  Ask what’s working.  Ask what’s not working.  Don’t ask for solutions–that’s your job.  Ask about their day before they need to complete a task.  Ask about their process.  Listen for complaints about current tools that they use.&lt;/p&gt;

&lt;h2 id=&quot;4-5050&quot;&gt;4) 50/50&lt;/h2&gt;

&lt;p&gt;I am a software programmer.  My knee jerk reaction is to write more code.  I guard against this by budgeting my time 50/50 between customer development and product development.&lt;/p&gt;

&lt;p&gt;When in doubt, send more emails asking questions.  Personally meet people when you can.  Schedule FaceTime calls.  At the end of each meeting ask for three specific people that you can speak to next.&lt;/p&gt;

&lt;p&gt;Don’t take no for answer.  Don’t take “I don’t know” for answer.&lt;/p&gt;

&lt;p&gt;Ask clearly, “Introduce me to three people that you believe that an App like this could help”.  Then shut your mouth.  Let the awkward silence do the work.&lt;/p&gt;

&lt;p&gt;This is how the flywheel of feedback spins up.&lt;/p&gt;

&lt;h2 id=&quot;5-dont-make-work&quot;&gt;5) Don’t Make Work&lt;/h2&gt;

&lt;p&gt;The key learning from shipping 1.0 of Impact is that the App was too much work.&lt;/p&gt;

&lt;p&gt;The CrossFit athlete archetype is a high-functioning, type-A personality. They wake up to train at 6am before work.  Or they train at lunch time or right after work.  They train 3 or 4 times per week or even more.&lt;/p&gt;

&lt;p&gt;A CrossFit athlete spends $150 to $250 per month on their membership.  They spend even more in food, supplements, and gear.&lt;/p&gt;

&lt;p&gt;They work more than 40 hours each week.  At least.  They volunteer.  They hike.  They have a dog.  They have other responsibilities.&lt;/p&gt;

&lt;p&gt;What they don’t have is spare time for more work.&lt;/p&gt;

&lt;p&gt;The fundamental learning from version 1.0 of Impact was that the App couldn’t make more work for the athlete without a huge payoff.  The App should reduce work for the athlete in the best case scenario.  And athletes are willing to trade money for that.&lt;/p&gt;

&lt;h2 id=&quot;6-make-magic-moments&quot;&gt;6) Make Magic Moments&lt;/h2&gt;

&lt;p&gt;The opposite of making work is making Magic Moments.  The best Apps reduce the time to the first Magic Moment.  There should be a Magic Moment during signup.  There should be a Magic Moment every day.  And there should be an even bigger Magic Moment every week.&lt;/p&gt;

&lt;p&gt;Every feature should funnel athletes to the Magic Moment.  Every tap and every scroll should be in service to the Magic Moment.&lt;/p&gt;

&lt;p&gt;Magic Moments are sometimes called the job-to-be-done.  Magic Moments are more than that.  They fullfill both a functional job as well as an emotional job.  They fullfill a need and also a want.&lt;/p&gt;

&lt;p&gt;A Magic Moment is more than just getting the job done.  A Magic Moment is getting the job done with style.&lt;/p&gt;
</description>
        <pubDate>Sun, 09 Dec 2018 00:00:00 +0000</pubDate>
        <link>https://kaler.io/lessons-learned-shipping-impact-ios</link>
        <guid isPermaLink="true">https://kaler.io/lessons-learned-shipping-impact-ios</guid>
        
        <category>ios</category>
        
        <category>apps</category>
        
        <category>development</category>
        
        
        <category>ios</category>
        
      </item>
    
  </channel>
</rss>
