Resolver Systems : Technology

Jonathan Hartley
Programmer

Data Points

Eschewed established programming languages like C# in favour of IronPython

Wrote lots of our own internal infrastructure

Strong on agile development
  • Test-driven development
  • Pair programming

Typical of small technically-savvy startup

Why IronPython?

Niche implementation of a niche language

Python & Open Source have low penetration within technically conservative client organisations

Microsoft's acquisition of IronPython was a trifle worrying

Dynamic languages reputedly slow & unscalable

IronPython : Rapid Development

Innovative product:
  • Needed rapid prototyping
  • Specification very fluid

More functionality with less effort

Functionality vs Effort

images/codemetrics.png

IronPython : Embeddable

Embedded in our product as a scripting language

User's cell formula & macros are written in the same language as the application

Dynamic typing matches user expectation for spreadsheet formulae syntax

IronPython : Credible

Microsoft managing IronPython very well (eg. accepting and responding to bug reports)

Resolver One the world's largest IronPython application

Is a fully-interoperable .Net language

Client's spreadsheets can very easily use in-house or third-party components, commonly written in .Net languages like C#, VB.Net, etc.

Gained credibility amongst our .Net-oriented clients from the acquisition by Microsoft

IronPython : Testable

Dynamic languages a natural fit for Test-driven development (TDD)

"Doesn't that halve your development speed?"

Good product & happy developers

Can't imagine doing future software development without it

Custom infrastructure

Didn't set out to roll-our-own, but gradually accreted small improvements.

Replaced Cruise Control with a custom script

Test runner publishes results to a database

Distributed test runner spreads the load across idle PCs.

Pair Programming

"Doesn't that halve your development speed AGAIN?"

Actually provides huge benefits in terms of:
  • Interpretation of specification
  • Number of bugs
  • Code design (easier to change product later)
  • Spread knowledge around the whole team
  • Abolishes 'developer guilt' in the workplace
  • Brilliant for morale

End of file