Book Review: Understanding ECMAScript 6

Nicholas Zakas
Understanding ECMAScript 6

ECMAScript 6, aka ES6, is the 6th edition of ECMAScript specification. Released in 2015, ES6 adds many new features for writing complex web applications:

  1. Classes and Modules
  2. Promises
  3. Arrow Functions
  4. Symbols
  5. Sets and Maps
  6. Iterators and Generators
  7. Proxies and Reflection

For a number of years, I felt uncertain about building high-complexity JavaScript applications. Even best examples lacked organizational and interface clarity and testability and often produced unintentional side-effects. ES6 is a giant step forward in allowing developers create clean and intention-revealing JavaScript code.

Today, ES6 has become the foundation for building modern web applications. Understanding ES6 is now essential for all web developers. Nicholas' book will help you get started. It is well organized, easy-to-read, and especially well-suited for developers with previous ECMAScript 5 experience. Each chapter highlights the problem addressed by ES6, demonstrates what had to be done previously in ECMAScript 5, and how the code changes in ES6.

This is a great ES6 book. Find it on LeanPub. Happy reading!

Book Review: Hooked

Nir Eyal
Hooked: How to Build Habit-Forming Products

Easy-to-read, insightful, and practical book on the Hook Model, a 4-step process to build customer habits. Habit-forming products have competitive advantage since the first-to-mind solution typically wins.

Nir's Hook Model consists of 4 stages:

  1. Trigger
  2. Action
  3. Variable Reward
  4. Investment

Triggers activate behaviors. They can be external, such as email, or internal that emerge inside users' minds. Triggers reduce the thinking required to take the next step.

Actions are behaviors done in anticipation of the reward. Nir provides the following formula: B=MAT

  1. The user must have sufficient Motivation
  2. The user must have the Ability to complete the desired action.
  3. A Trigger must be present to activate the behavior.

Variable Reward rewards users by solving their problem. It creates desire. Nir idenitifies 3 types of rewards:

  1. Tribe (social rewards)
  2. Hunt (the need to acquire physical objects)
  3. Self (intrinsic motivation)

Investment increases chances that users will keep using the product and start another Hook cycle. The more users invest their time and effort into a product, the more they value it.

I highly recommend Nir's book to anyone involved with product design and development. The book provides a structured framework for how to build successful products and includes many useful tips and insightful examples. Happy reading!

Book Review: Advanced Web Metrics with Google Analytics

Brian Clifton
Advanced Web Metrics with Google Analytics

This is a practical how-to guide to Google Analytics, the most widely used web statistics service. The author did an excellent job covering web analytics basic features and reports as well as explaining more advanced topics:

  1. Backing up data locally
  2. Tracking non-HTML events
  3. Tracking marketing campaigns
  4. Goals and funnels
  5. Segregating data using profile filters and advanced segments
  6. Extending analytics using custom variables
  7. GA integration API

Happy reading!

Book Review: The Android Developer's Cookbook: Building Applications with the Android SDK

James Steele and Nelson To
The Android Developer's Cookbook

Smart-phone market and mobile web consumption are exploding. Within the next few years, more users will connect to the Internet over mobile devices than desktops. We are in the middle of the next technological revolution.

Android has recently overtaken iPhone in US market share and continues to enjoy widespread adoption among device manufacturers. James Steele's and Nelson To's cookbook helps get started building mobile applications for Android. Organized as a set of independent easy-to-follow recipes, it provides an excellent overview of the fast-growing Android development platform:

  1. Threads, Services, Receivers
  2. Activities, Intents
  3. User Interface elements
  4. Touches and Gestures
  5. Audio and Video support
  6. Communicating with other devices
  7. Location services
  8. Sensors

I highly recommend this book to all levels of the experience. Happy reading!

Book Review: Leading Change

John Kotter
Leading Change

Leading Change is a practical guide to implementing change in a corporate business environment. It is essentially a change process consisting of 8 main stages:

  1. Establish a sense of urgency and overcome complacency.
  2. Create a strong guiding coalition.
  3. Develop an inspiring vision and strategy for achieving it to help employees take actions in the right directions.
  4. Communicate the vision in a simple and clear message.
  5. Empower employees to experiment with how to make the vision a reality.
  6. Generate and celebrate short wins.
  7. Consolidate gains and produce more change.
  8. Anchor new approaches in the culture.

Today's changing market conditions put pressure on businesses to adjust their operations quickly to the new business environment. Companies unable to implement change quickly fall behind their competition.

I recommend this book to business and technical leaders at all levels of the organization. Whether you are considering a small change on your project, a technology improvement, or a system-wide business transformation initiative, you can apply principles described in this book in your situation. Happy reading!

Book Review: Kanban

David Anderson
Kanban. Successful Evolutionary Change for Your Technology Business.

Kanban is the latest book by David Anderson, the author of Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results. While searching for sustainable software development and successful change management, David expanded the ideas of Theory of Constraints and Lean Manufacturing. The new methods got their first real-world implementation at Corbis and Microsoft and the results are presented in this book.

Kanban systems have been gaining popularity in software development and information technology. They represent a pull-system approach, which produces what the next process needs when it needs it. Thus, the new work is pulled into the system when there is a capacity to handle it.

Kanban systems often visualize the development workflow and all work in progress (WIP) on a card wall, where each card represents a single work item. If your objectives are to improve lead time predictability and increase throughput, you can achieve them by limiting WIP, identifying and alleviating bottlenecks, and reducing variability.

The book is very informative, filled with practical ideas and rich examples on how to:

  • Handle different types of work
  • Set initial WIP limits and input queue size
  • Introduce queues to absorb variation and maintain flow
  • Buffer bottlenecks to ensure smooth flow in the system and avoid idle time in the bottlenecks
  • Cope with multiple concurrent and unordered activities
  • Cope with impediments
  • Support hierarchical requirements
  • Manage shared resources

I greatly enjoyed reading David's book and hope you will like it as much as I have. My only recommendation for the next edition of this book is to have card-wall pictures printed in color.

Happy reading!

Book Review: Working Effectively with Legacy Code

Michael Feathers
Working Effectively with Legacy Code

Legacy code is defined by Michael Feathers as code that lacks tests. Lack of tests makes the code hard to understand and difficult to change. When the code is changed, new subtle bugs are often inadvertently introduced. When the code breaks, countless hours are spent troubleshooting.

Does it sound familiar? If you are writing software professionally, the chances are you have worked with legacy code many times before. You may be working with legacy code now. If this is the case, you will find Michael Feathers' book invaluable.

Michael describes practical strategies and techniques to working effectively with both large and small untested code bases. He explains the mechanics of software change and provides insights into adding tests to and ultimately taking control of legacy code.

I recommend this book to all software developers. Happy reading!

December book review: Don't Just Roll the Dice

Neil Davidson
Don't Just Roll the Dice: A usefully short guide to software pricing

To download a free eBook, click here.

For the month of December, I picked a short fun-to-read book filled with refreshing yet practical ideas on software pricing. The book is very informative, thought-provoking, and engaging. Will it become something you enjoy reading over the upcoming holidays?

Neil Davidson, the author of the Don't Just Roll the Dice, is a co-founder of the Red Gate Software that provides database tools for developers and administrators. Neil investigates how to make an informed guess at what your product is worth on the market. In the attempt to answer this question, he describes many first-hand real-world experiences demonstrating how a pricing strategy can work to your advantage over your competition.

The book is organized around a series of questions. I listed a few of them below:

  • What is your product?
  • Who are your customers?
  • What is your product's objective and perceived value to your customers?
  • How do people generate their perceived value of your product and how could you increase it?
  • How could you create product versions and bundle your software to increase revenue?

Happy reading!

November book review: Learning to See

Mike Rother, John Shook
Learning to See: Value-Stream Mapping to Create Value and Eliminate MUDA

Find this book on

A value stream is all the actions required to bring a product or a service to a consumer. Value-stream mapping is a tool used to visualize and analyze the flow of materials and information in a value stream. Value-stream mapping identifies the sources of waste in a value stream and helps you improve the whole system, not just its individual components.

In Learning to See, Mike Rother and John Shook highlight the differences between "Push", which produces according to a schedule, and "Pull", which produces only what the next process needs when it needs it. They explain why "Push" results in overproduction and other types of waste and offer their guidelines on how to introduce a lean value stream that generates the shortest lead time, highest quality, and lowest cost:

  1. Produce to your takt time. Takt time is the customer demand rate divided by available working time per day.
  2. Develop continuous flow wherever possible. Continuous flow produces one piece at a time with each item passed immediately from one process to the next.
  3. Use supermarket pull systems to control production where continuous flow does not extend upstream: for example, when a process has too much lead time.

    Use a sized FIFO ("first in, first out") lane to maintain the flow when supermarket systems are not practical: for example, when we cannot create an inventory of all parts such as during custom development.
  4. Try to send the customer schedule to only one production process. This process is called pacemaker: it sets a pace for all upstream processes and requires all downstream processes to be connected in a continuous flow.
  5. Level the production mix: distribute the production of different products evenly over time at the pacemaker process.
  6. Level the production volume: create an "initial pull" by releasing and withdrawing small, consistent increments of work at the pacemaker process. Consistent increment of work, aka "pitch" or "management time frame", will help you establish your takt time.
  7. Develop the ability to make every part every day or every pitch in processes upstream of the pacemaker process.

The authors also included a list of questions designed to help you create future-state value-stream maps:

  1. What is your takt time?
  2. Will you build to a finished goods market from which the customer pulls, or directly to shipping?
  3. Where can you use continuous flow processing?
  4. Where will you use supermarket pull systems?
  5. At what single point in the production chain will you schedule production?
  6. How will you level the production mix?
  7. What increment of work will you consistently release?
  8. What process improvements will be necessary?

These questions along with two manufacturing plant examples will help you develop and introduce your own lean value streams in your organizations.

Learning to See is a well-written must-to-read technical workbook on value streams. I recommend it to anybody interested in Lean. Happy reading!

October book review: Essential WCF

Steve Resnick, Richard Crane, Chris Bowen
Essential Windows Communication Foundation. For .NET Framework 3.5.

This is a well-organized and easy-to-read introductory book on WCF. It provides a thorough overview of the principles behind building and consuming WCF web services and includes real-world examples illustrating how to leverage WCF framework in your applications. The topics covered in this book include:

  • Contracts: how to define complex structures and interfaces
  • Channels: how to configure channels and channel stacks
  • Bindings: how to choose communication protocols
  • Behaviors: how to manage instances, concurrency, and transactions as well as how to add your own custom behaviors
  • Serialization and Encoding: how .NET classes are serialized and represented on the wire
  • Hosting services in IIS, WAS, and managed .NET applications
  • Security options for authentication and transport- and message-level security for Internet and Intranet applications
  • Integration with other frameworks such as WF and Silverlight
  • Other topics: JSON, RSS/ATOM, peer networking, metadata publishing, diagnostics, and others
    • The authors did an excellent job explaining complex WCF concepts in simple terms and will help you jump right into building distributed applications in .NET. I highly recommend this book to .NET application developers and architects.

      Happy reading!

Welcome to ModelBlog

Thank you for visiting ModelBlog. We hope the time you spend with us will be both entertaining and worth your while. Have fun!