The 11th part of my "Heroes of Java" interview series. Thanks for following it! Stay tuned for the next parts!
Trisha is a developer at LMAX, the London Multi Asset eXchange. She's
been working in financial markets for the last 5 years or so, but a
fear of boredom and healthy amount of job-hopping before then has
given her a wide breadth of experience, in a range of industries, over
the 10+ years she's been a professional developer. Currently trying to
get her head around low-latency, high performance coding whilst also
keeping her fingers in the other pies LMAX has to offer, such as
continuous delivery and agile.
Trisha is heavily involved in the London Java Community and the
Graduate Development Community, she believes we shouldn't all have to
make the same mistakes again and again.
General part
Who are you?
I'm Trisha - Java developer; geek; triathlete; photographer and
socialite. I love problem-solving but I'm more fascinated by people
and how teams, groups, companies and societies work, which is why I'm
involved in the London Java User Group, and it's what draws me to the
conference scene.
Your official job title at your company?
Senior Developer
Do you care about it?
To some extent. At my company I'm the driving force behind
evangelising the awesome technical stuff we've done and I'm heavily
involved in our recruitment process, but I wanted to make sure my
title was "developer" rather than anything more fluffy or more grand.
I feel I won't be taken seriously by the technical community if I'm
not an actual, proper developer.
Do you speak foreign languages? Which ones?
I learnt French at school but I'm very bad at it.
How long is your daily "bootstrap" process? (Coffee, news, email)
If you include all the time between waking up and actually starting
"real" work, I guess we're talking nearly 4 hours!
- First thing I do when I wake up is check my e-mail on my phone.
This is a terrible habit I would like to break, because I have no
intention of actually replying to anything and it just slows me down
- Coffee and breakfast at home followed by the gym or a run. I can't
function properly without some sort of physical exercise in the
morning.
- Then there's all the rubbish of getting ready for, and getting
into, work. Since I'm usually thinking about what I'll be working on
that day, and what my schedule is like, I think of this as part of the
bootstrap.
- Second coffee at work, during which time I catch up on e-mail & my
RSS feeds, and check up on things like the status of test results in
our continuous delivery pipeline. This usually takes from when I get
in to our morning standup at 9:45
Twitter
You have a twitter handle? Why?
Yes, I'm @trisha_gee. Originally I posted to it like a Facebook
status update, because I never really posted anything on FB that I
wouldn't make public. I still use it for that a bit - I like to be
flippant on twitter, but I tend to be more technology focussed on
there than I used to be. I link to interesting stuff I've stumbled
over and to my blog posts and material related to me (of course!). I
had a Twitter revelation at JAX London this autumn though, I found it
very useful for engaging in conversations about the presentations or
subjects at a conference, and it helps to bridge the gap between you
and people you've never met before at these events. Since then I use
it much more conversationally.
Whom are you following in general?
I'm terrible, I mostly use it to publish rather than subscribe - I
write a lot to it but only dive in to read occasionally. I follow a
lot of techies - my fellow London Java Community guys; a lot of people
I've met at conferences; and a lot of people who seem to have found me
via my blog, including a network of awesome women programmers. I also
use it to get the odd bit of info about photography or sports events,
and London-based cool stuff.
Do you have a personal "policy" for twitter?
Twitter is largely my professional-facing persona, if you like. But
that's so much a part of who I am that I like to tweet the odd thing
that gives an insight into me as a person. We're not automata, and I
think any division between personal and professional is either
artificial, or so blurry it's not really a division.
Does your company restricts or encourages you with your twitter ussage?
Neither. My Twitter is useful for work because part of what I do is
evangelism, but I'm not pushed to do it or given time for it. But
then I'm not discouraged from it either. I have no idea what I would
do if I was told not to do it any more!
Work
What's your daily development setup? (OS/IDE/VC/other Tools)
Ridiculous machine for coding on: Fedora Core 13, 24Gb of RAM, a
pair of 4-core Xeon E5620 with HT enabled.
- IntelliJ IDEA
- SVN
- Two monitors
I always have Chrome, IntelliJ, Pidgeon and a terminal open. In
Chrome, I always have Google Mail, Reader, Calendar and Groups open (I
love the "pin tabs" functionality), along with my work webmail and my
blog real-time stats (I'm a bit OCD). In another chrome window I have
the "information radiator" of our build pipeline, which is usually
open on my second monitor, and an additional tab for AutoTrish our
tool that shows the intermittency in our acceptance tests.
When I'm not at work, I have my MacBook Air, which I thought was a
terribly frivolous purchase but turns out to be one of the best
investments I have ever made. I was going to use it just for
blogging, but it's powerful enough for development too.
Which is the tool providing most productivity to your work?
Hmm. Probably my team. My actual tools just distract me.
Your prefered way of interacting with co-workers?
We pair program most days. If we (my pair and I) have a question we
will talk face-to-face like real human beings to the person with the
answer to that question. This is very odd to me, I prefer instant
messenger, but this turns out to be the most effective way to get
answers and allows you to ask questions you didn't even know you had.
Most of the technology department has lunch together in our kitchen on
most days. I love this, we feel like we're in it together, we get to
blow off steam and find out what the other teams are working on. We
also get some insight into what's going on outside of day-to-day
development, as a lot of those who count as "management" are there
too.
What's your favorite way of managing your todo's?
I used to like lists in my notepad (always written in pencil). But
because we pair program and rotate around the stories that are in
play, I try and capture tasks on post-it notes so that they can be
added to the Kanban board.
I tend to use my e-mail inbox as a todo list for things which are not
directly related to the code I'm working on, and I have several
calendars to track time-critical things. I even have a whiteboard at
home for todo items and shopping lists. Did I mention I was a bit
OCD?
If you could make a wish for a job at your favorite company: What would that be?
Somewhere I'm surrounded by smart people; a job/company that enables
me to travel, and to meet people; a role that allows me time to think
and experiment and write and present; and, of course, plenty of time
to write actual, useful, code.
Java
You're programming in Java. Why?
I studied it at university so it made sense to take Java roles when I
graduated in 2001. Previously I had worked with VB and Pascal and
Basic, and web technologies like HTML and JavaScript. Object Oriented
Design started to make sense to me, and I stuck with Java. I'm not
particularly precious about it, but with 10+ years commercial
experience, it's frustrating to work in anything more unfamiliar.
The fascinating thing we've found at my company is that Java can be a
language suitable for high performance code. This is the area that
currently interests me, especially as Java actually tries to abstract
away many concepts that you might traditionally worry about, like
which CPU instructions are the fastest for achieving a particular
goal. It's almost a game to get Java to do what you want. And at the
end of it, you have code which is not only fast, but really very
readable.
What's least fun with Java?
UI programming. But I haven't had to do it for years because I always
work on projects with web front ends or APIs.
If you could change one thing with Java, what would that be?
I was rather taken with C#'s closures. I guess lambdas are a step in
that direction.
What's your personal favorite in dynamic languages?
Now you've got me. I haven't actually tried any for a long time. Is
that heresy? I'll have to say JavaScript because it's the one I have
most experience with.
Which programming technique has moved you forwards most and why?
I think probably Test Driven Development, in terms of a real
game-changer in my own code. I started looking into it, and trying it
out, about five years ago. In my current role I really got to refine
it because we use tests all the way from the unit level to acceptance
(using our own DSL) and performance.
The thing I've been working on most this last year is improving my
Domain Driven Design. TDD can drive to you local optimisations, and
can, if you're not careful, lead to losing the big picture. By
thinking about the whole domain, modelling it (even if it's just
scribbles on a white board) and having a ubiquitous language with the
business, you should be able to write cleaner, clearer, more
maintainable and extensible code.
What was the biggest project you've ever worked on?
In my early career I did not have enough knowledge of the overall
architecture to absorb how big or small a project was. At Ford Motor
Company, and at one of the investment banks, I worked on a number of
large enterprise projects with teams of a dozen or more programmers on
the section I was working on. Looking back, I think the complexity
was integration rather than it being some massive application with
huge amounts of functionality.
In terms of complexity and sheer range of functionality, the project
I'm working on at the moment is probably the biggest. Our team is
quite small (about 15 developers in the whole company), but we all
work on all areas of the system, which includes the matching engine,
the user interface, our four different APIs (including a C# one),
administration tools, reporting... basically everything an
FSA-authorised financial exchange needs to run its business. I
believe that keeping the team small, and focussing on one area every
milestone, has created a good, maintainable product and a team that is
capable of continuing to build on it.
Which was the worst programming mistake you did?
When I was working for a retail bank I deleted two and a half (out of
four) test environments 30 minutes before our Christmas lunch... It
was lucky everyone was out for the lunch because it gave me a few
hours to restore everything. Lesson learned? Always check the
directory you're in before you type "rm -rf"...