Paul WellsCTO of AgileJ Software the smartest class diagram generator for Java and Eclipse
Tucows: What made you want to be a Developer?
Paul: In my late teens, I was heavily into making electronic music, and I had enrolled in a further education course to learn about building electronic musical instruments. To make different sounds you need to generate different shaped waves. What I quickly discovered was that the mathematics behind designing analog circuits to generate the cool sounds I wanted to hear was beyond my comprehension. Instead of getting cool, new-age sounds from the circuits on the lab bench, all I could get was a random squawk as the baffling mathematics got its revenge on me and the electric circuits took on their own perverse behavior. However, this all changed suddenly one week when my class was introduced to the subject of digital electronics. Digital sound generators make waves by reading numbers from a lookup table, so you can make any sound wave you like by just punching in the numbers to describe the shape of the wave and writing some assembler code to read those numbers and output them as a sound wave. This felt like the most massive cheat I’d ever come across. No more horrible mathematical modeling - just straight to the sound you want. I was hooked. Digital was the way forward for me and I’ve been cheating the mathematical modeling world ever since.
Tucows: What Platforms do you develop for?
Paul: Anything which Java will run on. In fact, if you call Eclipse a platform, which I do, then Eclipse is my preferred platform, although in recent months I’ve discovered GWT and the HTML 5 canvas.
Tucows: What are some of your biggest challenges right now?
Paul: I’m growing a business, which requires me to keep many plates spinning on sticks. So the one big challenge is keeping them all spinning and spotting the one which is about to fall. If I work on the product, marketing opportunities get missed. If I work on the marketing, support issues start stacking up - or test coverage falls back, or documentation gets out of step, or QA miss new features, or candidates for a new role don’t get interviewed.
Tucows: What are your favourite developer tools to use?
Paul: Being a developer tool company then I am, predictably, bound to declare AgileJ StructureViews my favourite developer tool. I’m constantly surprised by the pictures that it throws up of my own code. Even though I think I know the structure of my code inside out, I still find seeing the relationships between the classes laid out provokes more thought about how it could be better structured.
Tucows: Three things every developer should know?
Paul: Check you’ve finished one task before starting another. It takes time to load your brain with the context of a new task, documents to read, code to read, requirements to study and test conditions to set up. Often when you have to retrace someone’s steps and finally nail a bug in their code you also think “if they’d spent another 20 seconds checking this it would have saved me two hours”. Ideally, get someone else to review each commit of new code to check it for completeness; there will nearly always be something which can be done better and very easily while you have the context in your mind.
Have different modes of coding: prototyping (exploratory), or production (finished product). The first is fast and disposable but which shapes your approach; and the second is steady and solid, allowing you to build code which other code will rely on in turn.
Use a code visualizer, such as AgileJ StructureViews, to quickly check the quality of the Object Oriented structure of not just the existing code you have inherited but also of new code as you add it. Are there obvious blob classes? Have there been attempts to partition the design with interfaces, and if so are they intact and in use and created uniformly? Are the inheritance hierarchies too flat, or too detailed? There are nearly always refactoring opportunities which come to light when you look at the class diagrams.
Tucows: What industry sites and blogs do you use to stay informed?
Paul: I listen to the BBC Click podcast with Bill Thompson, who never fails to inform. I am also subscribed to the SE Radio podcast.
Tucows: Favorite app?
Paul: There’s an app for my phone called Runtastic which tracks my feeble attempts to keep fit running around my local area, and keeps a tally of distance run and, supposedly, calories burned.
Tucows: Favourite gadget you have right now?
Paul: HTC Desire Android phone, in which I have a contract-free, unlimited data tariff SIM.
Tucows: What does the future of software development look like to you?
Paul: Let’s say 20 years ahead - when there will have been breakthroughs enabling computer hardware to be woven into everything we manufacture - the demand for software will go up, and there will be a generation of computer programmers spread all over the world helping to develop software by supplying the human reasoning parts in micro-tasks. - The task of programming will have a highly spatial, visual feel to it using the human brain in the way it works best - as a visual interpreter. Text will still play a heavy part in programming, but visual composition of code will play a much more prominent part.
Tucows: What is your advice for new developers?
Paul: Get productive with one technology area first, ideally something which is useful to you and cannot be achieved any other way. It’s much easier to build your knowledge outward from something you know and which is useful, than it is to learn it topic by topic without putting any of it to real use.
Tucows: What events or conferences will you be attending this year? Any specific reasons?
Paul: Nothing planned for this year, I normally go up to Cambridge or down into London if the British Computer Society are putting on interesting evening events.
Tucows: Who inspires you?
Paul: It is rare that I’m not inspired by the speakers at the TED conferences - really mind-broadening material and ideas. Bigthink and foratv also have some inspiring speakers.
Tucows: What’s your favourite product you’ve developed and why?
Paul: I have a background in industry software projects across finance, pharma, telecom, and others, and while these have had their brief moments of satisfaction as either breakthroughs in communication have happened or new systems have gone live, nothing compares to satisfaction of taking AgileJ StructureViews forward, first on the Eclipse platform, and more recently on GWT.
Tucows: Can you tell us what inspired you to make it?
Paul: I was inspired because I knew that while code structure visualization was obviously a useful path to getting a better understanding of the software I was working on, the reverse engineering side to most CASE tools was not really their forte. CASE tools wanted then, and still do now, to have you draw pictures which you turn into software. I simply thought, “well what would happen if there was no forwards engineering, just very good reverse engineering?”
Tucows: Which one of the Simpsons characters best represents you and why?
Paul: I enjoy The Simpsons but cannot say that any of them represents me, although I’ll need to keep using Runtastic to avoid resembling the physique of Homer. If we widen it to all cartoons, then I would have to declare some empathy with Klunk, the aviation technologist from Catch the Pigeon with Dastardly and Mutley.