Showing posts with label Career. Show all posts
Showing posts with label Career. Show all posts

14 Apr 2015

The Software Developer’s Guide to Interviews

I’ve just completed a round of interviews for developer roles, and thought it would be useful to post some thoughts on the process. In particular, I wanted to document what the interview can tell you, the interviewee, about the role and the company you are applying to. There are plenty of guides telling you how to prepare for an interview. I don’t know of any that tell you how to review an interview and use that information to rate the different positions and companies you’re applying to. I suspect most people just go with their gut instinct, which is usually right, but doing a systematic review may help you realise why you prefer one job offer over another.

TL;DR Version

How a company behaves during the recruitment process is a good indicator of its internal culture and what it would be like to work there.

The Ideal Recruitment Process

From my experience of both interviewing and attending interviews for developer roles, a good recruitment process will follow most of these steps:

  • Write the Job Specification - The job advertisement will be based on the job specification for the role. This should specify both the essential and desirable skills and experience that applicants should have.  If possible, this should be initially be developed by senior team members for the new role. In my experience however, the larger the company, the less influence the team will have on the job specification. If you are really unlucky, the job specification will simply be a generic description for that role in the company hierarchy, and will have no information on the work you will actually be doing.
  • Form an Interview Panel - At a minimum, this should consist of a manager (preferably the manager the new hire will report directly to) and two technical interviewers (as it is harder to bullshit two people at the same time!). I personally prefer to have a member of HR also present – this helps keep the manager honest and prevent them stretching the truth when attempting to attract candidates. This is a particular issue for benefits like remote working that may not be explicitly set out in a contract. In general, the larger the interview panel, the more seriously a company takes recruitment.  A manager may also wear a technical hat, so you may only have 3 people in the panel. The interview panel will typically be responsible for setting the interview questions and defining a criteria for scoring answers.
  • CV Screening - The interview panel review the submitted CVs to the job specification and draw up a long list for interviews. This may happen after a closing date for applications, or as applications are received.
  • Telephone Screening - This is generally a 15-20 minute call from HR to discuss the application, and confirm that the applicant meets the role requirements.
  • Technical Screening – This can be a telephone interview with a senior developer discussing the interviewee’s technical background and asking a number of set technical questions.Alternatively, this may be an online programming assessment such as Codility or an onsite technical test as part of the actual interview.  The aim of the technical screen is to confirm that the applicant does have the necessary skills and experience required for the role.
  • Interview - Obviously this should be an interview with the full interview panel, who each assess the interviewee on a number of pre-set questions for which the panel have identified key answer criteria.  Typically, this would include questions on the applicant’s CV and past experience, questions specific to the role requirements and also soft skills, and then a number of technical questions.  The technical questions should cover more than just the basic job requirements – the questions should cover a range of technical levels and start at core, fundamental concepts and build to advanced topics.  The idea is to identify exactly how technically competent the interviewee is.  These questions should stretch every applicant to some extent, and will be long form in format, to allow the interview panel to force the applicant to to deep dives on specific topics. Additionally:
    • The interview described above will typically take 2 hours to complete.
    • For a developer role, this should always include some form of live coding. This is regardless of whether a technical screen was done previously or not – I’ve came across  too many developers who can BS their way through telephone screens and interviews but who are unable to code.
    • At the end, the panel leader should tell the interviewee how and when they hear the outcome of the interview.
  • Post Interview Review - The interview panel reviews each applicant immediately following the interview, and scores them using the agreed scoring criteria.  The panel’s aggregate score for each interviewee is used to decide who gets the job.
  • Job Offer – The post is offered to the successful applicant and their references are contacted.
  • Inform all Applicants – Once the job has been accepted and the references confirmed, HR should respond to all the unsuccessful applicants. This should be within the time period specified at the end of the interview. Ideally, this shouldn’t be longer than a week, but depending on salary negotiations and references, can take longer. For an automated recruitment process, this may be an online status on the candidate’s application and/or an automated email. Preferably, it should a personal response from HR, either by email or, rarely these days, a letter. 

Based on the above outline, you can see that the recruitment process is a major investment by a company over several months, with no guarantee of a successful outcome (i.e. finding a suitably experienced applicant who will accept the position within the given salary limits).  Your interview may only last an hour or two, but by comparing your experience of a company’s recruitment process to the above, you can get a sense of how they value employees, and what it would be like to work there.

Your Interview Review

OK, so you were lucky enough to be shortlisted, and you’ve just had your interview.  Sorry, but now you going to take 10 minutes to review the interview and your experience with the company.  I typically write these review notes at the end of a document I create for each job application, detailing the job requirements, company background and any questions to ask at the interview. I then update the document with any relevant notes each time I have an interview or call with the company, so I can track exactly how the application is progressing.

The points you need to consider are:

  • How has the company communicated with you since you applied to the position?  Has it been a single person communicating to you, or several, or an automated process? How did you find it – personal or completely anonymous?  How the company treats you as an applicant will typically reflect how it will treat you as an employee.
  • Was there a telephone screening interview with HR?  This is not essential, but is best practice. If it happened, it is confirmation that the company has a defined interview process.  What questions were asked?  You obviously recorded the questions, and any useful information, to prepare for your interview.  From the questions asked, you can also get a good idea of what the panel will focus on the interview, and get a better idea of the work you will actually be doing.
  • How were you tested technically?  Were you sufficiently tested? This isn’t a minor point.  If you were not tested on your knowledge and experience, then the people you will be working with will not have been tested either.  That means you will likely be working alongside some developers who don’t have the skills or experience for the job they are doing.  You might be the person who ends up carrying them.
  • Did you have to write code as part of your interview process?  If not, this is a major failing. If the company doesn’t know if you can code or not, what is the point hiring you?
  • How large was the interview panel?  This is most visible way of assessing how important a company views recruiting developers.  I would be very wary of accepting any offer from a company with less than 3 people on the interview panel, regardless of the size of the company.   Even a one person start-up should be willing to hire HR and technical consultants to have a proper interview panel. If they don’t, they haven’t a clue and you shouldn’t waste your time with them.
  • The interview itself:
    • Were the questions asked relevant to the work you believe you will be doing? 
    • Did the questions asked match the advertised job?  If it doesn’t, it is likely that the job advertised won’t be the job you will actually be doing. This means that the team doesn’t have much influence on other departments in the company – this may reflect that the team you will be joining is low down in the company’s hierarchy and priorities.
    • The interviewer’s personality and  behaviour. Were you treated with respect?  Would you like to work with these people?  Remember, in an interview, people are on their best behaviour on both sides of the table.  If you come out of an interview thinking that one of the interviewers was a pain, then they will be most likely be a complete bastard to work with. You need to trust your gut instinct about people.
  • How was the outcome communicated to you?  Was it done within the time frame set out by the interview panel?  I’ve known companies to pompously rant on about interviewees not attending interviews. The same companies will then completely ignore all unsuccessful applicants once the post is filled – this is extremely disrespectful behaviour.  If you’ve applied for a position, you will have spent several hours updating your CV, writing a custom covering letter, as well as preparing for and attending interviews.  At the very least, you deserve an email informing you that you have been unsuccessful.

Once you have completed the review, you will have a better idea of the company you may be working with. Obviously, this is only directly useful if you are offered the post, and if you have the option to refuse the offer.  Fortunately, experienced developers typically do receive multiple offers, and having an idea of the company’s culture can help you decide which offer is the best for you.  Also, even if you aren’t successful, it informs you on whether this is a company you want to apply to again in the future.

Case Study: Kana

My recent application with Kana in Belfast was one of the worst recruitment experiences that I ever had. I thought it would be worthwhile to share some notes I made after my interviews with Kana:

  • There was a brief telephone screening interview with HR, consisting of some standard questions about my CV and past experience.
  • At the first interview, I was interviewed by the team leader and a senior developer from the team I would be joining if successful. There was no one from HR present. It was a standard interview walking through my past experience and testing my technical ability. Overall it lasted around 90 minutes and was reasonably thorough. There was no coding test or any technical screening aside from the questions asked during the interview. There were a number of questions asked around my commute (I live 50 miles away from where the company is located) and my availability to work late that suggested that this is a team under significant pressure. The actual job did sound interesting (a nice mix of technologies,with a mix of both front- and back-end development), but there were a few red flags, like the focus on being able to work late.  The team leader also had a habit of talking over the senior developer that suggested they might be difficult to work with. At the end of the interview I was told I would get feedback about the interview in 2 weeks.
  • At the second interview (just under 2 weeks later), I was interviewed by the VP for Development and the Principal Architect.  It lasted approximately 60 minutes.  They asked almost exactly the same questions as had been asked at the first interview. I was also told that the role would involve a significant amount of work with Clojure, and relatively little with .NET, despite the role being advertised as a .NET Developer role with no mention of Clojure in the job description. I found the VP to be very brisk in manner, and the Architect while friendly, came across as extremely bored. Obviously, there were a number of issues here:
    • Why were the same questions being asked again?  Did the second interview panel either not speak to the first, or do they not trust their opinion?  Either way, there is a communication issue here.
    • Again, same focus on my commute and on being able to work long hours.
    • The second panel’s interpretation of the role (more Clojure, less .NET) differed from that of the first interview panel and job advertised.  Who is right?

At the end of the second interview, I was told I would be informed within a week if I had been successful or not. Both interviews were held in January 2015. It is now over 2 months later and I haven’t heard anything from Kana, despite sending a polite email asking for some feedback a few weeks ago.

It will probably come as no surprise, but I wouldn’t recommend applying to Kana based on my experience. Winking smile

What has your experience been in interviews?  Do you have your own way of reviewing job applications?  Please share in the comments below.

Thanks to Toby Osbourn for reading a draft of this post. You should read Toby’s blog Development Thoughts where he posts great articles on Ruby and web development.

4 Feb 2015

Goals for 2015

2014 was a pretty miserable year for me. I lost my mother due to illness. I spent a large part of the year not working, and I was quite unfit, as I wasn’t running due to a recurring Achilles injury.  I well aware that there are far too many people who are lot worse off, and that I am actually very privileged, but I can’t help but look back at last year with a lot of regret.

2015 will be a much better year.  I am planning to marry my beautiful girlfriend, Mei, in September.  I’ve just started a new role that I’m very excited about, and I’m now starting to run seriously again, after a lot of physiotherapy and exercise to rehabilitate my ankle. 

These are my goals for the year ahead:

  1. To start running again!! Specifically, I want to:
    1. Run 80 miles per month by June.  I’m currently running around 25-30 miles per month, a very low mileage.
    2. Run every Parkrun in NI by the end of the year,  There are currently 19 Parkruns setup in Northern Ireland; I’ll be amazed if there isn’t 20+ by the end of the year.
  2. Get physically fit again!!  Starting to run again is one thing, but I also want to improve my overall fitness.  This will mean:
    1. Achieve a score of 250+ in the Five Minute Fitness Challenge (blog post to come)
    2. To weigh 70Kg at under 15% body fat by December 2015
  3. To develop a non-trivial side project using JavaScript. 
  4. Marry my girlfriend Mei. The most important thing for the year ahead will be my marriage to Mei in September. 

Mei & I

6 Jan 2015

Online Coding Tests with Codility

I spent several hours today on an online coding test for an employer.  This isn’t my first test using Codility. Not only have I done several of the tests before, but I’ve actually recommended they be used in a previous employer, when I was involved in interviewing, So I thought I share some thoughts around approaching these type of tests.  Before I start, please note – I won’t be posting any solutions to the tests I’ve done.  But feel free to try this useful link - http://bit.ly/1wSuukg. Winking smile

Codility is an online site that allows employers to set online coding tests for prospective developers.  It is effectively an automated screen to ensure that prospective developers have the necessary programming skills for the role. As it can take up a lot of time to arrange telephone calls for technical screening interviews, or onsite technical tests as part of the interview, Codility or the alternative CodeEval, can help save a lot of time.  Obviously, even when using something like Codility, you would still want to have a significant technical element to any subsequent interview.  Tools like Codility are an aid to the interview, but they certainly doesn’t replace it.

The actual test is sent to via an email with a personalized link to Codility.  Typically the link will only be valid for a set period (i.e. 24 hours).  On clicking the link, you are taken to landing page where you can choose to start the test, practice with a demo test or come back later.

Once the online IDE loads, you will be taken through a tour of the IDE features.

Some features in the IDE to be aware of:

  • Problem description (left hand panel).
  • Custom test cases (bottom of the left hand panel).  This allows you to define test cases for your solution, based on the problem description.
  • Code Editor (top right hand panel).
  • Countdown timer  (top right hand corner). Note, each task will typically take around 30-40 minutes.
  • Select the language to code your solution (top right hand corner). Note, this can be limited by the company setting the test.
  • Various buttons to run and submit your solution
  • Console window (bottom right hand panel).  This will display the results of your code solution, including from your test cases.

Note, once the test starts, you can’t stop – the tests are time limited. 

The solutions require you to implement an algorithm described in the problem description. You may be asked to develop a solution with regard to performance, as expressed in the Big O Notation.  Check out this primer if it has been a while since you covered Big O notation!  Note, I have also seen a task that required you to correct an existing buggy implementation of an algorithm, so you may not always be starting a solution from scratch.

Now for my thoughts and tips for taking the test.

  1. Practice using the demo test and examples on the Codility blog.
  2. Refresh your knowledge on algorithms (i.e. sorting algorithm such as BubbleSort, or search algorithms such as BinarySearch), and specifically on Big O Notation.
  3. Use the problem description to define and breakdown your solution.  I typically break the problem statement into single sentences and use this as comments to outline and stub out my code solution.  Obvious, but it is easy to get flustered when taking one of these test for the first time.
  4. Use your usual IDE to develop your solution. The Codility site wants you to develop your code in their online IDE – I found this a real pain to use, and slow at times. My advice is to create a console application to host your solution code, and to develop in Visual Studio (or your IDE/code editor of choice) on your local machine. This offers a few advantages:
    • It is a familiar coding environment that you already know.  The Codility IDE is OK, but it has a few quirks.  For example, I found the custom test cases feature a bit of a pain to use.  There is no learning curve required when you are using your usual IDE editor.
    • You can benefit from automatic error highlighting and faster feedback on compilation errors.  The Codility IDE requires you to hit the Run button and then to read and decipher any errors in the console panel.  Your own IDE will typically give you more information about errors, and give it a lot faster.  This is important, as time is limited!
    • You can make use of a proper unit testing framework, such as NUnit. As noted above, the test case feature in Codility is clunky, and limits you to only 5 test cases.  Forget that, use NUnit and define as many tests as you need.

I created my test console application when I was going through the demo test, to ensure it was working correctly prior to actually starting the test. For the demo (and also the test tasks), I simply copied the stub method to be developed from the Codility IDE into my test console application, and developed it there.  When I had successfully coded and tested it in Visual Studio, I then copied the completed method into the Codility IDE, and then re-tested before submitting.  Once the solution is submitted, you can modify it or resubmit.

When submitted, the solution is analysed by Codility, and a detailed breakdown of your solution is available to the employer who set the test.  You can check out an example here.  Your result obviously determines whether or not you get called for interview.

Previously, I’ve done quite well in the Codility tests, and actually enjoyed taking them.  They are a bit like code katas. Today’s test, however, was a disaster.   There were 3 tasks to be completed, instead of the usual 1, so that the total time for the test was 2 hours.  I took far too long on the first task, which meant I had to rush on the second task.  After spending some time on the second task,  I ended up having barely anytime at all for the last test, so I doubt I’ll get called back. Entirely my own fault.  Interestingly, the second task required the correction of a buggy implementation of an algorithm. I suspect this was deliberately added by the employer as the role I was applying for would involve dealing with legacy code.

Despite today’s cock-up, I still like the Codility tests, and would certainly like to see them more widely used – they’re a lot better than the usual FizzBuzz whiteboard exercise!

Update

Despite the problems I had with the Codility test, I was called for an interview. I was offered a job, but not the position I had actually applied for.  After some deliberation, I declined as I didn’t feel the offered job would push me enough.  But I was very happy to be given the opportunity!

30 Sept 2014

Career Options for the Older Developer


I recently read a Hacker News post asking what happens to older developers, and thought it would be useful to summarize the various options discussed across the 60+ page post.  As I’m in my late 30’s is a topic I’ve been spending a lot of time thinking about personally.
  1. Become a Senior Developer/Architect - This is the route that majority of developers will follow. The main advantages are that you keep on coding (hopefully) and you continue to learn new skills and technologies.  The disadvantages are that as you grow more senior, you are increasing pulled away from development into team management (see below).  There are also the issues of burnout (seeing the same mistakes being made over & over again in new technologies).  You also need to beware of being side-lined into maintaining legacy systems, and having your skills and experience becoming less relevant. Senior developers will typically also see their pay plateau, and will earn significantly less than some of other career options listed below.
  2. Move into Management – Some developers will expect to move through the progression of team leader and project manager into an IT management role.  Indeed, many (too many) organisations encourage/force developers along this path, simply because they don’t have senior technical career path. The advantages are that is such a common career path, and will generally be associated with higher pay.  The disadvantages – the higher the management ladder you climb the less coding you do. Also, being a manager is an  extremely demanding role, requiring a very different mindset to that of a developer.
  3. Consultancy/Contractor – This option is particularly popular due to the current demand for programmers. The main advantages are obviously the higher salary you can command as a consultant/contractor. You get to work on the projects and technologies you’re interested in, generally for short engagements. In theory, you no longer need to worry about department politics. The major disadvantage is the greater risk you’re exposed to when you’re effectively self-employed. 
  4. Move into other Sectors - Some developers will step out of development and move into other IT related roles (System Security, Testing, Business Analysis), while others still will move into different fields where their skills and experience are relevant (i.e. sales, scientific and engineering roles). 
  5. Become an Entrepreneur – This is particularly popular at the minute, with a growing number of developers moving to startup their own company.  You build a product or a SaaS solution or service company.  You may gain financially, or you may not.  At least you are your own boss (or maybe you’re really at the beck & call of all your customers). It will definitely require a significant investment of time and possibly money to become your primary means of making money.
Know of a career path I’ve missed?  Let me know below in the comments, or ping me on Twitter (@AndyParkhill)

P.S. I tried really hard to find a gender neutral icon for a programmer, and the image of the Lego mini-figure above was the best I could come up with.  I’m not particularly happy with it, as it uses the usual lazy stereotype of software developers (male, geeky).  If you know of a better icon or image I can use, please get in touch!

* Photo by wiredforlego used under Creative Commons

7 Mar 2013

Goals for 2013

"Be at war with your vices, at peace with your neighbours, and let every new year find you a better man."  - Benjamin Franklin

As usual, I'm late posting my goals for the new year ahead. I don't see this as being a bad thing. You should take time to consider how & what you are going to spend your limited free time on. This is particularly relevant to me as I have just started a new job with quite a long commute time.

Having looked at how I got on with 2012 goals (blog post to come), I decided to change tack completely, and to limit myself to just three goals for the coming year.

running - I
  1. Break 40 minutes in a 10 kilometre road race.  My last 10K race time was 43:20 (Dessie’s Run, Derry 2012), so to get it below 40 minutes will take sustained, consistent training.  But I doubt if I’ll equal my PB of 35:15 minutes at the Seeley Cup, Belfast, some 8 years ago and when I was over a stone lighter.
  2. This year, I will be making a big push to learn several new technologies in my free time. As part of this, I will post 40 articles on this blog, with the majority of the posts being technical articles.
  3. To listen to 40 pieces of classical music.  I have always wanted to educate myself about great music, and I think it is about time I started.  I’ll blog soon about the various pieces I plan on listening to.

24 Apr 2012

Time for Programmers to Grow Up?

Over the weekend, I came across a tweet sharing an image of a profane commit message.  The tweet originated from a developer from a small but well known Belfast software company.

Original Tweet Sharing Image

Commit Messages Containing Profanity

I wasn't impressed with this, so I replied to let the originator of the tweet know I thought it was pretty immature.  This lead to a (civilized) Twitter discussion with a couple of interested parties about the tweet. 

In this particular case, the screenshot was from a commit to a local repository, which will be cleaned up prior to pushing to a public repository.  It was tweeted by a developer in the company who wasn’t the original committer.  The code wasn't for a client deliverable, but for a community project.  It is worth pointing out that the company concerned does a lot of good work with the local developer community.  The overall feeling was from the guys at the company was that the both commit messages and the tweeted image were no big deal.  I disagree, and this blog post will explain why I think there is a problem:

  1. Profanity Doesn’t Work

Swearing is guaranteed to offend someone.  In this case, it offended me.  It may well have offended others.  I'm not saying this as someone who is blameless -  I do curse.  But there are plenty of ways of expressing yourself without swearing.

  1. Professionalism

I don't doubt the above commit messages were just a way of letting off steam.  We've all been there; my language is certainly not perfect.  But I seriously question the wisdom of tweeting an image with a colleague's name, the name of your company and a load of profanity.  Once it is broadcast on a social network, it is out there for ever.  Would you be happy seeing this one of the top 10 search results for you personally, or for the company you work for?  No, neither would I.

Something relatively minor like this can affect on how professional we are perceived.  In this case, it has diminished my personal opinion of a company who were doing sterling work to support the local developer community.  In the same way, if I walk into a business meeting dropping F-bombs in every sentence, it reflects badly both on me personally and the company I work for.

In this particular case, the code was being committed to a local repository before being cleaned up for release to a public repository, and this was seen as a mitigating factor.  I would ask why take the chance of something like this getting released publically or to a client by mistake?  Why not  hold yourself to the same standard for personal/community code as for a client deliverable?

Incidentally, in one company I've worked for, I'm aware of someone wasting time going through the source code for a major contract and removing the various profane comments before releasing the code to the client.  This stuff can have a cost to a business.

The company concerned doesn't feel this is an issue. But as this recent story shows, just because a company doesn't care doesn't mean their customers will take the same view.  Geeklist lost a significant number of users following this online spate.

  1. Sexism

I have no doubt I will told to lighten up for mentioning this.  But the fact is there are very few female developers.  If we want to start attracting more women into careers as coders, we need (as a start) fewer "brogrammers" and a more gender neutral environment.  Posting a commit messages with references to a sexual act doesn't help, it just perpetuates programmer stereotypes.  If you think I'm grasping at straws here, please take the time to read the following articles:

Possibly you think that I'm making a mountain out of a molehill with this.  Or that I'm just showing my age.  But I seriously think tweeting an image like that is out of order.  Just as I think that a company that allows a culture where it is OK to have developers documenting code in this way has issues.  I would encourage you to respond with your thoughts via the post comments.  If you want to get in touch with me directly, please DM at @AndyParkhill.  Thanks.

31 Jan 2012

Review of My Personal Goals for 2011– Part 3

This is the third and final part of my review of last year’s goals.  In my previous posts, I covered the first three goals.  My fourth goal was:

  1. Career - Become Microsoft Certified in SharePoint 2010.

I actually met this goal fairly easily, passing exam 70-573 (Application Development in Microsoft SharePoint 2010), and in addition becoming a MCITP in Business Intelligence Development (exams 70-448 and 70-452), as all 3 exams were required for work.  Of course the fact that Microsoft certifications for developers are effectively worthless is neither here or there. 

  1. Financial – Save 20% of my net salary (in addition to pension contributions)

I feel slightly short on this goal, with a total savings of 18.76%.  Given that this was from a base saving rate of just under 10%, I’m counting this as a pass!

 

 

Overall, I‘m actually happy enough with how I progressed my goals, but there were definitely a number of issues with the goals I set for 2011:

  • Too many general aims, with too many specific goals.
  • The various goals were too disparate, with no underlying theme.
  • Several of the goals weren't of any true benefit to me.

All of which I will take into account in my next post, when I’ll finally spell out what my goals are for 2012.

17 Jan 2012

Developer Community Groups and Buses

Just a quick post to highlight two new Belfast developer groups that are having their first events this month.

The first event is being hosted by Bash! on the topic of Lessons in Clean Fast Code.  The talk is being given by performance guru Martin Thompson, and it is taking place this Thursday evening (19th January) at the Holiday Inn on Ormeau Avenue.  With some 200+ people registered to attend, it is guaranteed to be a great night!

The second event is from the newly formed Belfast Ruby community group, which has been formed by the guys in Rumble Labs..  They describe themselves as “a community of aspiring & experienced developers in Belfast passionate about Ruby and Rails”.  Their first event will be a meetup on making the Jump to Ruby, with the aim of getting complete beginners coding in Ruby by the end of the night.  The meeting is on Tuesday 31st January, at the Rumble Laboratory on Ormeau Avenue, Belfast.

It is great to see new community groups forming, and shows that local developers want to share their experiences and get involved in new(ish) technologies. 

The title?  Obviously, community groups are like buses – you wait forever, then two come along at once.

3 Jan 2012

Review of My Personal Goals for 2011– Part 2

This is the second in an impromptu series of posts reviewing my progress in meeting my 2011 resolutions.  In the first post, I covered my goal of getting fit.  In this post, I look at the second and third goals:

  1. Friends and Family
    • Spend some time each week staying in touch with friends and family.

There are so many things wrong with this goal that I really don’t know where to begin.  I met this goal; but then everyone who isn’t a hermit could have met this goal!

What went wrong?  It certainly isn’t a SMART goal, as it is not specific.  A better goal would have been to say that I would phone a friend or relative weekly. But the worst thing about it is that it such a blatant piece of  “motherhood and apple pie” that it is worthless to state as a goal.  Apologies!

What can I improve on? I need to consider if a goal is worthwhile pursuing – will it help improve me?  Will it improve the lives of those around me?  And is the goal a SMART goal?

Motherhood and apple pie...

  1. Personal Interests
    • Read 100 new books.
    • Watch 50 films.
    • Release an open-source project.
    • Write a new blog post weekly.

Again, I repeated the mistake I explained in the earlier post – too many sub-goals.

A quick check shows that I read at least 73 books last year.  I’m not sure how many of these books were in the original list of 100 books I created at the start of 2011 – I’m guessing under 20. A lot of my reading is spurred by investigating random topics (for example, Judo, WWII, bodyweight workouts, Linux, productivity and self help books).  The list is evenly split between fiction and non-fiction.  The fiction selection is a mixed bag even by my standards.  Some were classics (Never Let Me Go by Kazuo Ishiguro, A Dance With Dragons by George R.R. Martin).  Others were simply dire (A Discovery of Witches by Deborah Harkness – I threw it away from me after 20 pages).  You can view the full list on my Shelfari Profile.

I definitely didn’t watch 50 films during last year. At a guess, I watched around 25-30.  Which I’m very glad about.  Given the number of TV series that I follow, I certainly don’t have time to watch a film a week as well.

I haven’t released an open source project, which I’m very disappointed about.  Indeed, I managed to do very little coding in my personal time.  Likewise, I only wrote 7 blog posts last year, compared to 45 articles in the year before.  This is definitely something I’m looking to change with this year’s goals.

Couch Potato

What went wrong? Again, too many goals.  Also again, goals that weren’t relevant – what was the point in trying to watch a film a week?  The book list is very useful, but the original list has changed from a list of 100 books to read in a year, to a list of books that I will read at some point.  In fact, I plan on deleting the original list and migrating the list to Google Tasks.  Trying to read all these books and films was part of the reason why I didn’t spend enough time coding and blogging.  the various sub-goals were in fact contradictory.

What can I improve on? Again, I need to focus on what is the true goal I want to achieve.  The goals to read a certain number of books or watch a certain number of films were irrelevant; I needed to focus on spending time on my personal projects, on actually creating something.  It is pretty clear that I’m spending 90% of my time consuming, and only 10% of the time producing, when it should be the other way round.

2 Jan 2012

Review of My Personal Goals for 2011– Part 1

At the start of this year, I compiled a list of goals for 2011.  I thought it would be useful to look again at the 5 general aims that I set out then, to see if there were any lessons I could learn for the year ahead.

To recap, I had 5 main goals for 2011:

  1. Get fit!
    • Reduce weight to 68kg.
    • Eat no chocolate, and work to reduce the amount of sugar in my diet.
    • Exercise daily for at least 45 minutes.
    • Get at least 7 hours sleep every night.
    • Start a martial art by April.
  2. Friends and Family
    • Spend some time each week staying in touch with friends and family.
  3. Personal Interests
    • Read 100 new books.
    • Watch 50 films.
    • Release an open-source project.
    • Write a new blog post weekly.
  4. Career
    • Become Microsoft Certified in SharePoint 2010.
  5. Financial
    • To save 20% of my net salary (separate from pension contributions).

I had hoped to do this review in a single post – it turns out, I’ll need to do a series of post to cover everything.  In this post, I’ll look at the first goal – getting fit. 

Overall, I missed this goal by a mile – I’m definitely not fitter than I was at the start of 2011.  Considering each of the sub-goals in turn:

My current weight is 76.4kg, higher than the start of last year.  A check of my online bodyweight log shows the following graph for my weigh over the 2011:

Bodyweight Chart for 2011

Part of the initial weight loss in the graph above was due to changes in my diet; I didn’t eat any chocolate in the first half of the year.  Unfortunately, I simply displaced my chocolate craving with other sugary treats.  In the second half of the year, my diet started to decline, and I started eating chocolate occasionally, which led to the weight gain.  I experimented at various times with keeping a photo food diary, but found it difficult to keep this going.  In the future, I’m planning on maintaining a written food diary, and looking at the use of portion control.

For the goal of exercising daily, it was partial success.  A quick check of my diary shows that I exercised on 312 days, or approximately 85% of the time.  There were two main periods when I couldn’t exercise – two weeks in April, due to injury, and a further two weeks in November, when due to major  deadline for a work project I couldn’t exercise as planned.  A major improvement in my exercise plan was to start each day with some light circuit training and stretching.  This only take 25-30 minutes, and is a great way to wake yourself up.  It also means that if I miss a scheduled exercise session in the evening, I only need to add a brisk walk for 20-30 minutes to meet my daily exercise quota.  This is something I plan on keeping on in future.

I definitely didn’t get 7 hours sleep every night. I also noticed that a lack of sleep definitely hindered my diet, as I tend to binge late at night. 

I did start a martial art during the year.  In fact, I started two, attending both Judo and kickboxing during the year.  Unfortunately, in my first Judo session, I tore my pectoral muscle (an extremely painful injury – I initially thought I had cracked a rib), which led to two weeks unable to exercise completely, followed by  6 weeks of light exercise.  I started kickboxing in June, and stuck at for 4 months, at which point I ditched it – I found it very boring.  Strangely, I could see myself going back to Judo.

What went wrong?  The overall aim of getting fit was a worthwhile one.  But I attempted to do too much, with too many sub-goals; I should have focused on losing weight.  I was already exercising regularly, but I was still slowly gaining weight.  I didn’t focus on the reasons for the weight gain – my poor diet.  Until this happens, I’m not going to get fitter.  I also wasn’t flexible enough in my goals – I didn’t plan on injury or work commitments stopping me training.

What can I improve on?  Concentrate on the core issue – my diet in this case.  Everything else will fall into place when this is dealt with.  Also, I need to be more flexible in planning to meet the goal.

18 Oct 2011

Tech City Talks

For those interested in my previous post about teaching programming, the Guardian Tech Podcast team’s first talk in their Tech City Talks series is on skills and education.  The panel includes David Willetts MP (Minister of State for Universities and Science), Prof Jeff Magee (Principal of the Faculty of Engineering at Imperial College), Dan Crow (CTO, Songkick) and Emma Mulqueeny (Rewired State and Young Rewired State).

librarian and student

The podcast gives a great overview on the current (dire) state of how programming is  (not) taught in our schools, and what is being done, and still needs to be done, to rectify this.  I was particularly interested to hear of Emma’s experiences from Young Rewired State.  Unfortunately, there doesn’t seem to be anything comparable to this in Northern Ireland at the moment – though that may change…

29 Jul 2011

Raspberry Pi for Coding Kids

I came across a couple of great resources for teaching programming over the past week, and I thought I would share them with you.

Link to Teaching Kids Programming WebsiteThe first is Teaching Kids Programming (TKP).  I came across this after it was brought up by Llewellyn Falco in the latest Herding Code podcast (the discussion on TKP comes in the last 10 minutes of the podcast, but I would recommend any one who programmes listen to the entire podcast).   TKP provides courseware and guidelines for teaching children how to program on their website.  The various lesson plans introduce kids to programming concepts using the Small Basic, SQL programming, and visual programming using Kodu.  The various tasks in the lesson plans (known as recipes) are fun and engaging, and can range from teaching SQL using a dating database populated with movie stars to introducing object oriented programming via a program to generate pictures of flowers.

The second programming resource was the Raspberry Pi Foundation.  This is a new charity that is developing an ultra-low-cost computer, for use in teaching computer programming to children.  The charity’s initial aim is to distribute an ARM Linux box for $25.  Yes, $25!  The charity was setup by a number of developers who had initially cut their teeth coding on BBC Micro computers, and who despaired at the teaching of programming in UK schools.  It is certainly more affordable than the latest geek chic toy, Arduino.

I’m pretty excited about the future of programming.  Whilst there may be currently a lack of developers in Northern Ireland, and the current scheme to encourage children here to consider a career in IT is poor, resources like TKP and Raspberry Pi are great ways to encourage kids to develop an interest in programming as a career.  Coupled with the One Laptop Per Child initiative, I can see a whole new generation of programmers coming into being.  Unfortunately, I’m not sure if many children from Northern Ireland will be part of it.

4 Jan 2011

My Personal Goals for 2011

I have finally gotten around to compiling my year resolutions for 2011, and thought I would share them with you. The list consists of a number of general aims, with a number of specific and quantifiable goals associated with each.

Lose weight now

  1. Get fit!
    • Reduce weight to 68kg (I’m currently weighing in at 74.1 Kg).
    • Eat no chocolate, and work to reduce the amount of sugar in my diet.
    • Exercise daily for at least 45 minutes.
    • Get at least 7 hours sleep every night.
    • Start a martial art by April.
  2. Friends and Family
    • Spend some time each week staying in touch with friends and family.
  3. Personal Interests
    • Read 100 new books. Some people on Twitter were kind enough to suggest a number of books to read. I’m also getting inspiration from the BBC’s Big Read, and the list of Penguin Classics.  The list of books (currently incomplete) can be found here. Update: You can check out my reading list here, or in full on my Shelfari profile.
    • Watch 50 films.  Half of these are to be classic films, and the rest are to be new releases in 2011. The list of films (currently incomplete) can be found here. Update: This list is no more!
    • Release an open-source project.
    • Write a new blog post weekly.
  4. Career
    • Become Microsoft Certified in SharePoint 2010.
  5. Financial
    • To save 20% of my net salary (separate from pension contributions).
Success is this way by RambergMediaImages, on Flickr
I plan on tracking my goals using a number of tools.  Joe’s Goals is an online goal tracking application that I will be using to track a number of the specific goals detailed above.  I am using Tada List to record the books and films I plan to read and watch. I’ll also update you throughout the year on my progress, and I am aiming to have an end of year review to see exactly how strong my willpower has been.
If you have any thoughts on my resolutions, or want to suggest a book or film to me, please get in touch (or tweet @magicandi).  Thanks.

8 Dec 2010

Jobs Feed for NI Developers

Sorry for the break in blogging recently, I’ve been busy!! 

I have finally gotten around to publishing an RSS feed delivering details of all current job vacancies for developers in Northern Ireland.  This initial draft includes permanent job vacancies from the following sites:

In future, I hope to add the following sources:

  • Job feeds based on the careers pages of the major local IT and software companies, taken from here and other sources.

I also would like to add the following functionality:

  • Detect and remove duplicate entries.
  • Record details of the vacancies in a publically accessible database to allow people to generate custom reporting on key skills, the number and frequency of vacancies in particular companies, etc.
  • Add a temporary jobs feed.

The idea for this feed came from a personal RSS feed I have put together a few years ago.  This initial draft is using Yahoo Pipes to aggregate the various feeds together, and Feed43 for monitoring pages that do not have RSS feeds enabled.  In my personal feed, I use Page2RSS in my personal feed, but unfortunately it generates spurious RSS items if a site uses a revolving image background.

If you have any suggestions for the feed (companies to add, additional functionality), please let me know.  The Jobs feeds can be found here, or via the menu option above.  The list of job sites/companies I’m tracking via the feed can be seen here.

12 Apr 2010

First Day…

Today, I started my job with Parity in Belfast.  I’ll be working in the support team.  Despite being labelled a developer in the past, I’m more than happy with this.  Over the past 5 years, I’ve spent more time maintaining and extending existing applications than on green field development.  As part of my introduction to the team, I was given a brief overview of the projects I’ll be working on over the next few months, and I can tell you the following:

  • I’ll be busy.
  • The work will be a mixture of bug fixing, implementing change requests and new development work.
  • I’ve have a lot to learn, as I’ll be working on solutions with technologies completely new to me (K2 anyone?).
  • I’ll be really busy.
    My new colleagues at Parity have been very welcoming, and I’m already impressed with the culture. People are left to get on with things, and to take responsibility for their own work.  Also, there isn’t a tide of paperwork to fight through in order to get things done.  What a relief!
      Anyway, time for bed.  I’m knackered.

    31 Mar 2010

    Moving On…

    Yesterday was my last day working at Fujitsu Services.  After 3 years working with Fujitsu as a developer, it was time to move on.  Which is why I jumped when Parity Solutions offered me a position as a Senior Support Application Developer (henceforth known as ‘Saddo’).

    To the great friends and colleagues that I leave behind in Fujitsu, I hope things work out for you.  Given that Norn Iron is an extremely small place, we will probably end up working together again soon!

    For those of you about to leave your current job, check out this checklist from Scott Hanselman.  Those of you who are looking to leave your current job, Parity are currently recruiting for their new Centre of Excellence in Belfast.