This is a brief guide about what I am like to work with intended to help with determining if I fit in culturally, for interviewing and talking to references. It complements my resume and note to recruiters.
- I get very passionate about what I work on. I am always happy to discuss with others (partners, customers, sales, marketing, support etc) about what is going on and listen for new ways to make it even better.
- Aim high
- It is an effective strategy to have products and processes that are barely good enough. I prefer the strategy of aiming high for company values, the product, value, support, sales and marketing, customer interactions etc. I like to participate in the planning process to ensure we head in this direction making best use of the available people, time and money.
- Voracious reader
- I constantly read. The goal is to at least know what I don't know. I am always seeking out what is missing, potential solutions to problems that may occur later, new techiques and approaches, stories that provide new viewpoints, ways to increase productivity, anything posted by (potential) customers. I also look for internal information, code updates, bug updates, support calls, meeting minutes, marketing and sales materials, wiki changes etc.
- Attention to detail
- Ultimately what makes things best is the sum of all the parts comprising it. A tiny defect or poor decision can have unexpectedly large consequences at a large scale. There could be extra documentation burden (both in writing it and expecting customers to read it), testing it or modifying it in later versions. Conversely a small detail can have a large positive effect so I seek those out too.
- I strongly believe in visibility - anyone with a web browser should be able to easily see what is going on everywhere, and contribute if appropriate. This significantly speeds up the organization, using people to their best without having to distract people by pushing out endless emails, meetings and similar "friction". For example timeline views that show code updates, bug tickets, kanban boards, wiki changes, and project management all in one place are desired.
- Working method
- I try to ensure full visibility of all my work, typically via wikis for English and source code control systems for code. Ideally a simple report via the web browser should show my queue of work to be done and what I have done in the past. My goal is to get those things done, in priority order. Additionally I seek out other work items ensuring nothing falls between the cracks.
- Communication style
- With a technical audience I am direct and to the point, being bottom up and/or top down as appropriate, and communicating best with a (possibly virtual) whiteboard. With marketing and sales audiences it is all about visible customer benefits, advantages over the competition, and simplicity with clarity in written materials.
- Stupid software
- I detest stupid software. It is stupid asking administrators and users to answer questions that the computer with billions of processor cycles per second and gigabytes of memory should just figure out. It is insane asking the administrator to make detailed choices involving performance and security trade offs - if the developers with full knowledge of every little detail can't make a sensible choice, then why would the customer be able to? Just doing the "right thing" is important to me. Alan Cooper's article on Goal Directed Design is a good example of distinguishing between goals and tasks. Far too much software ignores the user's goals (typically to use the software as little as possible!) for the minutae of endless tasks and settings.
My preferred method is using Python to combine libraries, processes, and network services, with a web front end as a practical and productive approach.
Having some tests is nice since it is an early warning system for later code or interactions that break earlier efforts. I generally find Linux to be the most productive environment due to the quality of the developer tools and their reliability - for example valgrind/ltrace/gdb/strace/clang/gcc -Wall/fuzzers pretty much always work well.