A Year in Review: 2019
Tags: devjournal
Published: 2019-12-31 09:21:38

As a review for the year, I thought that I'd compile a list of lists for several categories.

## Books

1. [Deep Work: Rules for Focused Success in a Distracted World](https://www.amazon.com/Deep-Work-Focused-Success-Distracted/dp/1455586692): details the 'science of productivity'. As the distractions around us continue to grow, the ability to perform deep work is becoming both increasingly rare and valuable. The book illustrated the critical importance of 'attention residue'. That is, if you're constantly switching from one task to another, a residue of your attention remains stuck thinking about the previous task. To avoid this, work for extended periods with _full concentration_ on a single task. As a consequence of reading the book, I've been encouraged to disengage from social media and, as the author describes, 'embrace boredom' as a tool to train ourselves for intense concentration. 
2. [Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones](https://www.amazon.com/Atomic-Habits-Proven-Build-Break/dp/B07RFSSYBH/ref=sr_1_1?keywords=atomic+habits&qid=1577576146&s=books&sr=1-1): focuses on very small but incredibly powerful (hence atomic) habits. When applied, the changes that stem from atomic habits may seem small and unimportant at first but will compound into remarkable results over time. Habits are the compound interest of self-improvement and therefore focus on the _system_ rather than your goals. In addition, the book outlined exactly how to introduce (and stick to) an atomic habit: 1) make it obvious, 2) make it attractive, 3) make it easy, and 4) make it satisfying. 
3. [Ultralearning: Master Hard Skills, Outsmart the Competition, and Accelerate Your Career](https://www.amazon.com/Ultralearning-Master-Outsmart-Competition-Accelerate/dp/B07ST3Z1Q6/ref=sr_1_1?crid=2CLEJU31E60FH&keywords=ultralearning&qid=1577576194&s=audible&sprefix=ul%2Caudible%2C332&sr=1-1): the author, Scott Young, is an incredibly interesting character: from completing MIT's four-year undergraduate computer science curriculum in 12 months, without taking any classes! Or, by traveling the World without speaking English for 12 months and learned Spanish, Portuguese, Mandarin Chinese, and Korean! The book is about how to supercharge your learning to become hyper-productive. 
4. [Mean Genes](https://www.amazon.com/Mean-Genes/dp/1429238615/ref=sr_1_1?keywords=mean+genes&qid=1577576222&s=audible&sr=1-1-catcorr): whilst genes haven't changed much in tens of thousands of year, the environment around us has changed enormously. Essentially, what happens when our hunter-gatherer minds are transported into a 'fast food nation'. The result is a "mismatch" that results in four categories of self-defeating behaviors (profligacy, gluttony, infidelity, and addiction). The book is a fun tour of these behaviors and provides an insight into some of our self-defeating but difficult-to-control behaviors.
5. [Algorithms to Live By: The Computer Science of Human Decisions](https://www.amazon.com/Algorithms-Live-Computer-Science-Decisions/dp/B01D24NAL6/ref=sr_1_1?crid=1PW3841RAQX5E&keywords=algorithms+to+live+by&qid=1577576251&sprefix=algorithms%2Caps%2C338&sr=8-1): provides practical examples of the application of computer science and algorithms to real-life decision-making. In doing so, it distills an algorithm into simply a series of steps that you can follow to solve a very specific problem, which can then be run as often you like and will always provide a solution.

## 2019 Tech Trends

1. **React Hooks**: although released in (late) 2018, React Hooks have exploded in 2019 as a way to manage a component's state and lifecycle in functional components with a simple and concise syntax. In addition, React provides the ability to build custom hooks to create reusable components and shared logic, without the need to create higher-order components or use render props. Personally, I'm still drawn to the clearer separation between stateless functional components and Class components, although to ability code so succinct is drawing me more and more to React Hooks.
2. **Accessibility and Internationalisation**: after the rapid developments of JavaScript between 2015-2018, developments have begun to evolve less dramatically. As a result, the focus is increasingly shifting toward ensuring the web is open and useable by everyone! Specifically, ensuring the web is accessible to people with disabilities, those using mobile devices, or with slow network connections. In addition, developers increasingly design/developing their work in a way that ensures it will be accessible, or easily adapted for, users from any culture, region or language.
3. **ES2019**: whilst not as significantly as other recent releases ES2019 brought some nice new features, including to the ability to strip whitespace (`String.trimStart()`/`String.trimEnd()`), the ability to concatenate arrays up to a specified depth (`Array.flat()`/`Array.flatMap()`), the ability to transform a list of key-value pairs into an Object (`Object.fromEntries()`), and `try/catch` binding!
4. **GraphQL**: GraphQL is data-driven, as opposed to endpoint-driven, allowing the client to declare the exact data they need and receive a corresponding JSON response from the server. Thus, giving the developer full visibility into the API. GraphQL overcomes several of the shortcomings of REST APIs. In 2020, GraphQL may overtake REST for new companies, and established companies continue to migrate toward GraphQL!
5. **TypeScript**: the language _de jour_, largely because it offers tools that result in less buggy and more readable code with the types of object interfaces offering self-documentation. Whether TypeScript becomes a mainstay in the frontend community or goes the way of CoffeeScript remains to be seen. However, the rapid releases from v3.0 in late-2018 to v3.7 in 2019 indicates that it remains on the rapid-growth trend!

## 2020 Predictions

1. **Watch for ES2020**: Since ES2015, JavaScript has been rapidly evolving. As of 2019, there are many new features in the 'Stage 3' phase meaning that they're close to being finalized, and browsers/Node are getting support for these features now.

__Optional Chaining Operator__

Optional Chaining allows for the ability to conditionally check for nested objects. Thus, if our program runs into an `undefined` or `null` property, instead of crashing, it will simply return `undefined`. At present, it hasn't been implemented in any browser, but Babel will use this feature.

```
const obj = {
  prop1: {
    prop2: {
      prop3: {
        prop4: {
          prop5: 5
        }
      }
    }
  }
}

console.log(obj?.prop1?.prop2?.prop3?.prop4?.prop5); // 5
console.log(obj?.prop100?.prop2?.prop3?.prop4?.prop5); // undefined
```

__Nullish Coalescing Operator__

The problem with the `||` operator is that it applies to all 'falsy values'. To solve this, the `??` has been introduced to set the default value only if the first time is either `null` or `undefined`.

```
const ES2015_Feature = x || 500;
const ES2020_Feature = x || 500;

const x = false;

console.log(ES2015_Feature); // null
console.log(ES2020_Feature); // 500
```


2. **CSS-in-JS will overtake standard CSS**: the frontend community is solidifying around uniting everything under JavaScript! CSS-in-JS remains a big part of this transition. The simplicity of passing props, instead of using different class names, means that it handles that dynamic styles with a declarative syntax. The result is a much cleaner and more logical integration of style between CSS/JSX/JS code. In 2020, watch out for Facebook's release of their own CSS-in-JS library!
3. **Micro Frontends**: micro frontends allow you to split your frontend architecture into different frontends for different teams working on different parts of your app. The growth of Bit has allowed smaller teams of devs to isolate, build and test individual components. In 2020, watch for Bit introducing deployments which will allow teams to deploy and update standalone frontends.
4. **Vue3**: with a passionate community following devoted to its relative simplicity and the fact that it's not controlled by a giant tech company (unlike React and Angular). In 2020, watch out for the long-anticipated update to v3.0 expected in Q4 2019, so expect significant Vue growth in 2020!
5. **Established technologies aren't going anywhere**: despite the release of new and shiny libraries and languages, the enduring demand for established technologies (think Drupal, PHP, WordPress, jQuery) will remain strong throughout 2020.

## Happy New Year! :smiley: