Polemic is contentious rhetoric intended to support a specific
position by forthright claims and to undermine the opposing position. The
practice of such argumentation is called polemics, which
are seen in arguments on controversial topics. A person who writes polemics,
or speaks polemically, is called a polemicist.
Note: many people confuse polemics with rants. But a polemic,
while often angry, is a rational, principled argument. In contrast, a rant
is a stubborn, emotional outburst, often irrational.
At Craft Code we polemicize. We never rant. Our views are
rational and supported by evidence and argument. We may be wrong occasionally,
but we are neither stubborn nor irrational. Prove us wrong and we will happily
change our views.
In software development, a polyfill is code that implements
a feature of the development environment that does not natively support the
feature. Most often, it refers to a JavaScript library that implements an HTML5
or
CSS web standard, either an established standard (supported by some browsers) on older browsers, or a proposed standard (not supported by any
browsers) on existing browsers.
Formally, “a polyfill is a
shim for a browser API.”
Premature optimization is a phrase used to describe a situation
where a programmer lets performance considerations affect the design of a
piece of code. This can result in a design that is not as clean as it could
have been or code that is incorrect, because the code is complicated by the
optimization and the programmer is distracted by optimizing.
To “reify” means to make real or concrete.Premature reification occurs when we rush to completion,
turning potential into reality sooner than we need to. It often leads to
wasted time, effort, and money.
For example, we might know that eventually we will need a certain
widget, so we go ahead and build it. But then later it turns out that we
didnʼt need it after all. Or we did, but the way we built it was
all wrong. Doh!
Principle of Least Power
The Principle of Least Power states that when writing software,
we should always use the least powerful approach that solves the problem.
Donʼt over-engineer. Donʼt over-abstract or abstract too soon.
Stay low on the tree of abstraction and
keep it simple.
problem space
The problem space is the problem and everything associated
with the problem, including such things as the history of the problem; the
stakeholders (those who benefit from the problem, those who contribute to
the problem, and those who feel the problem most deeply, as pain).
Progressive enhancement is a design philosophy that provides
a baseline of essential content and functionality to as many users as possible,
while delivering the best possible experience only to users of the most modern
browsers that can run all the required code.
The word progressive in progressive enhancement means creating a design
that achieves a simpler-but-still-usable experience for users of older
browsers and devices with limited capabilities, while at the same time
being a design that progresses the user experience up to a more
compelling, fully-featured experience for users of newer browsers and
devices with richer capabilities.
Proof of concept (POC or PoC), also known as proof of principle, is a realization of a certain method or idea in order to demonstrate its
feasibility, or a demonstration in principle with the aim of verifying that
some concept or theory has practical potential.
A proof of concept is usually small and may or may not be complete.
Software prototyping is the activity of creating prototypes
of software applications, i.e., incomplete versions of the software program
being developed. It is an activity that can occur in software development
and is comparable to prototyping as known from other fields, such as mechanical
engineering or manufacturing.
Proximity is one of the most important grouping principles
and can overpower competing visual cues such as similarity of color or shape.
The practice of placing related elements close together and separating unrelated
elements can be seen almost everywhere in UI design.
Using varying amounts of whitespace to either unite or separate
elements is key to communicating meaningful groupings. …
On the other hand, grouping together unrelated elements may camouflage them
from users.