Tell me about your commercial software experience.
I have been a contributing developer or lead architect of several computer graphics/multimedia/video products:
|
Company |
Product |
Description |
Role(s) |
|
Artronics |
Paint 8 |
First PC 8-bit paint application |
Contributor |
|
AniMagic |
Real time animation program |
Sole Author |
|
|
Paint 24 |
First PC 24-bit paint app |
Contributor |
|
|
Presenter |
Presentation graphics app |
Contributor |
|
|
VPL/Pablo |
Broadcast video paint app |
Lead Architect |
|
|
Macromind |
Director 2.0 |
Multimedia package |
Contributor |
|
MacroMind MediaMaker |
Multimedia package |
Contributor |
|
|
MacroMind Action |
Multimedia package |
Architect, multimedia engine |
|
|
Cricket Software |
Cricket Draw III |
Drawing application |
Architect for color, printing |
|
ImMIX |
ImMIX Video Cube |
Online digital video editor |
Architect of graphics track |
|
Radius |
Radius Rocket Manager |
multiprocessing extension |
Architect |
|
Radius 8800, SuperMac S900 |
Macintosh clones |
Software Manager, lead software engineer |
|
|
Live Picture |
Live Picture 2.6 |
Prepress imaging application |
Contributor |
|
LP Batch Converter |
Auto-converts multiple images |
Lead/Manager |
|
|
Live Picture 2.6.1 |
Major bug fixes where required for this release |
Project Manager, Lead Engineer |
|
|
Obelix (code name) |
Photo postcard application done for Fuji Film and Japanese market |
Project Manager, Lead Engineer |
|
|
Network Publishing Server |
For graphics intensive documents at multiple resolutions |
Project Mgmt/Lead Engineer |
|
|
Pantone |
Pantone HexImage |
Hexachrome separation plugin |
Lead Engineer |
|
Tempest Software |
Omnipod Internet Server |
Integrated internet services for media sharing/playing, instant messaging, email & calendar |
Project Mgmt/ Requirements Mgmt/contributor |
Tell me about your management experience.
Radius: After long experience as technical lead, and as technical liaison to evaluate deals with other companies, I assumed software management responsibilities at Radius when they went into the Macintosh clone business. I was responsible for a small group (most of my experience is managing between four and seven contributors), but was also largely responsible for growing the group. Since the group was to grow beyond my established experience, it ultimately became my job to qualify and hire my own replacement with the mandated prior experience with a larger team.
Live Picture: At Live Picture, I started again as an individual contributor. My technical competence and proactive work with processes soon led to my assuming responsibility for the company's core technology. I was given multiple projects to manage in their entirety, including one project where one of my team members was my own boss! (This brings all types of interpersonal skills into play.) At Live Picture, I became the first manager to ship quality projects on time in company history. I later established a reputation for doing the same generally with projects I managed. I was also the choice for rescuing projects that had trouble coming to completion or suffered from mission confusion.
Other aspects of my Live Picture experience include the following:
Tempest Software: The Professional Services division of Tempest acted as the primary engineering arm of our client, Omnipod. The mission: to develop an ultra-high performance and ultra-high availability internet community for an expanding universe of high-bandwidth users. The Omnipod server provided multiple services such as file sharing, multimedia file playing, browsing public content of other users, email and calendar capability. All of these were packaged in a skinnable, dedicated client running on Windows. All of this was developed in an unheard-of time frame of several months, and was built around a multi-tier design employing the Tempest Messenger System (similar to IBM's MQ Series and Tibco), and a custom application server.
My role was a multi-fold mixture of analysis, project management, client/vendor contact and development.
Do you have Windows experience?
I have worked with NT (as well as other flavors of MS Windows) as part of most work since 1995. I have written several cross platform libraries that run on NT/Unix/MacOS, as well as plug-ins that run on NT/MacOS.
Have you developed effective practices in prioritization and scheduling, technical documentation, coding standards, testing, quality assurance, version control, build processes, bug tracking, post-release maintenance, as well as team leadership skills?
Most definitely yes. Let's address them point by point:
Prioritization and Scheduling. I have:
Technical Documentation. I have authored numerous functional and user interface specifications, requirements documents/databases, use case and other UML diagrams, project proposals, and white papers. (Some examples and excerpts are posted on my website www.geboing.com.)
Coding Standards. I have contributed to coding standards in many companies, and have especially made a significant contribution in the neglected areas of standards that actually have the most impact on the results:
Testing/QA. Motivated mostly by my own personal obsessions with quality, I have developed excellent cooperative relations with QA departments (and with QA members integrated into my teams for certain projects). I have been proactive in ensuring that test plans are complete, and testers procedures are valid.
Version Control/Build Processes. This is a particular passion of mine. At Live Picture, Pantone, and Tempest I have been the major force in developing and promoting best practices. (Also see my website for an example paper I wrote on this subject.) I have especially adapted these practices for use with Visual SourceSafe and Perforce.
Bug Tracking. I have experience with multiple bug tracking systems. Even beyond that, throughout the design/ development/testing cycle, I keep a database of all questions that come up in the course of the project, I prioritize them, assign them a status and record their resolution. Further, if one particular issue is likely to recur, I tag for future reference. At any stage of the project I am always away of outstanding issues.
Post-release maintenance. I have significant experience with both minor upgrades and major revamps of software projects. My skills, record, and positive attitude to maintenance have caused me to be called in to rescue other manager's projects that were shipped with significant flaws (or could not converge even to a single release).
Team Leadership skills. Here is a brief outline of my strengths and overall style. I:
Do you have C++ experience?
I have over twelve years of hardcore C++ experience, developing everything from shrink-wrap software, to internet servers, to device drivers. I have worked with C++ extensively from the time the only available compiler was the cfront preprocessor, and the only book on the subject was Stroustrup's first edition of The C++ Programming Language.
Do you have Unix experience?
During the last three years, my work experience was focused on Solaris and HP-UX flavors of Unix. I run (Debian) Linux at home. I have done other cross-platform work prior to that, developing libraries for multiple operating systems where Unix (e.g. SGI Irix) was among them.
Do you have MacOS experience?
I have ten years of experience designing, and implementing applications and system software for the Macintosh. My credits include:
Do you have experience with sockets?
I have written C++ socket handling primitives for TCP/IP (under Solaris) as part of Omnipod Internet Server project. I have had further experience with other software that communicate via the same.
Do you have experience with threaded software?
I have experience with posix threading APIs. I have extensive experience with multithreaded and multiprocessor code. I have authored cross-platform synchronization primitive APIs for MacOS/Unix/Win32. I also have significant experience with other types of asynchronous coding, and real-time software for broadcast video. I have solved some particularly difficult problems of supporting multiple processors on the MacOS where the operating system services are not available to multiple processors (or rather were not, at that time). I wrote APIs to simplify development for TI MVP CPU (RISC+DMA Controller+4 DSP architecture). I have experience rewriting single threaded applications to be thread safe. I have written deadlock-proof code.
What is your messaging experience?
How are you communications skills?
Samples of my writing are available at my website www.geboing.com. In addition I have done the following: APIs. I have authored several APIs and developer toolkits. My first exposure to the computer field was as a technical writer. Specifications. I authored numerous functional and user interface specifications, project proposals, and technology white papers. Sales. I was the author presenter of successful sales presentations. I sold Chevron a still-unfinished animation system against more established competitor with a ready product. I convinced Fuji Film executives to adopt and fund unconventional Live Picture technology in preference to safer, more conventional Microsoft offering. I co-authored and presented technology sales presentation (worth tens of millions of dollars) to Adobe Systems. Evangelism. I successfully worked with industry vendors to establish the first standard protocols for driving VTRs, Laserdisc, and Audio CD players. I have made successful presentations to user groups. Meeting Facilitation. Experience running short, productive meetings. No attendees have ever been known to cringe at an invitation. Teaching/Lecturing. I have taught computer graduates in the communications department at Seton Hall University.
Do you have server experience?
I am currently working with the JBoss J2EE server (comparable to WebSphere or Weblogic), and with the Jetty and Tomcat servlet engines. At the current moment I am focusing on JSP/Servlet development with JDBC.
I have worked on the following servers: Omnipod Internet Server (a multi-tiered system based on Tempest Messenger middleware (comparable with Tibco or MQ Series), and custom Application server. I lead the Live Picture Network Publishing Server team, a largely Perl/CGI based effort with glue to Database and Document Management system.
Do you have experience with internet-related technologies?
I have been Project Lead on one Internet server, and responsible for Project Management responsibilities for another. I have worked with web servers, HTML, XML, Perl/CGI, some Java, and JavaScript. I have worked TCP/IP, POP, IMAP protocols. I have authored socket classes from scratch. I am currently working on acquiring experience with J2EE architectures.
Do you have a degree?
I do not have an academic degree. Some companies demand a computer science degree. Others require 'equivalent' experience. It's possible they both miss the mark.
A degree is no guarantee (triteness aside). I wouldn't dispute that some graduates have received excellent training. However, I have worked with many computer science graduates who acquired little knowledge of software engineering as a discipline, but focused rather on specific domain knowledge (e.g. 3D visualization). Furthermore, I am certain the engineers responsible for the Ariane 5 disaster all met very rigorous educational requirements.
Neither is experience a reliable indicator. I have worked with developers who after a decade of experience were still fond of whining that they were never given enough time to 'do it right.'
So, what is key? Can the candidate demonstrate that he possesses the right combination of talent, attitude, and experience to fill the position?
Are you a 'Real Software Engineer'?
Yes. Under the 'detail-oriented' section above, I clarified aspects of my work that qualify me as detail-oriented. I think they also show that I am obsessed with software engineering, and put into practice what most engineers either talk about or are not even familiar with.
Some specific qualities I bring to my work are:
What else should we know about you?
My basic strengths are: core competence, technical excellence, intuitive grasp of the correct abstractions, clarity of purpose, initiative, drive, infectious enthusiasm, honest assessment, professionalism, attacking risk, command of details, communicating well, winning ways.