Deliberate Practice

Keen to get a good handle on what reflective practice can do for me, I’ve been exploring the work of Anders Ericsson, and his concept of Deliberate Practice.

This has been a pivotal step in changing my perception and comprehension of the potential value that can be delivered by investing time in reflective practice. I think I’m beginning to properly get it.

While much of the material relating to reflective practice that I have previously consumed has helped me to form some level of understanding, I’ve found it to be a bit woolly, and difficult to draw solid conclusions that I can confidently apply to my own performance improvement efforts. However, I connected with Ericsson’s work on achieving expertise through the application of Deliberate Practice. he outlines a cyclical structure of definitive iterative steps that I can take in order to realise incremental progress toward mastery in any field, including my chosen field of app development:

  1. Have a well defined specific goal.
  2. Practice with intense focus – no distractions.
  3. Seek immediate feedback on your practice.
  4. Frequent discomfort – adjust your goal to push you slightly beyond your capability.

Quality mentoring to oversee this process will further expedite learning.

Ericsson dismisses the commonly held belief that an innate talent is the primary factor that dictates success (which gives me hope!), and offers the alternative theory that the key requirement is adaptability – a ‘gift’ which we all possess. He goes on to say that we are all ‘Homo Exercens’ – the practising man, committed to self-improvement.

He also clarifies that while practice is an integral part of improvement strategy, it is not an effective stand-alone strategy. He labels this approach “Naive Practice” and describes how spending hours repeating the same actions over and over again, will only deliver limited improvement, and never achieve expertise.

Flutter & Dart Progress

My proposed business venture requires an app with reach to the majority of the market, so my preferred development strategy is to use Google’s open source Flutter framework to create mobile apps for both Android and iOS platforms. Flutter uses Dart, a strongly typed object orientated language, to build a single code base that is compiled to native code for both platforms, eliminating the need for separate code sources.  Ahead-of-Time compilation removes the need for a bridge, so Flutter apps achieve faster and superior performance over those from alternative hybrid development frameworks, like React Native and Xamarin.

Bringing a very limited amount of Java coding experience to the course, and only managing to gain a brief introduction to Flutter at that time, restricted my deliverables to for the app jam to just a paper prototype for my “Quick Cook Challenge” concept.  However, my Java work provided some familiarity with object orientated programming principles, which facilitated my shift to Dart, and I’ve found the language to be considerably easier to learn.  I’ve since built several basic apps under the instruction of tutorial courses (1 Dart and 3 Flutter) that I’ve now (almost) completed.  I’m becoming increasingly comfortable working with the Flutter framework, and rapidly gaining confidence in building basic screen layouts with step-by-step instruction.  I’m also beginning to apply and deepen my comprehension by anticipating small code snippets within tutorials, ahead of the implementation. Engagement with the community through social media, particularly Facebook groups, Twitter and Medium, is also helping me to explore the potential that Flutter offers.

Once I’ve completed my third Flutter course, I will build my own layouts for the “Quick Cook Challenge” app from the jam.

While Flutter development will be an ongoing process for me, this SMART goal focuses on the short-term progress that I intend to make, in preparation for the next module.  The following diagram illustrates my long-term vision for my route to mastery of the Flutter framework.  The curve is inspired by Charles Handy’s concept of “Life Cycle Thinking” , and Whitney Johnson’s application of his S-curve (or Sigmoid Curve) concept to illustrate the development of competence in a new domain of expertise.   I further developed this concept to reflect the anticipated evolution of the Flutter Framework, and the continued learning opportunity this will present during the “Mastery” phase. The red arrow indicates my perceived current progress along the curve:

Over the long-term, I anticipate 4 phases of development:

  1. BEGINNER: Learning to use Flutter to the point where I am capable of building a complete functional low-complexity multi-screen app, with effective screen transitions and logic that makes the app useful.
  2. RAPID PROGRESS: Exploring more advanced Flutter widgets and features, incorporating them into higher-complexity apps
  3. PLATEAU: A period of consolidation and experimentation, using widgets and plugin combinations in concert to develop more creative and original apps
  4. MASTERY: An infinitely ongoing phase for me to really test and push the limits of possibility within the framework, and expand the possibilities by developing my own plugins.

By 3rd June I will have built a complete functional prototype for my “Quick Cook Challenge” app (from the jam) to reach the end of my ‘Beginner’ phase.

Proficiency in developing Flutter apps is the key core capability I want to gain from this course.  I’d considered the alternative strategy of partnering with an established Developer in order to launch my startup, but for various reasons (primarily financial and control), I opted to upskill myself instead.  If I don’t achieve app development competency over the duration of the course, I will consider myself to have underachieved.

Tutorial courses work, and I will continue with them, but I need to incorporate alternative methods to help take my understanding and familiarity to a deeper level.  I will use Google’s Flutter Widget Catalogue as a guide, and build my own representations of standard widgets (the building blocks of Flutter).  I’m a visual learner, so building models that are meaningful to me provide opportunity for elaboration and active retrieval, which, according to Anders Ericsson’s Deliberate Practice theory, are proven strategies for strengthening comprehension.

I will prioritise the widgets with a Pareto (or, “law of the vital few”) approach, assuming 20% of the standard widgets will deliver 80% of the results I need.  Joseph Juran suggested the principle after recognising that economist Vilfredo Pareto’s observed 80/20 relationship between land ownership and population, held validity as a general rule of thumb for much wider application. A relevant example: Microsoft reports that fixing the top 20% of reported bugs eliminates 80% of errors and system crashes.  After addressing 20% of the widgets, I’ll add to my catalogue as I use new ones.

This milestone is predominantly a solo project, but support is available within the study group and the wider Flutter community. The SMART goal is:

Specific

I will build a functional prototype for my “Quick Cook Challenge” app.

Measurable

I will construct a Trello board to chart progress, and manage my schedule effectively, implementing weekly sprints to achieve the complete app.

Achievable

Time and technical capability are my constraints. The Trello board will help schedule my time effectively, and I’ll use tutorials and Stack Overflow to assist with any challenging aspects.

Relevant

This is the foundation milestone for my future Flutter progression, which is a key factor for success for my intended startup. It will also enable my contribution to collaborative coding projects during upcoming modules.

Time-Bound

This will be achieved by 3rd June. I will dedicate 18 hours per week to achieving this.

Design a site like this with WordPress.com
Get started