Improve Your Tools, Always!

“Well, in our country,” said Alice, still panting a little, “you’d generally get to somewhere else — if you ran very fast for a long time, as we’ve been doing.” “A slow sort of country!” said the Queen. “Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!” (Through the Looking Glass, Chapter 2).

It is likely that the Queen was related to some kind of technology industry. Most probably the IT industry. Things are evolving quite fast here. We even had to extend our screwdriver collection multiple times over the last decade because new screws get “invented” with new devices all the time. New technologies, solutions and patterns appear, some stay but some also die, impacting the whole universe. It takes continuous effort to maintain your position as a specialist in the IT sector. The whole of Software Craftsmanship is actually about putting your skill and experience into the delivery of some product. Crafting requires using different tools and the choice of these tools influences the speed and quality of production. 

Diversify Your Skills

It is relatively easy to realize the need for skill. At the end of the last century, one very important book advised:

“Diversify. The more different things you know, the more valuable you are. As a baseline, you need to know the ins and outs of the particular technology you are working with currently. But don’t stop there. The face of computing changes rapidly—hot technology today may well be close to useless (or at least not in demand) tomorrow. The more technologies you are comfortable with, the better you will be able to adjust to change.” Pragmatic Programmer, The: From Journeyman to Master, Andrew Hunt  David Thomas (1999)

I agree. I think that for developers, the best place to get new information is… from other developers. Preferably from the ones whom you can trust, or who you know to be very experienced. But first you need to find them and meet them in person every once in a while. This can often be challenging, but in my hometown it is actually pretty easy. Since 2008, programmers have been meeting in Tallinn every month to discuss and share their thoughts on the industry, everyday work and different available tools. This is a small community of passionate programmers and it’s called DevClub. logo

DevClub, A Family-like Community Of Developers

Initially DevClub meetings took place in cafes and later in participant offices. The club has grown over time – currently there are branches in Latvia (Riga), St. Petersburg (Russia), and two groups in it’s birthplace Tallinn. The meetings are a bit more academic now, with presenters and pre-announced topics. It’s like a small IT-conference, but family-like and warm. We also have open-space evenings and hack-on meetings. It’s completely free for participants since it’s mostly covered by sponsors and by voluntary donations. In DevClub everybody can be a presenter or suggest a topic. Presenters are both local and from abroad, dealing with different technologies.

For me it’s a very valuable source of knowledge and experience, which can be extended with books, online references, videos of reports and lectures from different conferences worldwide. Knowledge is good, and using it in practice while bravely applying new ideas and technologies to your daily work grows experience. 

Tool Picking As A Skill

Use Glass. Apply Skill. Get Accessory.

Imagine this – you have experience and knowledge recognized by both your employee and fellow developers and you feel confident in what you do. There is still something between you and the finished product, something you may overlook – tools.

Tools amplify your talent. The better your tools, and the better you know how to use them, the more productive you can be.  Pragmatic Programmer, The: From Journeyman to Master, Andrew Hunt  David Thomas (1999)

Generally speaking, you should use the best tools money can buy, but please note that this doesn’t necessarily mean “the most expensive tools”. It’s wise to have an inventory of the different tools that can be combined and used together. Each tool in the inventory should be designed to do one or two tasks conveniently. Tools evolve, some get replaced with others and some could get customized to better suit their owner. Think for a moment – maybe you also have a favorite pair of shoes that is quite old already, but fits your foot perfectly? Did you ever consider picking the right tool to be a skill or even art?

Choose Your Tool Set And Make The Most Of It

There are still some software companies that force always using the same tools to produce results. This can be depressing and limit your productivity. In Toggl, however, we are free to choose any tools we prefer to get things done well.

One of my personal favorites, that I use use daily, is RubyMine (Integrated Development Environment for Ruby programming language, and related back-end technologies from JetBrains). In my opinion it’s the best tool for some specific tasks and this is purely based on my personal experience after trying out quite a lot different editors for ruby code. I always recommend it to my friends but if they try it and find that it’s not good for them – I do not argue – we’re all different. There is no limit to perfection, though. You always discover that something is missing from your tool of choice or just need something additional. That’s why I make a few feature requests to the RubyMine team every year and have happily seen some of them appearing in new releases. Most often, however, I get a reply describing how to use a (similar or exactly requested) feature already present in there. Or an explanation on why my feature request is somehow against some existing workflow. This lets me know whether there is a better way to use my existing tool or whether I should find or create another tool for my inventory.

I do look for possible new tools and not only if I have something missing from my own. It’s good to know what’s out there. I’m always tracking updates to old and known ones and trying out completely new tools. DevClub with its different opinions and preferences is, again, very helpful here. Each developer has their own preferences, and their own unique way of being the most productive, and usually people tend to be passionate about their favorite tools. This way you may get great ideas on what to try next.

Be Heard As a Tool User

Tools can be customized. The general shape of a tool is always driven by customers/end users. Your feedback is very important and is generally used to make things better. If you care about making your favorite tools better – then always give feedback. If you notice something special you miss in a product – notify the developer. There is usually an option for feedback and feature requests on the product’s page. If the software you used crashed and asks you to submit an error report – please do so. You get some bonus karma points for the little extra effort of adding a few lines describing what you did before it crashed. Even if there are millions of users, there is always the possibility that your error report helps to fix some “ultimately non reproducible” bug. If your tool allows to track and submit anonymous usage statistics – please do so. This helps to remove features that no one uses and reduces the complexity of the whole system. Or it could help to concentrate on features that were originally considered supportive and optional but are actually really widely used by customers.

Meet The People Behind Your Favorite Tool

Dmitri Nesteruk re-living moments of Devclub in Tallinn.
Philip Torchinsky at May 24th 2013

There are endless possibilities on how you can influence the production of these tools that you use, but nothing beats the face-to-face talk with their developers. That’s why I was really excited when I found out that there is a JetBrains evening in DevClub. Last Friday, two Evangelists Dmitri Nesteruk (Developer Evangelist, ReSharper Team; @dnesteruk) and Philip Torchinsky (Technology Evangelist at JetBrains; @philipto) arrived in Tallinn and showed us in detail the pre-release versions of ReSharper 8 (plugin to ‘fix’ Visual Studio for enjoyable .NET and Web development), YouTrack (keyboard oriented bug tracker), TeamCity (continuous integration server)  and WebStorm (IDE for JavaScript and Web 2.0 development).

Q&A sessions with JetBrains representatives resulted not only in us peeking into their future. All our complaints and feature requests about all JetBrains products where heard, discussed with the whole club and added to their development issue tracker. This was more or less the same way I did it as a RubyMine user on their support page, but with instant feedback in person. Feedback was given by people who know exactly what is the general direction that their tools are heading to in the future. And this was beneficial for both sides – we even generated some ground breaking ideas that they liked a lot.

This is a special feeling, just like when contributing to the open source community for the first time. Now you can say that it’s MY tool, not only because I use it daily, but also because I have contributed and made it better. We here at Toggl also organize personal meetups with our users several times a year, visiting clients in the US and Europe and hearing their feedback. 

Fight For The Unavailable Tool

Unable to install - Google play store
Do you also see the hidden option “Install anyway”?

If you live in a small country, your choice of tools may be limited. For example, currently it seems like we’re able to get some kind of HiTec glasses with two SIM cards and a TV, coming from east, before we will officially get Google Glass.

Most often the availability limits are artificial, either because of export / legal issues or simply human error. I recently had a similar experience with LumxLink by Panasonic. This small app is made to control your photo camera from your smartphone. While a great app by description, it had one serious flaw – “this program is not available in your country”. Search engine results showed that Estonia is not the only country being left behind. Jailbreak and the use of third party app market was the only solution suggested by different unofficial forums worldwide. This seemed wrong both by nature, and because most linked versions of the app had asked for more permissions (including services for money, like number dialing) than were listed on the official app page.

For me the solution was to ask for answers directly from Panasonic. On 12 May, just a few weeks ago, I wrote to Panasonic regional support and described my problem. Regional support answered that there are no known problems regarding the app availability. “Interesting“, I thought, and replied with screenshots of every step I had made both in my smartphone and in the web browser. “Interesting”, replied support and confirmed the issue. They also promised to ask the main office for details, but warned me that it will take some time. While I was prepared to remind my problem to them in a month or so, it really only took a few days until I got the reply. I was notified that HQ in Japan promised that on the next scheduled release they will double check app availability for all European countries on app markets. To make my wait easier they even sent me the ‘STRICTLY PERSONAL AND CONFIDENTIAL’ email with the exact date of the upcoming release.

On the beautiful evening of May 22, I had the app installed – through the official market on my phone, completely safe and legal, boosting my possibilities and options to get the photos I need. So I encourage you to always ask why some tools are not available for you. If it’s a human error, it will be corrected. If it’s a regulatory issue, you might make the producer see interest (and profit) in coming to market near you.

Patch & Customize It – On Web It’s Easy

Today, “cloud” is the trend. The majority of tools are web based and this is amazing in a quest for a better tool. Using the browser means that there is some server, sending your browser some code to compute on your machine and display you all you need as a web page. You have the possibility (just be sure to check the terms of service of your productive tool, and ask support if in doubt) to alter code after it has arrived from the server, but before it is run by your browser. You can change both design and functionality, add and relocate buttons or even integrate some kind of third party functionality. A good example is our own plugin to start our Toggl timer directly from Pivotal Tracker as we pick tasks to work on. It was originally created to save our team’s time and then we decided to share it with everybody else too.

The great thing is, even if you’re not in the IT-sector, you can easily search for existing extensions (or Add-Ons) for your browser. A bit harder to use, but with a bigger choice of functionality are cross-browser script collections (for example Greasemonkey) and communities behind them, offering help and advice.

In case there is no perfect solution out there you can create your own extension. Either create one by yourself or find someone who can do customization for you –  maybe your corporation has some IT folks working on-site, or you can get someone from an army of freelancers looking for jobs online? This should be relatively easy (and cheap), but could save you a few seconds of your time (time is a very valuable resource – here at Toggl we know this especially well) each time you use it. Note – any customized scripts and additions to the page will break in time because of design and functionality changes made by the page/service owners and developers. So be prepared that you probably need to invest into fixing your custom tool, but it should generally pay off.

Ask For More

Dare to ask more from your tools, there is always room for improvement. Take time to improve your tools that earn or save you money. Make your needs and ideas heard. Try different tools and be ready to change them (even your most favorite tools may get outdated). Every second that could be saved by using your tool, will make for huge savings over time. 

I would like to conclude my thoughts with this list of questions to consider. Let’s carry on with the discussion in comments! 

  1. How much do you invest in your skills yearly (as a percentage of income for example)? Does it pay back?
  2. Do you improve your own skills, knowledge and experience, and also all the tools you use? Does it pay back?
  3. Do you participate in some kind of local community, based on your primary skill? Why?
  4. Do you prefer tools with single responsibility (given it plays well with other tools in your inventory) or something big-all-inclusive, where you use less than 5% of the available features and options?
  5. Do you know how you can influence how your tools look and work, even if they do not seem to offer customization?
  6. What is your favorite tool and why?
  7. What would you improve in your favorite tool, and how?
  8. Is there any tool-maker whom you would like to have a chat with over a cup of coffee?
  9. How often have you felt that “it is pointless to write, they will ignore me”?
  10. When was the last time you used the Toggl feedback form? Was it because of a bug, or a missing feature? Or are you one of these people who writes just something warm and supportive, motivating our whole team to push further?
  11. Do you also forget to attach screenshots and step-by-step reproducing instructions to your first message when you ask product support for help? 

Let’s make the world better, one tool and product at a time!

By On May 29, 2013