Pages

Wednesday, 13 April 2016

Productivity development practises talk

I seem to have a habit of picking up new projects without properly finishing reviews of old ones. It feels kind of wrong but it's the only way I can collect enough motivation.

The upcoming audience is unlike any one that I would have encountered before. This time, I'm presenting to people even more experienced than I am on my particular topic, so the major challenge in this case is developing content which is interesting/engaging enough for them to pay attention. Developing content which is out of the scope of their knowledge.

I have 10-15 minutes. Can I really teach people years more experienced and twice as skilled as I am? I don't really know. But it's worth a try, right?





Need a live demo demonstrating practical application. Without a live demo and demonstrations of how the techniques are actually useful, the list of tricks will be no different from a list of facts. The live demo doesn't actually have to be live, it could be a video or a series of pictures, but I've got to show the real applications of the techniques otherwise the audience will not retain them.

Change of plans. The demo's going to be in three days (2 days now) and the audience is not uniformly technical (some people will not have programming experience but have solid technical skills). I will have to adapt my presentation to be more accessible overall.

It's not a huge deal, though. I think the audience has enough context and intelligence to pick up the basic ideas behind what we're coding, even if they couldn't do it themselves, or understand the specifics of what they're coding.

Anyway, it doesn't have to be super technical in the first place. A presentation that has too much prerequisite knowledge can't really be considered a presentation at all, and would be difficult to follow. I suppose it's just a nice reminder to me to make my presentation followable.

As always, I have my trusty list of topics that I can expand and prune down to suit the situation. I have to pick them with a mindset of magic. Engagement, I think, is far more important than genuine learning in this case.

For each topic, I'll also have to pick live-demo or series of pictures as the presentation format. Maybe I can combine a few together.

I made the list as inclusive as possible to begin with. With the magic of presentation, it'll be easy to cut it down to what I really need. You really shouldn't need to think too hard to figure how how the tool or trick is useful. It should just seem magical and exciting straight off! Unfortunately, you can only get so exciting with time-optimization strategies.

My audience aren't all programmers, but they're not stupid, either. I don't need to simplify the content to magician's level. On the other hand, the actual productivity that the audience gains from the presentation is of little value - they are unlikely to get out of their habits because of the teachings of a person far younger than they are.

I'm not trying to prove that my techniques are better than theirs, I'm not trying to show them that they could be more productive, I'm just trying to make a fun presentation that they can enjoy and remember.

I think I can do this.

Initial list:
- type annotations and IDE suggestions
- many uses of pycharm: find usages, jump to declaration, find using type signature and regex, refactor, extract variable, optimize imports, reformat code, navigate to symbol, navigate to file, structure view, vim plugin and multi-replace, blame annotations
- pycharm offline search!!!
- many uses of debugger: variable evaluation and using console to mutate variables
- Running py.test: using less to scroll output
- portability over using 1 billion vim plugins. Vim use of search-replace backreferences
- make a paper doc listing everything covered in the talk
- mysql integration: https://paper.dropbox.com/doc/Accessing-dev-VM-MySQL-from-IDEAPyCharm-fRM0sXFhTn4B7iWTCgy5U
- py.test -S, -k, -f, -v
- dlog
- mock patching?
- ctrl-shift-f find in path previewer
- make the presentation/demo include face of people from the team
- https://www.dropbox.com/admin/stormcrow#/debug
- stormcrow?
- vim macros and search-replace. use vim to remove all dlogs from a file
- repeated eric's face
- test fixtures?
- undo reload from file (e.g. git checkout --)
- frontend (reload js/css files?)
- backend (db shell, other db commands)
- ipython commands
- jq
- cal for calendar
- webstorm
- db meta and other db commands

Let's do some filtering and categorisation!

List cut down for magic:
- Debugger demo: variable evaluation and mutating variables using the console
- Vim demo: search-replace backreferences and macros. e.g. removing all dlogs from a file
- creative usages of mock patching in db shell
- db shell ipython commands (also db edge)
- Make the demo include face of people from the team and eric's face
- undo reload from file (e.g. git checkout --)
- chrome debugger: $0 to select inspected element, breakpoints, watch expressions


Pycharm coding demo:
- Error checking as you code: type checking and typo checking. Making use of the IDE suggestions
- Alt-shift-A to search for commands
- Find-usages, jump to declaration
- Refactor this, extract variable, optimize imports, reformat code, navigate to file structure (ctrl-f12), auto-import, block comment/uncomment, double-shift to search anything (using * wildcard), ctrl-p for parameter lookup
- Find in path (offline) (previews)
- Blame annotations and generating diffs
- Alt-click to clone your cursor, wtf?
- db root, db meta

Pre-presentation tasks:
- TEST the presentation ON THE PROJECTOR BY CALLING IN holy crap

Post-presentation tasks:
- Make a paper doc summarizing everything covered for future reference

Magic items:
- Make a joke about missing documentation (ctrl-Q) and use (ctrl-shift-i) to recover
- Using ctrl-shift-a to recover from forgetting a command

-----------

I think this time I'm well-prepared enough to get enough sleep. Here we go!

No comments:

Post a Comment