The 11th part of my "Heroes of Java" interview series. Thanks for following it! Stay tuned for the next parts!
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?
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
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!
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.
You're programming in Java. Why?
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?
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"...