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.