In [2]:
name = "2019-11-21-become-a-10x-programmer"
title = "Become a 10x programmer, lessons from academia and industry"
tags = "optimisation, profiling, testing, version control"
author = "Anthony De Gol"
In [3]:
from nb_tools import connect_notebook_to_post
from IPython.core.display import HTML
html = connect_notebook_to_post(name, title, tags, author)
Anthony De Gol spoke to us about lessons learned form academia and industry on how to be a 10x better programmer with a few simple tools and techniques. Here are Callum's notes from the talk.
Anthony's recommendations fall into three broad groups:
Use a version control system like git to keep track of your own work and collaborate with others. Tutorials abound
As well as helping you keep your work organised (no more data_process-ver2-final-improved-andy_edit-FINAL.py) git is an invaluable tool for collaborating with others. You'll thank yourself later!
UEA Python is managed entirely with git (including this website)
Writing code that is easily testable makes for better code even before the tests are written. Your code will be broken up into managable, logical chunks. You don't need to go as far as test driven development, but think when you are writing code how you can make it easy to test.
Anthony recommends pyteest for Python
Good testing practices:
If you think tests waste time, try analysing invalid results for a month. Tests will save you stress down the line
Exemplified by this talk by Rich Hickey
You don't neeed to do functional programming religiously (no need to learn clojure) but it's a useful paradigm to make your code modular and reusable
calculate_height_statistics(students) not do_suff(data)One idea that really stood out for me was that of cognitive resource. You only have a certain amount of ability to process cognitive tasks. The more you can smooth your workflow to simplify or remove complications, the more cognitive power you can bring to bear on your task objectives. The tools and techniques Anthony talks about all contribute to lessening of cognitive leakage, making your work simpler, better organised and more coherent.
This was my take on Anthony's talk, if you have anything to add, get in touch! You might even do a pull request on this repo with your added comments :) or drop me an email
In [3]:
HTML(html)
Out[3]: