Full Stack Startup CTO: Coder | DevOps | QA | Cloud
I'm a software developer turned entrepreneur with an irrational desire to solve life's big problems using technology. I've been fascinated by programming and computers since age 14, and have a rich experience of over 15 years with a diverse set of software technologies.
As CEO/CTO of a tech startup, I am the kind of generalist that is a jack of all trades and a master of all. On any given day of my week I need to be an excellent developer, tester, copy writer, marketing strategist, media expert, business and financial wizard, all while keeping the big picture and "vision" of the company in mind.
Let me apply myself to your problem. Bring me onboard your team, and I will get the job done with spectacular results. I stand behind the quality of my work, the efficiency at which it is delivered, and the easy to maintain nature of my deliverables.
Linux system administration (Ubuntu, Apache, MySQL, ElasticSearch, Sphinxsearch, RabbitMQ, ...)
Clustered environments (CoreOS, Fleet, etcd)
Docker workflow design (containerizing environments for dev, staging & production for apps built in any language: PHP, Node, Ruby, Python, Haskell, ...)
Cloud environments (AWS)
Cloud migration (SoftLayer -> AWS, ...)
Shell scripting (advanced Bash)
Configuration management (Puppet)
Quality assurance (Selenium, PHPUnit)
Continuous integration (Jenkins, Strider)
Monitoring and metrics (New Relic, Logstash, Kibana, Grafana, Graphite, Nagios, Seyren)
User interface and user experience design (UI/UX)
Product functional design and functional flow mapping
Technical team building and leadership
Development: Make it work, make it correct, then make it fast. Move quickly and break things, because better to get it into the user's hands than keep it in the engineer's head.
Design: Less is more – remove decision points until it works like magic. Delight users at all costs with insane attention to detail.
Quality management: Instrument all the things, since it's harder to improve what isn't being measured. If it's not being tested, it's already broken.
Productivity: If it has to be done more than once, automate it; in a startup, don't automate for as long as you can. Refactoring should be opportunistic and shouldn't need management approval, because the broken windows syndrome in a codebase can bring a project to its knees.
Technical strategy: Embrace valuable new things even if they're still half-cooked; the developers will usually work hard to smooth any bumps with surprising speed. Never throw out something that works just because something new came out; technology evangelism is an expensive sport.
Management: Mentorship is key to developing the culture and organizational processes that will keep employees happy and increase their value to the company. Communicate the rules clearly, set the goalposts, then get out of the way and let the team shine. Exude passion or stay home.
Leadership: Listen to and learn from everyone. When making decisions there is never enough
information, and once there is it is usually too late. Grand plans tend to become obsolete before they are implemented, and old habits die hard; changes are most successful when they are small.
I've picked up many other skills over the years, so for easy reference and searchability on oDesk here is the keyword soup (in no particular order):
ajax, json, api, html, css, smarty, zend framework, virtualbox, virtual machines, amazon cloud, dns, ftp, nagios, c++, eclipse, xdebug, software profiling, software optimization, software architecture, refactoring, software patterns, agile, test driven development, lean startup, minimal viable product (MVP), REST and RESTful design, software defined datacentre, continuous deployment, push to build, immutable infrastructure, redmine, project management, static code analysis, debugging, quality assurance, QA, testing, software verification, version control, subversion, power excel formulas, windows, macos, mac os x