Reading Notes, October 2019
Article: âUsing the Platformâ by Tim Kadlec
One of the most fascinating things about the web is its âdonât break current implementationsâ ethos, which stands in direct contrast to just about every other piece of software ever made:
This permanence to the web has always been one of the webâs characteristics that astounds me the most. Itâs why you can load up sites today on a Newton, and theyâll just work. Thatâs in such sharp contrast to, well, everything I can think of. Devices arenât built like that. Products in general, digital or otherwise, are rarely built like that. Native platforms arenât built like that. That commitment to not breaking what has been created is simply incredible.
Later:
as some frameworks are, just now, considering how they scale and grow to different geographies with different constraints and languages, the web platform has been building with that in mind for years.
Conclusion:
Use the platform until you canât, then augment whatâs missing. And when you augment, do so with care because the responsibility of ensuring the security, accessibility, and performance that the platform tries to give you by default now falls entirely on you.
Article: âA Like Canât Go Anywhere, But a Compliment Can Go a Long Wayâ by Frank Chimero
An interesting look at the effects of UI design. What do you think culture would look like if we reversed these UIs? Praise required words while negativity was easily accessible via a single interaction? Who knows. Could be different. But also humans are humans and it could be the same.
First, a look at Facebookâs UI:
one negative reply literally takes up more visual space than tens of thousands of undifferentiated likes.
Then Twitterâs:
The arrangement is even worse on Twitter. Liking stays attached to the original tweet and makes most positive interactions static. Negative reactions must be written as tweets, creating more material for the machine. These negative tweets can spread through retweets and further replies. This means negativity grows in number and presence, because most positivity on the service is silent and immobilized.
Positivity is âsilent and immobilizedâ. What an fascinating assessmentâand the result of this?
like canât go anywhere, but a compliment can go a long way. Passive positivity isnât enough; active positivity is needed to counterbalance whatever sort of collective conversations and attention we point at social media. Otherwise, we are left with the skewed, inaccurate, and dangerous nature of whatâs been built: an environment where most positivity is small, vague, and immobile, and negativity is large, precise, and spreadable.
Article: âOverly defensive programmingâ
Iâve kind of been following the development of optional chaining in JavaScript. Itâs now stage 3, which had me re-evaluating my own thoughts on the syntax. @housecor has been a visible opponent of the syntax and I found this piece via a thread on his twitter. It has some good points specifically relevant to optional chaining, but even more broadly relevant to writing JS applications.
Trust in your data, and your code will be more predictable and your failure cases more obvious. Data errors are simpler to debug if an error is thrown close to the source of the bad data.
Unnecessary safety means that functions will continue to silently pass bad data until it gets to a function that isnât overly safe. This causes errors to manifest in a strange behavior somewhere in the middle of your application, which can be hard to track...Debugging it means tracking the error back to find where the bad data was introduced.
And later:
Being overly cautious with external data means that the next person to consume it doesnât know if itâs trustworthy, either. Without digging into the source to see how trustworthy the data is, the safest choice is to treat it as unsafe. Thus the behavior of this code forces other developers to treat it as an unknown, infecting all new code thatâs written.
Article: âWords as Materialâ
An absolutely wonderful piece on writing.
Matt Jones: â[Writers] are the fastest designers in the world. Theyâre amazing at boiling down incredibly abstract concepts into tiny packets of cognition, or language.â ... writing is part of every design. If you can clearly define what youâre making and articulate its value, the steps to bring it out into the world will go much faster.
This resonates about 1,000% with my experience.
Writing can be a tool for talking to ourselves when weâre still figuring things out. A sort of mirror or feedback system. A way to understand and articulate design.
When I sit down to write, I donât usually know what Iâm going to say. Itâs only through the act of writing that it becomes clear that I need to say anything at all.
Quoting David foster Wallace who is talking about ordinary people of their craft being able to explain their craft
maybe being able to communicate with people outside oneâs area of expertise should be taught, and talked about, and considered as a requirement for genuine expertise.
Video: âThe State of Agile Software in 2018â
I originally discovered this via a link on Dave Rupertâs blogâalong with his relatable commentary:
Whenever I read the original Agile Manifesto and itâs accompanying Twelve Principles, my soul leaps! But in practice inside enterprise Agile frameworks, my soul is often left crushed...In my experience, there seems to be a strongly held belief that if you obey certain rituals: have certain meetings, say certain words, pray certain prayers, commit to improbable deadlines; your product will enter the Promise Land. Itâs hard for me to rectify what I know about software development with this religion. I have resigned myself to being an apostate.
However, I didnât get around to listening to the source video until recently. Itâs fantastic. The speaker is Martin Fowler, one of the original signers of the Agile Manifesto. The fact that he basically calls apostasy on what most of us likely participate in as the de-facto, day-to-day, shared implementation of agile, is striking.
with so many differences, how can we say there is one way that will work for everybody? We canât. And yet what Iâm hearing so much...is imposing methods upon people. That to me is a travesty.
Even the agile advocates wouldnât say that agile is necessarily the best thing to use everywhere. The point is: the team doing the work gets to decide how to do it. That is a fundamental agile principle, which means that if a team doesnât want to work in an agile-way, then agile probably isnât appropriate in that context. And that is the most agile-way of doing things.
I canât help be nod my head in agreement with Daveâs summary: âFowlerâs perspective and patience with the Agile Industrial Complex gives me a foothold to keep from falling into hopelessness.â
Article: âDonât Solve the Problemâ via signalvnoise
Your job as a leader isnât to just help clarify thought process â but to give confidence in their thinking.
As Wade says, âYouâre trying to just help them get to that realization that, âYou know what to do.ââ
They have some good suggestions on 16 questions you can ask to propel those doing the problem-solving, instead of jumping in to solve the problem yourself:
- What do you see as the underlying root cause of the problem?
- What are the options, potential solutions, and courses of action youâre considering?
- What are the advantages and disadvantages to each course of action?
- How would you define success in this scenario?
- How do you know you will have been successful?
- What would the worst possible case outcome be?
- Whatâs the most likely outcome?
- Which part of the issue or scenario seems most uncertain, befuddling, and difficult to predict?
- What have you already tried?
- What is your initial inclination for the path you should take?
- Is there another solution that isnât immediately apparent?
- Whatâs at stake here, in this decision?
- Is there an easier way to do what you suggested?
- What would happen if you didnât do anything at all?
- Is this an either/or choice, or is there something youâre missing?
- Is there anything you might be explaining away too quickly?