November 02, 2014

The Minimum Viable Product and Incremental Software Development
The MVP is used in the context of the “build-measure-learn” feedback loop. From the Lean Startup site: “The first step is figuring out the problem that needs to be solved and then developing a minimum viable product (MVP) to begin the process of learning as quickly as possible. Once the MVP is established, a startup can work on tuning the engine. This will involve measurement and learning and must include actionable metrics that can demonstrate cause and effect question.” Now the question is: What is the right way to build the MVP? Of course we should adopt some form of incremental development, in which the MVP should be concluded after a few initial iterations.


Introducing Pair Programming
In an environment where every line of code is reviewed as it is written, code quality goes up dramatically. The quality of the code review gets increased because the reviewer is fully in the context of the code and actively participating in its formation. Several studies such as this one by Alistair Cockburn and Laurie Williams have compared side by side code written in pairs vs code written solo, and concluded that the paired code had fewer defects, and better design than the soloed code. In the Cockburn and Williams study, the paired programs were "consistently 20 percent shorter than their individual counterparts, indicating a more elegant and maintainable solution."


Random Image Experiment Reveals The Building Blocks of Human Imagination
Here’s a curious experiment. Take some white noise and use it to produce a set of images that are essentially random arrangements of different coloured blocks. Show these images to a number of people and ask whether any of the images remind them of, say, a car. Most of the time, these random images will appear to people as, well, random. But every now and again somebody will say that an image does remind them of a car. Set this image aside. And repeat. After assessing, say, 100,000 images in this way, you’ll end up with a set of essentially random pictures that remind people of cars.


You’ve Got To Admit It’s Getting Better
Even test-driven development — the notion that a development team’s automated tests are even more important than the actual software they write, and should be written first — is being criticized. Once this belief seemed almost sacrosanct (although in my experience most of the industry paid it only lip service.) Now, though, Pieter Hintjens argues, “The more you test software, the worse it will be.” Peter Sargeant agrees: “The whole concept of Test-Driven Development is hocus, and embracing it as your philosophy, criminal.”


The 5 Most Common Data Relationships Shown Through Visualization
As the amount of data available to organizations and marketing departments grows, visualizations of that data are growing more complex. That’s not to say that data visualizations are becoming unwieldy – quite the opposite. The increasing amount of information being displayed in visual form helps viewers understand the often convoluted relationships between ranges of data. However, when presented with the choice to visually represent data relationships, it can be difficult to choose which model to apply. Different types of data work better with specific visualization models.


Eight Docker Development Patterns
A foundation for all of my Docker experiments, is keeping state that should persist in volumes, so that the Docker containers themselves can be re-created at will without data loss (unless I've been naughty and modified container state without updating the Dockerfile's - and regularly rebuilding the containers helps stop that bad habit). The examples Dockerfiles below are all focused on that: Creating containers where the containers themselves can be replaced at any time without having to think about it. The more regularly the containers are recreated; the more habitual this becomes, the more it reinforces a habit of avoiding state outside of clearly defined locations that are explicitly persisted.


Foundations of Data Science
The field of algorithms has traditionally assumed that the input data to a problem is presented in random access memory, which the algorithm can repeatedly access. This is not feasible for modern problems. The streaming model and other models have been formulated to better reflect this. In this setting, sampling plays a crucial role and, indeed, we have to sample on the fly. in Chapter we study how to draw good samples efficiently and how to estimate statistical, as well as linear algebra quantities, with such samples.


The Potential Of Beacon Technology
Beacons are a unique and sophisticated tool in the world of merchandising and advertising. However, if we take a step back and think about exactly how beacons are reaching retail locations, there is reason for concern rather than excitement. Currently, beacon networks are fragmented and closed. At quick glance, this may not be a concern, but thinking ahead, this fragmentation will likely result in long-term negative implications for consumers, retailers and developers alike. An analogy for beacon technology is GPS. Since its inception, GPS technology has always been an “open system” onto which developers could innovate and extend new product applications.


Exploring the Hexagonal Architecture
A hexagonal architecture has three layers with the key part being the Domain model containing all the logic and rules of the application. No technology concerns, e.g. HTTP contexts or database calls, are referenced in the domain, allowing changes in technology to be made without affecting the domain. Around the domain model is the Ports layer receiving all requests that corresponds to a use case that orchestrates the work in the domain model. The ports layer is a boundary with the domain on the inside and external entities on the outside.


Oxford Economics Study Reveals EMEA Companies Unprepared for Workforce 2020
All of this isn’t to say that EMEA-based companies aren’t taking steps to address the top issues of the future workforce. “Workforce development is seen by the board as a strategic priority as it’s critical to meeting corporate objectives and growing the business,” said Kevina Wepukhulu, Chief Manager, Human Resource and Administration, Kenya Power and Lighting Co. “The effort is arrayed around key areas, including strategies for systems, for the organization, and for teams and individuals. The approach is based on learning and development, which enables us to retain the workers we hire and train.”



Quote for the day:

"Great leaders use delegation as a time management tool for themselves and as a development tool for their team." -- @ManagersDiary