Being Ready To Move As a Contractor

As a contractor you have to be ready to start looking for that next role, because you maybe in a role that has a 6 month contract, but it could end before the official end of the contract.

There could be many reasons why a contract can end early, projects get canceled, a new manager may start who is not keen on paying contractor rates, the role may change due to unforeseen circumstances or you aren't just technically up to the role.

Now you can't do much about some of these reasons, you can make sure your skills are up to the task, but this is another post all together.

So if you find that for some reason your 6 month contract ends 4 months earlier here's what you need to have ready to get looking again.

  • A current up to date CV, while GitHub accounts and blogging are becoming more important in showing what you can do. In the UK the CV that you can send out in a email is still the first point of contact for a new role. So your CV needs to have your current role, the skills you have gained in this role are there and most importantly what you've done within this role.
  • A update LinkedIn profile. Now I'm not a massive fan of LinkedIn, but agencies use it and for contracts you need to be able to let agencies know that you are available. LinkedIn is the quickest way to do this. You do need to manage who you accept invitations from as you'll get bombarded with request from agencies who just want to know who to call in the places you have worked at.
  • Examples of work. This is getting more and more important now. I'm sure one day CV's won't be the first point of call for applying for a job and your GitHub or website will be the place where agencies and companies find you, but still the CV is a starting point. Code examples are usually asked for. People want to see examples of the code you write, having a GitHub account with a project you are working on is a great way to show the code you can produce especially if the last few contracts you've been on have all been corporate jobs where you can't send links of the projects you've worked.
One of the other things you can and should do when starting a new contract that you believe is long term, is to start to think 'what do I want to do after this ends'. If you are in a contract that is a long term role and you start to get 'comfortable' in the role, it starts to feel like a permanent role. It helps to remind yourself that as a contractor you can have more control over your career and start planning for your next move. So if the contract you're on unfortunately ends early, you are ready with a plan with what you are going to look for next, maybe there is new technology you want to get into or a type of company you want to work for having a plan and being ready to move to that next contract is extremely important.


2014 Look back and plans for 2015

Like a lot of people I thought I'd write a small look back over the last year and set out some plans I have for 2015.


2014 was a strange year for me, on the contracting side things wen't well. I was in solid employment for the entire year with no breaks between roles. I managed to get my first AngularJS contract, as we know getting that first commercial experience in something is so important.

After that contract ended I was lucky enough to get into a role where there is a great deal of variety, a lot of front-end development, a lot of responsive web design and mobile development. The team I work with are small but very proactive. They manage to get great work out there in a small amount of time and it's a great experience to be part of a team that is so active, and does manage to ship great work so quickly.

New Skills

New skills I've picked up in 2014 include:

  1. AngularJS
  2. Sass, I've been using LESS for a while, but now I'm really beginning to like Sass, set up is still a pain at times though.
  3. Ionic, managed to build a demo app with Ionic at current contract. The team I'm working with seemed to like Ionic.
  4. ExpressJS, not using this commercially yet, but learning it with a view to offering it as one of the skills I have.

The business side of contracting is something that not really discussed much, there are many sites, blogs and podcasts on startups or freelancing, but being a contractor is not really discussed much. I think this is because everyone wants to freelance instead of contract. 
For me I do see a difference between freelancing and contracting. A freelancer is responsible for finding the work for there own business while a contractor finds work through dealing with agencies and not directly with clients (though this can change if a client decides to go back directly to the contractor in order to employ them again). 
So currently I see myself as a contractor eventually I hope to be both contracting and freelancing, but more on that in a min.
In 2014 my limited company business has not grown as I'd would have liked, there are a couple of reasons for this, all my own fault, they are:
  1. No planning of how the year will go.
  2. Not having a clear understanding of the tax payments involved in running a limited company. A couple of times I had to pay myself late after paying a tax bill that I hadn't planned for.
  3. Not having a good plan in place for tax, know when bills are coming up, making sure enough money would be in place to pay both these bills and wages.
The main problem I have is I started contracting with a very bad accountant, who told me nothing of what to expect in my first year. I now have a far better accountant who is very helpful (quick tip, if you are contracting and your accountant is not as helpful as you like, look around for a new one). 
I also started contracting after leaving my last permanent role without finding out what is involved in running a limited company. I finished my permanent role, then looked around for a new role, decided contracting was what I wanted to do. Then looked hard for a contract without looking into what is involved in contracting besides the dealing with agencies. There is all the tax payments, financial planning, cash flow and wages that you need to know about or at least have a basic understanding.
Looking back I think I didn't have a good enough understanding of these things. I thought I just needed a good CV, something on Github to show my work and off I'd go into the wonderful world of contracting. There's more to it than that.     


On the health side of things have not been great, ended up in hospital for two weeks with a serious kidney infection. Then sitting around for two+ weeks lead to me getting a blood clot in my leg. So I now have to deal with that, which has not been fun. 
I was lucky enough that the contract I'm on did allow me to work from home for a couple of weeks while getting better. Then I took two weeks off over Christmas and now I'm back working onsite in London. 


So 2015 the year of growth, this is a list of plans I have for this upcoming year:
  1. Rebuild company website, my current CGCSoftware website needs a new look and I plan to rebuild the site using ExpressJS.
  2. Build apps with Ionic, I've been a fan of this framework for the last six months. I was planning to build a app as part of the 30 day challenge, but due to ill health I didn't manage to get one done. So apps are big part of the year.
  3. Grow the business so that it is a better place financially. 
  4. Learn more JavaScript, start using NodeJS and ExpressJS. As well as Ionic I'm really interested in what's happening in the Node space so I want to get into Node and using it a lot more.
  5. Go to more conferences and meetups. I haven't been to many and now I think I should go to more in order to learn and meet others in the community.


Using Phonegap Developer Tool with Ionic

While working on my app for the 30 day challenge, I was looking at the Phonegap site about how to build the final app and I saw the Phonegap Developer App.

This app is in two parts, there's the CLI and an app you install on your phone that allows you to run the app you're building on your phone. Kind of like a live reload, but on your phone, how cool is that.

The problem was I'm building an Ionic app that is served through the Ionic CLI, so how do I get my app to run on my phone through the Phonegap developer tool.

Looking into it I found this great article on Devgirl Holly Schinsky's blog, in which she says that you need to run the Ionic app through the Phonegap CLI then when you run it you are given an IP address. Then you open the Phonegap Developer app on your phone and this gives you another IP address, double click on the IP address and change this to match the IP address that the Phonegap CLI has given you and boom your app appears running on your phone.

Then if you go back to your IDE and make any changes they appear automatically on the phone, which is awesome.


30 Day App Challenge

Recently on the Ionic forum Bjorn Holdt announced that he was going to make an app  and get it released to the app store in 30 days. He then encouraged others to join him and see if they could make an app and get it released in 30 days.

After reading this I thought that it would be a great challenge and get me moving on an idea I have had for an for awhile.

The idea I have is related to my other passion in life (besides working with Ionic) which is Brazilian Ju Jitsu. I'm planning on building an app that allows people training in Brazilian Ju Jitsu (BJJ for short) to take notes and record small videos of techniques they are learning in lessons. Then later they can go through the notes/videos they've created and remind themselves how to do a certain technique.

The current status of my app is I've created the first few screens in Ionic and started planning the flow through the app for a user.

Like Bjorn has I plan to write some more posts on the progress of the app, but this is the start for the 30 day challenge.


Email clients for Android and hopes for Google Inbox

Over the years I've tried a number of email clients on my Android phones. I've used MailBox, CloudMagic and the default Gmail client. Now Google is about to release a new Gmail client which looks really interesting. I've just sent off my request for an invite to use Inbox, hopefully I'll get one.

One thing I do use a lot in Gmail is labels, I have a number of them for the different type of emails that I get, ones for newsletters, ones from agencies and friends. For each label I have a filter that automatically puts any email that comes in with its label, sometimes completely skipping the Inbox.

When I was using MailBox (which from time to time I go back to) the main problem I did have with it was that it didn't support the label/filter system that I already had in place. I do like the MailBox feature that allows you to mange your emails, e.g. snooze your emails, read at the weekend etc. All great features, but I would like to be able to manage an incoming email, then forward to one of the labels I already have set up in case I need to find it later.

Hopefully Google Inbox still supports the labels I've got set up, if not then maybe I should change how I manage my email then Google Inbox or MailBox will be ideal.


Ionic app coming along

Lately I've been working on my first Ionic based app, I've found that working those 20 minutes I have on the train into London,really helps in getting that consistency that is needed to get a side project going.

The app I'm working on is for martial artists to record short videos of techniques they are shown in class. Then later they can go back review the video of a technique and remind themselves of how it should go before they go to their class. A lot of martial artists I know watch a lot of technique videos on YouTube and spend a lot of time searching for videos that show the current technique they are learning, even if it is being demonstrated by someone other than their instructor. So my idea is to allow them to create their own personal video library that the can refer back to.

The app has two main views, the first is where they can add a title and the date of the video entry they are going to make and the second view is of all the saved videos they've made ordered by date.

The first problem I had when starting development was how to manage the navigation between screens. I was use to the way jQuerymobile handles this by creating complete pages all with a header that is repeated in each separate page. Ionic doesn't do this, and I needed a way to have multiple pages and be able to navigate back and forth between views.

I found some great examples on Codepen.io one of them showed how to use views within Ionic and manage the navigation between view using the ion-view directive.

So my application is made up of a series of templates, each containing a ion-view component that loads into the ion-view component within my main index page. The ion-nav-view component keeps track of the current view and can navigate back to the previous view when the user clicks on the back arrow.

One of the things I love about Ionic is how it uses smooth CSS3 animations for the transitions between views, all that are available by default. Transitions don't need to be set up as they do in jQuerymobile.


Using Brackets

I've been using the latest version of Brackets this evening. It's really improved since I last used it. The themes are great and switching between them has improved. 

I also install a plugin for Ionic, this is great. It allows you to create a project through the plugin, you point to where you want the project to be created, what type of starter project you want and off it goes and sets up the project for you. I've also found a good tabs plugin that creates tabs in the top of each page (it also uses the icon for the file type e.g. HTML5 icon or the JS icon). Brackets is really becoming a powerful editor for HTML, and it is also a great example of what you can build now with web technologies. 

I'll carry on using Brackets for a while, see how it goes, but the current version looks good.