19 posts tagged “thoughtworks”
Adriaan and I have decided to part ways. We started this great partnership nearly 4 years ago under very different circumstances than what we find ourselves in today. Since joining ThoughtWorks last August, my level of commitment as a developer has risen a lot. The weekly travels, working with open source project, involvement in recruitment within TW, etc. mean that I have not been able to devote the time to ecto that it deserves.
I don't often met new people and thus question of what I do does not pop up this frequently. But it has been hard to describe what I do to people who are not in the software development community since the first day I started my first job. Normally I just say I am a software developer and that tends to put most people off since they don't understand software at all. To them software is a black box, it is magic, it is voodoo. But every now and then there will be someone who does a bit of Visual Basic Scripting in the office and thinks s/he knows software development. This person would then try to probe deeper about what I actually do. In that situation, I'd have no mercy and just tell the person exactly what I do. 99.99% of the time, eyes would glazed over within 10 seconds and conversation would die as soon as I finish my sentence.
We are developing the build & deploy system for the whole enterprise. That is, a system that allows in-house developers to build their applications and deploy the applications to the machines. Sounds simple but we are also implementing Continuous Integration concept using build servers, trigger off source control checkins. (The main reason ThoughtWorks was brought in as we are known in the industry as build expert, re: CruiseControl)
We are also solving their source and binary dependency problem so applications would be self-contained when they are built, tested, and packaged by the build server. The deployment/install process would allow environment specific properties to be substitute during deploy time so packages can be deployed to multiple environments without going through the build process again. (Build once, deploy everywhere)
Deployment process also includes workflow steps to manage code review/gatekeeper approvals, security audits, and code signing.
All of these are built with extensibility in mind so future technology, such as Ruby, IronPython, can be introduced into the organization via plugins with minimum alteration to the system.
In addition, we are also advising the client on code branching and merging strategy, best development and unit testing practices, dependency management, database upgrades (model and data) using delta scripts, etc.
I also understand people's frustration with Ruby since you often feel like you're in Quebec and have to point at the menus to order food. At best the locals humor you, at worst they hate you and want to seperate into their own country.
Now, show us your dream job.
- work with the latest ideas and tools?
- choose the computer platform they prefer to use?
- blog about what they do daily (encourage, in fact)?
- use what they learn in projects and write books, probably co-author with Martin Fowler (another encourage activity)?
- diversify, learn new skills (technical or otherwise), and change role within the organization?
- hold the management accountable to what they preach, and have open discussions?
A few ThoughtWorkers decided to participate in Movember and one of them, Toni, is in our team. He has been growing his mustache for last three weeks, so this afternoon we decided to greet him with mustaches on all of our faces (including Baxter and Nemo!) when he came back from the coffee run.
Here is the team picture, see the rest on Flickr and Facebook.
This last Saturday many ThoughtWorkers and I went to the ThoughtWorks Away day here in the UK. This is mainly so we can meet each other because not all of us work in the UK office. Throughout the day many talks were given by other ThoughtWorkers, relating lessons they learnt from projects. Here are the sessions I went to:
- What kind of thing is it? Applying Domain Driven Design - Very interesting session. A different take on DDD from my current project. Some even diametric ideas such as no mock testing on EVA (entity, value objects, aggregates), which makes us think.
- When do we have enough tests? - Another interesting one. Does test coverage actually provides business value, or are we chasing coverage for metric sake? Is this a question of quantity vs. quality? Are we compromising design for testability?
- CI and Theory of Constraint - Probably the most pertinent session of the day. Great lessons on how Continuous Integration may actually make the project goes slower if it is the main bottleneck, and how to spot and remove them. Lots of audience participation and couple of us from my project took valuable lessons from it.
- New features of C# 3.0 - Been there, done that, got the t-shirt. Nothing I didn't know already. Mainly a session to try to get Ruby people to see C# is not as bad as they think :)
- A Thought Experiment, projects without project managers - Promised to be controversial but turned out to be pretty boring. Might have something to do with the fact there were three PM in the room...
- ???? - A top-secret product demo that I can't talk about. I've already seen some of it when I was in Bangalore so it wasn't as exciting as I thought. Should have gone to the meta-programming with Ruby session instead.
It won't be a TW event without our esteem leader and troublemaker, Roy, to give us a speech. Many achievement were mentioned. Plenty under NDA but here is one that we can brag about publicly:
- Oracle Mix (http://mix.oracle.com) - Launched this week at Oracle World. Built by TW in 5 weeks with 4 TWers and 2 Oracle people using JRuby running on Oracle stack. "Impressive!" as Yoda said! And if you scroll to the bottom and look to the right, you will see something that normally doesn't appear from our work with clients.
And we play as hard as we work so in the chilling out room, some of us play Jenga Tower.
It has been a long time since I've worked on the ecto/Windows code in any serious manner. Sure, I've fixed a few bugs here and there as well as updating various libraries that ecto uses, but the last time a major feature was added to the code was at least 6 months ago, if not longer. That doesn't mean I have not given any thoughts to the development of ecto during that time. I had many ideas on and off on either new features or how I would code it now if I were to start from scratch.
Well, last week I officially started jolting down some of these ideas and tasks. I've tried recording my ideas down 'properly' and used it as project planning before but had never found a tool that worked well. I've tried the basic (text files) to complicate (bug tracking application like Mantis). This time I thought I would try Mingle, an Agile project planning tool developed by (yes, my employer) ThoughtWorks. *
So far, my experience is pretty positive. I've recorded my ideas on new features, improvements, and tasks down in Mingle. Each of these is stored as a 'story card' and Mingle allows me to tag it, set properties (which I can define my own), and add description. It is the description part that proves to be powerful to me. Mingle allows a kind of wiki style markup in the description so I can add URLs, format the text, or even link to another story card inside the description. This means I can record links that are relevant to the story (e.g. product page for new feature, API documentation for references, etc.) right there so I don't have to look for them in my bookmarks or google it every time I need them.
I can also record bugs or issues in Mingle and reference them back to ecto's support forum so I won't lose track of the bug as it gets push down the message board. It is not a full blown bug tracking application such as Trac or Bugzilla but I don't need those features anyway as I am working on my own.
The iteration planning aspect of Mingle is of less relevance to me since I won't be forcing myself into a strict weekly or bi-weekly schedule, likewise with the very nice and powerful graphing and reporting features of Mingle.
We'll see how well Mingle will hold up as a repository of ideas and knowledge when I slowly move into the actual coding phase.
* I've started using Mingle during their beta testing phase before I joined ThoughtWorks. But having the inside track on what's coming in the next few versions certainly helps me decide on trying it out!