Showing posts with label career. Show all posts
Showing posts with label career. Show all posts

Monday, 26 October 2009

Promoted - again!

It seems to be the season. Around this time last year I was promoted to CTO, and this time round, my boss has decided to move on, and I have stepped up to the hot seat of CEO-dom.

All of this has been bad for my Kibitz blogging, although I have been contributing to a new blog all about our emerging visual collaboration product: bCisive Online:

A diagram quickly knocked up in bCisive Online - click to enlarge

Divide and conquer meets visual thinking meets true real-time collaboration. Interested? Check it out, and get in touch.

That said, I'll try and post the occasional kibitz or update here too.

Friday, 21 November 2008

Interesting articles on programming and management

The following are informative and frequently humorous resources for those of us working professionally in software development:

Anyone who fits the hacker archetype described in the Hacker FAQ may also find The Bipolar Lisp Programmer interesting.

Tuesday, 11 November 2008

Promoted: The Kibitzer becomes the Kibitzed

Around the start of the month I was promoted from Lead Software Developer to Chief Technology Officer at Austhink Software. [Look ma, I' m a CTO! If only we had an executive washroom. ;-)] I will still be hands on -- designing, programming, pairing, etc. -- but with the new title comes some additional power and responsibilities. In particular, I now have a hand in setting technology strategy plus additional leadership duties.

An interesting effect of the promotion has been that where previously I was the kibitzer -- giving unsolicited and sometimes unwelcome advice -- I have now become the kibitzed! The guys on my team -- Ben and Aaron -- are becoming increasingly assertive in stating to me what they think should be done. And that's fine with me. It seems to me that the allied challenge is to become a better communicator: Both in listening closely to the kibitzs (advice) and kvetchs (complaints), and in clearly articulating the over-arching priorities, so that we can all work together in setting and executing our plans.

Other than that, my motto since making the change has been: "Review, re-focus, and get on with it." The review part has been about taking stock of where we are, the re-focus is about articulating concrete changes in approach, and getting on with it is all about moving forwards.

So I expect that there will be a change tone in future entries, arising from my new perspective at work. OTOH: Whenever I run out of ideas I can always look back over my old blogs for inspiration!

Monday, 2 July 2007

Taking stock

I have been working at Austhink now for a little under two years. I am not sure what my employee number is, but it is less than 10.

My job title says "Senior Software Developer", but Austhink is or was a start-up, and at a start-up everyone chips in where-ever they can. What have I actually been up to?

Project Management / Team Leadership
  • I have been the senior hands-on guy in an Agile Team
    • Estimating and clarifying use-cases / user stories
    • Mentoring other team members (and learning from them too), largely through pair-work and mostly daily meetings
    • Working with Andy Bulka -- our Technical Director -- to create and sustain an effective and productive atmosphere
  • I have acted as second-level support
Software Design
I have contributed to the detailed design Austhink's flagship product, Rationale, and associated licensing system. Examples of my touch include my on-going crusade against modes, and searching for simplifications, such as the use of an integrated page-preview instead of a separate print-preview window. And let us not forget the humourous messages that appear on start-up.

I have made many more suggestions and performed many more experiments than have made it into the final product, but I believe that the objective is creativity and net output, rather than high hit rate (but lower output).

Architecture
I have made several key contributions to the architecture of the software including:
  • Researched options and made technology recommendations. E.g.
    • Make: The development of a home-grown graph visualization layer (not using Windows Forms) rather than building on top of a third-party product.
    • Buy: The purchase of DotNetBar's Office 2007-style Ribbon Interface tool rather than using more traditional Windows menus, in early 2006
  • The use of a programming language syntax (Python) for our file-format -- instead of the more obvious choice of XML -- an idea borrowed from Lisp which has provided several dividends:
    • Our API became our file-format, rather than a separate interface
    • Identical format is used for copy / paste
    • Allowed an elegant solution (also mine) to the problem of forward-compatibility (i.e. opening up a file from a later version of the application in an older copy of the software leads to graceful degradation, including an error report)
  • Found a way to combine Windows drag-and-drop with our own system (almost, but not quite seamlessly)
  • Designed a functional-programming style animation sub-system that is being incrementally introduced into Rationale
  • The extension of the Command Pattern with nestable Begin and End "blocks" to solve the problem of placing compound expressions on the undo/redo-stack that effectively solved the problem of making necessarily sequential multi-step actions easily undo-able and re-doable in a simple fashion.. This was a considerable improvement on our previous "solutions" which were slowing development and increasing complexity.
  • The use of digital-signing as part of our licensing-system
Software Implementation
  • Have taught and coached the use of effective techniques such as Test-Driven Development, Design-by-Contract, and Refactoring to generate a fairly robust, efficient and featureful product in quick time.
  • Have written or co-written much of the algorithmic code myself, especially in the advanced aspects of the workspace area (drop-zones, overview window)
  • Have managed to stay out of some areas to allow junior colleagues some freedom to develop without "constant" interference
  • I have found and fixed or worked around several nasty bugs, including one doozy in the Microsoft's .NET framework
Intellectual Property
  • I have helped liaise and collaborated with our PhD student Peter Sbarski on his algorithmic work
  • Invented a means for drawing "organic edges" used in Analysis Mode
  • Invented a repulsion algorithm (in conjunction with Ben Loft)
  • Invented a way to relax the Picture Rail Principle (which Peter has since generalized)
  • Helped draft a patent application
Business Stuff
  • Suggested simplifications to business processes, especially to licensing. E.g.
    • Observed that we did not need to define a separate product from upgrading ReasonAble users, but could use the Coupon system instead
  • Entered the winning suggestion for the name of the monthly Rationale newsletter, Ratatouille
  • Monitored the web for relevant trends (i.e. read reddit and Y-Combinator news :-)
People Stuff
  • Assisted the Technical Director interview for permanent staff and contractors
  • Initiated the tradition of bi-weekly lunches in Lygon Street
  • Contributed to the Rationale mailing list
  • Supplied festive food (e.g. cheesecake) on culturally significant occasions
  • Hosted the 2006 Austhink X-mas party

So that is some of what I have been doing for the last two years. On the personal side I became a father for the second time, received my second-degree black belt in Jiu-Jitsu (and first-degree in Judo), continued to run my martial arts club (now in its third year), started two blogs, and begun to develop a very basic competence in spoken Hebrew.

Next stop is to plan a bit of what I would like to do in the next couple of years.

Goal #1: Completion of toilet training.