Skip to main content

Keeping Up-to-Date

I started this piece in February 2012 and finished it the following June. I’ve been really keen to publish it, but I wasn’t the only one so I had to wait! This piece was originally published in the ACCU’s CVu(24.4) magazine. I realise there are some controversial ideas here, but they are based on my own experience. I showed this piece to a few people along the way (you know who you are) and the feedback I had  helped me mould my ideas from black and white to shades of grey. I welcome constructive discussion. Most of all I hope you learn something and are inspired to learn more. Please let me know!

It is not uncommon for people to ask me how I keep my technical knowledge up-to-date, especially after I’ve just given a presentation on a subject that is new to them. This is odd because I don’t consider myself as someone who does keep up-to-date and many of my presentations are based on things I and other people have been doing for many years, so it’s hardly up-to-date.
I’ve said this many times, but in my experience there are generally two types of people (or developers if you prefer to narrow it further), those that enjoy their work (live-to-work) and those that are just there for the money (work-to-live). I am firmly in the live-to-work camp and very grateful that I am lucky enough to do a job I enjoy every day. Not only do I enjoy what I do at work, I do more of it at home and get together with likeminded people at local specialist interest groups and conferences as often as possible. I’m constantly striving to be the best at what I do and that generally requires a lot of reading (books, the internet, journals, etc). Of course being the best is usually an unachievable goal, but it is important to have something to strive for.

It is unfortunate that, in my experience, most people are in the work-to-live camp. Even developers.  Actually, maybe they have it right and have a much better work life balance than I do. However most of those who work-to-live don’t do anything in their own time to improve their skills, they don’t communicate with other people outside of their organisation and a lot of them don’t even look to people within their organisation to try and help themselves improve. They’ve always done it a certain way and they don’t see why they should change now, even if there is an industry out there that has moved on to bigger and better things. I hope it’s obvious that these are two extremes of the spectrum and there are plenty of people that fall somewhere in between.

It’s clear that to keep up-to-date (for some value of up-to-date) the first hurdle is wanting too. The chances are that if you want to you are closer to the live-to-work end of the spectrum and in my opinion that’s the best place to be. After that what do you actually do? Here are some of the things that I do in no particular order.

Read like there is no tomorrow and you have to know everything now. Read books, read journals, read blogs, read the things your friends and colleagues have written. You will learn an extreme amount from reading. Then do. If you read and then don’t do you’ll forget it.

Write software in your own time. The goal is to be up-to-date and to do that you need to use up-to-date technologies. Find the latest technologies that you are interested in and use them to write software. You’ll learn the most if you try and solve a real world problem. Aim to write a complete library, tool or application. By solving real world problems you will learn the most about how to use the technology in a useful way.

When I first joined the ACCU one of the existing members took me under his wing. One of the things he told me was that I needed a website. "What for?" I asked. He told me it would be for all the articles I was going to write. I didn’t think for a moment that I would have anything to write about. Of course I was wrong. Writing turned out to be enjoyable, rewarding and most important of all a learning activity.  When you write about something you examine it in detail to make sure you understand it correctly. This usually reveals that you don’t, so you look even closer until you do and of course learn much more in the process. Even if you’ve learnt something it would be a real shame for people not to read what you’ve written. So write for your website and other websites, write for your blog, write for journals, write for your colleagues. Do everything you can to get get people to read what you’ve written and make sure you get feedback so you can improve.

Talk to other software engineers. It’s very difficult to learn in a vacuum and arrogant to think that you don’t need to speak to other people doing similar things to you to learn. Even if you have other software engineers working with you join software related groups, like the ACCU, where you can talk to other software engineers. Discuss your ideas and problems and ask questions. You’ll learn a lot this way and the chances are someone in the group is working with the latest technology that’s interesting to you or knows someone else who is.

What better way to meet other software engineers than attending local Special Interest Groups (SIG) and conferences. You can go along and hear about how other people have solved problems with new technologies that interest you and then speak and learn with them afterwards. Writing and giving your own presentation is a great way to learn in the same way as writing articles. People will want to ask you questions so you need to know your subject inside out. People in your audience may know different things to you and answering their questions and interacting with them is another great way to learn.

To keep up-to-date find out what works for you and keep doing it. If something doesn’t work for you, stop doing it. Above all learn and have fun.

Comments

  1. I'm confused by people who don't got to local groups and conferences, you learn so much. Often from the guys sitting next to you in the crowd. Its often pretty inspiring and exposes you to new ideas. Most guys are really friendly and you can ask them those odd questions you have. After all its the new stuff that makes you want to do this sort of work.

    Never done a talk perhaps I should, my writing isn't going to win any awards anyway. :)

    ReplyDelete

Post a Comment

Popular posts from this blog

Write Your Own Load Balancer: A worked Example

I was out walking with a techie friend of mine I’d not seen for a while and he asked me if I’d written anything recently. I hadn’t, other than an article on data sharing a few months before and I realised I was missing it. Well, not the writing itself, but the end result. In the last few weeks, another friend of mine, John Cricket , has been setting weekly code challenges via linkedin and his new website, https://codingchallenges.fyi/ . They were all quite interesting, but one in particular on writing load balancers appealed, so I thought I’d kill two birds with one stone and write up a worked example. You’ll find my worked example below. The challenge itself is italics and voice is that of John Crickets. The Coding Challenge https://codingchallenges.fyi/challenges/challenge-load-balancer/ Write Your Own Load Balancer This challenge is to build your own application layer load balancer. A load balancer sits in front of a group of servers and routes client requests across all of the serv...

Catalina-Ant for Tomcat 7

I recently upgraded from Tomcat 6 to Tomcat 7 and all of my Ant deployment scripts stopped working. I eventually worked out why and made the necessary changes, but there doesn’t seem to be a complete description of how to use Catalina-Ant for Tomcat 7 on the web so I thought I'd write one. To start with, make sure Tomcat manager is configured for use by Catalina-Ant. Make sure that manager-script is included in the roles for one of the users in TOMCAT_HOME/conf/tomcat-users.xml . For example: <tomcat-users> <user name="admin" password="s3cr£t" roles="manager-gui, manager-script "/> </tomcat-users> Catalina-Ant for Tomcat 6 was encapsulated within a single JAR file. Catalina-Ant for Tomcat 7 requires four JAR files. One from TOMCAT_HOME/bin : tomcat-juli.jar and three from TOMCAT_HOME/lib: catalina-ant.jar tomcat-coyote.jar tomcat-util.jar There are at least three ways of making the JARs available to Ant: Copy the JARs into th...

RESTful Behaviour Guide

I’ve used a lot of existing Representational State Transfer (REST) APIs and have created several of my own. I see a lot of inconsistency, not just between REST APIs but often within a single REST API. I think most developers understand, at a high level, what a REST API is for and how it should work, but lack a detailed understanding. I think the first thing they forget to consider is that REST APIs allow you to identify and manipulate resources on the web. Here I want to look briefly at what a REST API is and offer some advice on how to structure one, how it should behave and what should be considered when building it. I know this isn’t emacs vs vi, but it can be quite contentious. So, as  Barbossa from Pirates of the Caribbean said, this “...is more what you’d call ‘guidelines’ than actual rules.” Resources & Identifiers In their book, Rest in Practice - Hypermedia and Systems Architecture (‎ISBN: 978-0596805821), Jim Webber, Savas Parastatidis and Ian Robinson describe resour...