About
Ian has been developing software since the early 80s when his friends at school had games on the calculators and he didn’t. After using up all the memory available on his Dad’s HP67C and Apple //e, he caught the software development bug and is yet to shake it. Ian has spent the last 25+ years working on how to write great software cost effectively, software that people will love to use and developers will love to maintain and enhance. If he ever finds the answer, he’ll be sure to let everyone know.
Places I’ve worked …
Canonical Ltd (Mar 2007 to now): Software Developer
Caterpillar Inc (2002-2007): Engineering Manager, Technology Architect, Product Manager, Presales Consultant, Release Manager
Mincom Pty Ltd (1993-2002): Development Manager, Lead Architect, Research Architect, Project Manager, Team Leader, Quality Coordinator
Foxboro Australia Pty Ltd (1989-1993): Software Engineer, Firmware Engineer
Things I’ve been doing …
Technical Manager – 8-9 years experience managing technical staff including architects, software engineers, test engineers, technical writers, toolsmiths and system administrators
Project Manager – 10 years experience managing highly technical software development projects using customer driven, Agile development methodologies based on SCRUM and FDD
IT Architect – 12 years experience architecting mission critical, enterprise applications including Lead Architect of the MineStar Fleet Management System – real-time optimisation and decision support for open-pit mining operations
Quality Coordinator – 14 years experience designing quality systems and improving processes using CMM, ISO 9001 and Six Sigma
Software Engineer – 18-20 years experience design, implementing and maintaining programs across many languages, particularly Java, Python, Perl, Delphi and C/C++
Management stuff …
Business Management – IT business models, budgeting, communicating, metrics
People Management – hiring/firing, professional development, training, coaching/counselling, performance management, succession planning, management styles, management climate
Project Management – sponsoring, adaptive planning, predictive planning, estimating (including Agile), organizing, monitoring, controlling
Quality Management – Six Sigma (DMAIC & DMEDI), ISO 9001, CMMI
Product Management – Voice of Customer, Voice of Business, Kano models, tender responses, solution and product evangelism, license management, open source
Software Engineering stuff …
Methodology – SCRUM, FDD, Lean Software Development, Unified Process, OMT
Requirements – User Stories, Use Cases, IEEE URS, FIT
Architecture – Viewpoints+Perspectives, 4+1, EAI, BI (data warehouses vs data marts, ETL, etc), SOA
Modelling & Design – UML 2, User interface design, information presentation, distributed systems, concurrent systems, RDBMS design, portal design, API design, protocol design, design patterns, IOC, Martin’s OO design principles
Programming – OO, exception management, design by contract, refactoring, continuous integration
Testing – functional testing, stress testing, usability testing, test management, inspections, Test Driven Development, JUnit, FitNesse
Maintenance & Support – incident management, change management, issue management, update/patch release management, application monitoring, network monitoring
Technical Writing – Information Mapping, user documentation, reference documentation
Technology stuff …
Languages – Java, Python, Perl, C/C++, JavaScript, Delphi/Pascal, Fortran, HTML, CSS, XML, XSLT, DTD, Assembler (680×0, 80×86)
Operating Systems – Linux (Ubuntu, SUSE, Xandros, Mandrake/Mandriva), Windows XP/2003/2000/NT/98/95, , OS X, Solaris/Unix, MS-DOS, CP/M, VMware
Databases – Oracle, PostgreSQL, Hypersonic
Reporting – JasperReports, Business Objects
Web Servers – Apache, Tomcat, Zope
Middleware – SQL, OpenORB, JacORB,Visibroker, IONA Orbix, BEA Tuxedo, XML-RPC, TCP, UDP, IP, HTTP, IIOP, FTP
Office Tools – Microsoft Office, OpenOffice, Firefox, Thunderbird, KDE, GNOME, Visio, Project, Lotus Notes, FrameMaker, SGML-Tools and many more
Collaboration Tools – Bazaar, Launchpad, JIRA, Confluence, GForge/SourceForge, Bugzilla, CVS, RCS, SCCS and many more
Java APIs & Tools – Swing, JasperReports, JFreeChart, Hibernate, Spring, JDBC, JMS, RMI, Servlets/JSP, SAX, DOM, XML-DBMS, Velocity, Quartz, edtFTPj, JGoodies Forms & Looks, FormProc, Foxtrot, L2FProd Common, Apache Commons, JIDE, ANT, Maven, IntelliJ, FindBugs, JProbe and many more
Industry presentations I’ve given …
2000 QAUUG Summer Technical Conference (Brisbane), Lessons From the Java/CORBA Trenches
1999 Developer.au (Sydney), Mincom’s Enterprise Bus: A CORBA/Java Framework for Building and Integrating Enterprise Applications
1998 Object World (Sydney), Experiences in Building Enterprise Applications Using Distributed Object Technologies
1996 QAUUG Summer Technical Conference (Brisbane), SDF β A Documentation System for Software Developers
1993 QAUUG Summer Technical Conference (Brisbane), Learning Perl (full day tutorial)
My university days …
Bachelor of Engineering (Honours) β Electrical/Computing Systems, 1988, University of Queensland, St Lucia
Bachelor of Science β Computing, 1987, University of Queensland, St Lucia