Letting your computer think for you, with David Khourshid

  1. 19 - David Khourshid Larry Botha 22:40

David works on Microsoft's Visual Studio Live Share, a service that enables developers from anywhere in the world to collaboratively code, debug, and more from the comfort of their own Visual Studio or Visual Studio Code editors.

Time Stamped Show Notes

0:57 – Graduating from the University of Central Florida, David studied piano performance for his major.

1:18 – David is passionate about user experience and developer efficiency. His goal is to minimise the user’s cognitive load, as well as to reduce the number of hours developers have to work to achieve their goals.

2:13 – As part of his music degree, David was required to build a marketing website for a project. Instead of using the drag and drop software suggested by his lecturer, he decided to build the site from scratch. This is where he first realised his interest in programming.

3:00 – After discovering CodePen, David would challenge himself by seeing what he could build using only CSS and HTML. He believes that limitations bring out creative potential.

3:21 – David’s CodePens got a lot of attention and lead to job offers from various companies, including Microsoft where he currently works.

4:33 – It’s important for developers to be involved in high level decision making processes so they can have a say in key decisions.

6:02 – David uses Visual Studio Code all the time. He likes the fact that their marketplace is so extensive.

6:32 – David goes onto CodePen every day, either to find inspiration, look at coding techniques, see what other people are doing, or to use it as a scratchpad for his own code.

6:42 – Despite its name, the Mozilla developer documentation is actually a collaboration between Mozilla, Google, and Microsoft. MDN is essential for David’s daily work.

6:58 – The tool David finds by far the most useful is pen and paper.

7:25 – David explains how Visual Studio Live Share allows developers to collaborate on projects in real-time.

8:38 – “Hell is other people’s code or code that you yourself wrote a week ago.” David describes how the logic behind a piece of code generally exists only in the mind of the developer who wrote it. The code’s purpose is usually not immediately clear to anyone else.

9:06 – David explains “spaghetti code” as code that is difficult to interpret. He jokes that it’s sometimes called, “lasagne code,” but only when it’s written by a senior developer.

9:31 – By implementing modularisation at a basic level and organising your code effectively, both the computer, and other developers will be able to interpret your code effectively.

10:39 – David views imperative code as the programmer believing they are smarter than the computer.

10:59 – David describes declarative code as scalable, flexible, and composable, especially when mixed with functional programming. It trusts the computer to do what it needs to with minimal developer input.

11:18 – Without CSS and its declarative way of managing things David says that handing code over to another developer would be a mess.

12:26 – David describes that forcing CSS into a Javascript context as a leaky abstraction.

13:04 – David mentions CSS Modules where everything is modular and componentised.

13:16 – David loves Styled Components because, although it’s just CSS and Javascript, it doesn’t feel like it.

13:56 – David is excited about RxJS Version 6. He finds it useful because it’s functional and reactive, and treats time as a “first class citizen”.

14:38 – He is also excited about Luna – a visually augmented, flow-based, functional programming language. Check out luna-lang.org where you can manipulate elelments in real time and see how they’re affected.

15:11-  David is currently working on xstate. He is excited to use it more and to make things like visualisations of state machines.

15:45 – When a new framework comes out, David focuses on its fundamentals, rather than learning the framework itself. He believes that any framework that isn’t built on the fundamentals isn’t worth learning.

17:04 – Your code should be declarative, functional, and reactive. Let your computer think for you.

17:32 – David and Larry discuss how Prettier JS allows them to focus on writing code instead of spending unnecessary time formatting it.

Quickfire Questions

18:17 – Best advice about programming
If something can be automated, just automate it.

18:39 – Habits for writing better code
Get your thoughts down in pencil and paper.

18:51 – Book
“Constructing the User Interface with Statecharts” by Ian Horrocks

19:22 – Inspiring devs
Sarah Drasner, Val Head, Rachel Nabors, Una Kravets, Ana Tudor, and especially Mary Lou, whose work on Tympanus Codrops has been a constant source of inspiration. Also, Bret Victor who discusses the future of user interfaces and programming languages.

20:17 – How to learn to code from scratch
Start by going through all the documentation. From there, see what you can build with this new knowledge by working on a sample application. If you find there’s something you can’t do, google it or find a tutorial.

21:14 – How to work smart
Find the most efficient way to do something so that you have more time to spend on the important things like friends, family, and living life.

Tools, Tips, and Books Mentioned

Contact David