Where I’m at
Portal - Development
Stages of development:
- Start with Data / State Management
- Data Models - what am I actually trying to capture for later use? E.g. stock item
name
,count
,location
, etc- Consider not only what data you are trying to capture - but also maybe how you will create relationships between other models - stock item model that defines a
itemId
that is then also used in the stocktake model. Also consider metadata requirements - e.g. thedateTime
of the stocktake or the usersid
. - Think in terms of the object, and also relationships. Metadata is really just a special relationship with the functioning of the application.
- To figure these out - you must understand what exactly the purpose of the feature is doing. What is the stocktake feature in exact and precise terms doing?
- Streamlining the stocktake count process by giving a more user friendly interface (e.g. only showing user relevant data)
- Helping the user with more context specific information to help guide the users (e.g. showing the last count numbers on a new stocktake being initialised)
- Getting more quality data inputs to guide business decisions (e.g. ensuring quality through only presenting appropriate UI elements and or validation logic)
- Consider not only what data you are trying to capture - but also maybe how you will create relationships between other models - stock item model that defines a
- State Classes -
- Data Models - what am I actually trying to capture for later use? E.g. stock item
Stocktake Locking Function:
Combo of StateNotifier / StreamListener - basically the way it’d work is like this:
- User navigates to stocktake feature screen in the app;
- This screen has a Stream listener:
- It checks (amongst other things) that there is there an existing and relevant record that checks its
status
field. - Depending on the status field will correspond with a visual traffic light signal cue:
- Green - if the record matches “pending”
- Yellow - if the record matches “notCompleted”
- Red - if the record matches “inProgress”, “inactive” or “completed”
- Black - if the record matches “error”
- It checks (amongst other things) that there is there an existing and relevant record that checks its
- If the indicator is green the app will allow a new stocktake to be initialised:
- Opening the widget
- Writing a new blank record with “inProgress”
- The widget has a StateNotifier that listens / reacts to the Widget by checking that the state changes every
X
minutes.- If there is no changes after 15 minutes, the Notifier will update the record to “inactive” in Firestore, and locally.
- If there is no changes after 5 minutes of it being marked as “inactive” then the Notifier saves the state, closes the widget and updates the record as “notCompleted” for completion when the user either returns or is picked up by another user.
- On submission - the Notifier changes the status to “completed”
This way a person doing the stocktake can be visually prompted if they do not attend to the stocktake feature promptly, and the app can unlock the session for a new user if the user does not respond. Then another user could then complete the remaining stocktake that was left unattended to by the initial user.
There’d be a Stream listener to Firestore to continually check for status updates. That Stream would be essential to providing a set of traffic light indicators. Where there could a subtle green / yellow / red / black indicator to indicate to the user that it’s available / in use / unavailable to initialise a new stocktake.
What I learnt
From “Pragmatic Thinking and Learning”
Finished Chapter 2: Journey from Novice to Expert. Here’s my take on the most salient points (not all I’ve repeated myself before):
- Novice to Expert is a change from following rules as following your own intuition. There’s a lot of ways to describe it:
- Moving from other’s rules to your own
- Detached observer to integrated within the system
- Wide focus in considering all scenarios to a narrow focus for only few relevant scenarios
- Keys to using the Dreyfus model of skill progression:
- Accept responsibility - in other words understand and accept that in order to become more skilled you are constantly evaluating your actions / considering the context.
- Shu Ha Ri
- Shu - Shu guz - students follow one instructor exactly until they can replicate the skill competently.
- Ha - Students reflect on why the skill is practiced as it was taught
- Ri - Students synthesise information in innovating the skill in a new and original way
- Shu Ha Ri
- Accept responsibility - in other words understand and accept that in order to become more skilled you are constantly evaluating your actions / considering the context.
- Keeping expertise requires practice - a skill unpractised is a skill lost
- Beware the trap of tools / models. Essentially you in charge of your learning, not the tools - this could mean:
- Devaluing traits that cannot be formalised - When you require learning, creatively or invention there’s a choice of “Do you want it done fast, or done right?”. Invention / creativity / learning are not formal traits but is often misunderstood as can be forced.
- Spelling out too much detail - Overwhelms even experts, and when you articulate one set of particulars, you open the door for all particulars to have to be articulated.
- Oversimplification of complexity / insensitivity to context - I’m putting these two together, it’s basically the two sides of the one coin. Basically there’s blindness to the small level nuanced information that’s critical to the skill.
- Consider the context - again:
- The learning really comes from the relationship between things - not the things in of themselves. Sure for stocktake we can record an item of name and the count, but what does that mean for a stocktake? Or for the business? For the user?
- Approach learning / problem solving with “What’s the context here? Why do I need to solve this? How does this relate to other objects here?”
- This is the difference between looking at a fish is alive “It’s a silvery looking fish, fast and got a nasty temper” versus a dead fish “This fish is a Gadus morhua, and has the spine structure of D. XVII-15-IX, etc”. Or consider a locksmith opening a door, and now consider it’s a burning building with a baby inside. It depends.
- To become an expert, you largely are doing these things:
- Developing more intuition
- Being readily aware of context
- Relying on your own intuition