Zeal + Vim = offline CakePHP (and other) documentation

As any long time Vim user, I’m constantly looking for ways to tweak and improve my text editor configuration, and make me even more efficient.  Today, I came across a very handy addition – Zeal – an offline documentation browser for developers. (Thanks to this blog post, which also mentions Dash as an alternative for those of you on the MacOS.)

With Zeal, you can download a whole lot of documentation sets for pretty much any web development technology out there – programming languages, frameworks, libraries, tools, and more.  And then you can easily integrate Zeal with whatever text editor or IDE you are using.

For Vim, there are, as always, several options.  Some of them are listed here. I personally opted for the Zeavim plugin.  The installation is straight forward and everything works out of the box.  After giving a quick try, I decided to adjust my .vimrc file to use CakePHP framework documentation together with the PHP programming language documentation whenever I’m working with any PHP file.  Here’s what I had to add:

" Zeal offline documentation
let g:zv_file_types = {
       \ 'php': 'cakephp,php',
       \ }

Now, whenever I edit a PHP file and hit “,z” (I use comma as a leader, by the way), Zeal window pops up with the relevant documentation search.

It’s super fast. It works offline, and it’s awesome!

This is why you shouldn’t interrupt a programmer

Yup.  This is exactly why you shouldn’t interrupt a programmer.  It takes him at least a few minutes to get back to where he was, irrelevant how brief and unimportant the interruption was.  And that’s why we invented managers (interrupt them all you want!), asynchronous communication (emails, ticketing systems, etc), and other tools and processes.

The most dangerous word in software development

I think this article – The Most Dangerous Word In Software Development – hits the nail on the head.

“Just” implies that all of the thinking behind a feature or system has been done. Even worse, it implies that all of the decisions that will have to be made in the course of development have already been discovered—and that’s never the case.

Every time somebody asks for “just” this little thing or that little thing, I ask them to “just describe it”, or “just answer a few questions”, or “just pay for it”.  Somehow, it never turns up as easy and simple in the opposite direction.

Products Over Projects

Martin Fowler has an excellent article on the “Products  Over Projects” subject.  It depicts the differences of both, with advantages and disadvantages, especially in areas like funding, team management, and iterations.

It’s a great read for anybody involved in software development, product and project management.

 

Mental models

Here’s a nice collection of mental models:

These are some mental models I find useful. They’re rooted in decades of experience of thousands of experts – a modern equivalent of folk wisdom. Mental models are useful to quickly and correctly reason about seemingly intractable problems. They require quite a bit of intuition to properly internalize, but once you’ve internalized them they’re relatively easy to apply. They’re also easy to forget in the moment – use this post as a checklist when thinking about complex problems.

Of those that I read through so far, I found the Planning fallacy the most useful:

Planning fallacy – the observation that humans are overly optimistic when predicting success of their undertakings. Empirically, the average case turns out to be worse than the worst case human estimate.
Corollary: Be really pessimistic when estimating. Assume the average case will be slightly worse than the hypothetical worst case.
Corollary: When estimating time, upgrade the units and double the estimate (e.g. convert “one week” to “two months”).