Skip to content

Latest commit

 

History

History
493 lines (275 loc) · 8.24 KB

talk.md

File metadata and controls

493 lines (275 loc) · 8.24 KB

A (very) short intro to productivity tools for devs



Agenda

  • What is productivity?
  • Who cares?
  • (Lots of) mechanics
  • (Lots of) examples
  • Philosophy
  • External resources

What is productivity?

Productivity describes various measures of the efficiency of production

Developers are getting less efficient, not more!


Plowing the field (V. Van Gogh, 1882)


Plowing the field (2000)


Plowing the field (2017)


Who cares?

Good for the company you work for...

But also and most importantly: good for yourself!


How long would you want to be this person?


If it's that obvious...

Then why aren't we doing it?

  • It's too difficult
  • It's something you're not aware of (not anymore!)
  • time pressure: takes too long to learn/master
  • I'm too lazy

The right lazy people are productive and use the tools.


Know your tools!


"The Medium is the Message" - Marshall McLuhan

 

 

 

 

 


Mechanics

We are struck with technology when what we really want is just stuff that works.

Concentrate on essence, not on ceremony.


How often do you click in this thing to get something started?



Concentrate on essence, not on ceremony.

Ceremony: bootstrapping. To get where you want to be.

Essence: You're there now. Do what you want to do.



Mechanics: Launchers

Search always trumps navigation.


Launching programs


Launching (menu) actions in programs

CMD+SHIFT+P
Mac: help search


Mechanics: History

Those who don't rely on their history are doomed to type it again.

Or use snippet managers like http://www.phraseexpress.com/ or https://www.phraseexpander.com/


Clipboard history


Cmdline history

  • Windows: F7, F8 (Within one session) > Arrow up/down
  • Unix: "history", set -o vi, ESC + /

http://mridgers.github.io/clink/


Mechanics: focus

It is during our darkest moments that we must focus to see the light.

(Aristotle)



Distraction-free mode

F11

  • Everywhere available nowadays (IDE, OS, TextEditor, ...)
  • Turn off notifications!
  • Don't live in your mailbox!
  • Throw out your cellphone!
  • Browser extensions that hide images

Introduce Quiet time


http://focusmanifesto.s3.amazonaws.com/FocusFree.pdf


Monitors++

(and keyboards/mice, pair programming)


Mechanics: automatisation

I couldn't tell you in any detail how my computer works. I use it with a layer of automation.


Write scripts to do the work for you

  • File manipulation on regular basis
  • syncing directories: rsync
  • encoding/decoding, shrinking, ...
  • Python & Ruby are excellent choices here

Whatever you do: don't reinvent the wheel!

+1mil. Libraries of all languages available.


Automate repetetive commands: F5 F5 F5 F5 ...

Build tool plugins:

Livereload - https://www.npmjs.com/package/gulp-livereload


Automate the web: selenium

WebDriver. Kan in C#, python, ...


Automate between APIs: IFTTT

https://ifttt.com/


Use commandline variants of programs

  • SVN instead of Tortoise
  • wget instead of browsing

Integrate them somewhere


Automate clicks in your OS

Automator example in OSX


Don't exaggerate: YAGNI

http://thehumbleprogrammer.com/mastering-yagni/


Mechanics: eliminate duplication


Use version control!

... Or use dropbox/GDrive/...


Canonical build PCs

Bob's PC === Jeff's PC Automate with Vagrant/puppet/...

Alternative: Ninite - Install and Update your programs all at once


Symlinks

  • Unix: ln -s link target
  • Windows: junction
  • Windows 10: mlink /D link target

Keep your documentation in one place


Lots of examples!


TDD

Automate tests, be productive, run stuff faster, get notifications faster, ...

Build tools, etc etc


Statistics generation

teamcity build statistics, code coverage automated, ...


Getting work done using reflection

  • Sometimes reflection is more elegant
  • Sometimes reflection introduces complexity for nothing
  • Depends on the language you'll be using

(Example)


Again: Know your Tools

Requirements:

macro recording, cmdline-able, regexp search/replace, +1 registers, crossplatform, your requirement here?


The perfect Tool: an IDE

  • IntelliJ platform
  • Eclipse
  • Visual Studio
  • ...

Daily (heavyweight) work done here.
So why not be productive with it?


The perfect Tool: an Editor - the new gen.

Get to know them - put in the extra time!


The perfect Tool: an Editor - the old gen.

VI, Emacs - Yes, they are still very relevant!

Vi shortcuts in cmdline: set -o vi (incl insert mode)


Vi and recording

https://nathanleclaire.com/blog/2013/10/27/5-cool-unix-hacks-for-fun-and-productivity/


The perfect Tool: cmdline

Cygwin, grep, sed, ...

http://www.brainbaking.com/wiki/unix/cmd/

find . -name "*.csproj" -exec grep -H 2 "utilities" {} \;
sed 's/<br/>(.*<br/>)/regel:<br/>1/g' log.tmp >> $logfile
cat file | sed -e 's/replace/by/g' -e 's/other/new/g' 
echo 'holy shit I am seriously impressed'

The perfect tool: which language to use when?

Use a "real" (script) language to automate chores.

Why? Unit testability, vs shell/Bash script.
Why? Keep behaviour in (unit tested) code.


Philosophy of a productive person

Productivity beyond coding: '(life) hacking'


Be a polyglot


Getting Thigns Done (GTD)

Having a system that works and gets the work done.

https://www.wunderlist.com/


John Locke's system

Trying to be productive is older than you might think...


Resources