Contractor Chronicles 4

This week I’ve spent working on a very tricky bug, not one that required a complex rewrite to solve, but instead one that was hard to find the cause of.
It was on a Angular app that uses a third party system to generate forms for the application. The issue was that where this third party system had been updated it required a change to one of the forms in the application.

It was tricky to solve due to the fact that it needed a lot of comparing files and lines and lines of JSON to find the issue. Thankfully another developer helped me see the issue and I had been looking at it for hours.

It does go to show that it is always a good idea to get a ‘second pair of eyes’ to look at an issue. There’s no shame in asking for help in the end it helps get the problem solved and the work can continue.

The current contract I have should be ending at the end of April, so I’m going to start looking for the next one soon. Changing contracts is always a interesting time, mainly it’s stressful looking for the next role, but it is also a time to think about maybe trying something different.

If I look around on the job boards and LinkedIn it looks like React is the main choice for building web apps. So when this contract is up it might be time to look at getting into React development.
Having said that, Angular is going through a bit of a change. It now has stand alone components, like React and Vue. It has a new system called Signal coming in the next version, which is a new way of adding Reactivity to your application. These two changes alone mean that Angular apps can soon be written using the same approach as React and Vue, but still have all that Angular provides a complete framework with many of the tools you need for an application (like built in testing, routing, an http client and the CLI).

So is it worth looking at React when Angular could be having a resurgence? I’m not sure. I think at the end this contract I’ll spend a few days building a React app to see what it’s like to work with.

Contractor Chronicles 3

This week was spent working on the maintenance of an existing Angular application, which has been recently updated to Angular 15.

The upgrade was fairly easy, Angular and the Angular CLI make upgrading between versions so easy. It was something I missed when working with Vue. I know that the Vue CLI does have a way of upgrading, but with the Angular CLI being a bit more mature I find the upgrade process far more straightforward.

I also spent a bit of time watching a live Twitch stream of Josh Goldberg (he’s a full-time open-source developer, who specialises in Typescript), in this stream he was reviewing a pull request to a Typescript project Typescript-ESLint, which is a library for adding linting for Typescript to ESLint.

Linting is a way of checking for bad practices in your code, it is a set of rules for JavaScript. This Typescript-ESLint project adds rules for Typescript to ESLint.

As I mentioned in earlier Contractor Chronicles I said I was looking for an open-source Typescript project to get involved in and I started to look more and more into this Typescript ESLint project and get involved in the project.

So this week I spent a bit more time looking at this project and after watching the Twitch Stream of Josh’s I’m starting to understand how the project works and hopefully soon I can start contributing to the project.

Finally, I spent some time going through a plan for the rest of the year, breaking down some goals I have for the years into projects. Then using the PARA method to organise these projects and goals.

typography historical blur bokeh
Contractor Chronicles 2

This week, carried on with existing client work. Fixing bugs on a complex Angular application that has been worked on by a number of others developers over the years. So it’s always interesting to take something written by someone else, work out how it works and then fix issues without making more bugs. This is a whole topic on its own, which I might write about

Also spent time looking into TypeScript libraries with the aim to work on some open-source development as a way to improve my TypeScript. I’ve been looking at TypeScript-ESlint, the linting library for TypeScript, a great project run by Josh Goldberg Its aim is to add support for ESLint to your TypeScript code. It will check your code for issues and bad practices and warn you of these issues.

Another thing that happen was there was a new budget in the UK, nothing really helpful for small business owners like myself just more ways of taxing people and trying to encourage people who have retired back to work (if I had retired and was playing golf every day I don’t think I’d be keen to go back to work).

The plan for next week is, to continue exploring open-source TypeScript development, working on client work and preparing for the next tax year.

Why Contracting?
I was asked the other day ‘why I was a contractor’. For me contracting is perfect in many ways. It gives me a good income, as the main earner of a family, this is really important. I also get to work with a variety of clients including football clubs, startups and councils.
I started contracting in 2012, so next year will be my 6th year. This is my longest job to date and I can’t see myself going back to permanent employment (unless Nrwl.io come calling).
Getting started as a contractor is relatively easy. All you need is a Limited Company (though you could be a Sole Trader, a Ltd company is better). An accountant or some type of online accounting software and a job.
Well, this sounds simple, but it’s not.
When I started getting my Limited company involved completing an online form, making a small payment and that was it.
One of the things I did need to consider was a company name. You need something that matches with the services you’re providing, with some flexibility in case you try something new. You don’t want to be called WideWeb Solutions if after a year or two you just make iOS apps.
I wanted something that covered me for web development, but I have always been interested in mobile development. So I went for something that had the word software (either web or mobile) plus the initials of my wife and children. That’s how I came up with CGCSoftware.
So I had my company name and limited company setup, next getting some work.
The reason that I started contracting, I was working for a startup in London as a Flash developer (good times). It was all going well then the company decided to move to America, and get a new development manager. So we had this new manager and half the team went to America, but still, the work was ok.
But soon the new development manager started letting people go, and get in new people that he wanted. Well, eventually it came to my time to go for a quick chat at lunchtime.
So that was the end of that, can’t say I was too bothered as I wasn’t getting on too well with the new members of staff. It did remind me that I don’t want to work for someone ever again. (If you work for yourself, it’s hard to fire yourself).
This is why I started contracting. I wanted to be in charge of my career, and have that flexibility of working on different projects with the technologies I wanted.
Job Hunting as a Contractor

I’m currently in the middle of job hunting for a new full-time contract, which is itself a full time job.

When you are between contracts you think ‘ah, I will spend the time doing things you meant to get done around the house’ but in fact you send all your time job hunting and these jobs around the house don’t get done.

The reasons that job hunting is like a full time job are, one you spend a good part of your day on the phone talking to agencies. Some of them want to discuss a role they have with you, to see if you are suitable. Some just want to see what you have done, what type of roles you are looking for incase something comes in and they know that you are able to do this role and they can put you forward for it. Sometimes they are just trying to find out who you use to work for or who you’ve been speaking to in order to see if they can also contact the client and see if they can get someone in there.

Generally agencies are ok to work with, you need them as much as they need you. So having a good relationship with the agencies is important in contracting.

After your CV has been sent to a client, they have reviewed it and you manage to get to the next stage. There are generally two types of next stage, either the ‘technical test’ or the ‘telephone’ interview. These two types of first stages in the interview processes are a lot more popular in the contracting industry now, than they were a few years ago. I think this is due to so many unqualified contractors getting through to a face to face interview. Whether this is due to them lieing on their CV (something I just done understand, if you haven’t got experience in something don’t lie about, either don’t appy for roles that require a certain skill or spend time building something open source to show you know it).

Anyway the technical test, this is usually when you are given a problem to solve and you need to write some code in order to provide a solution to the problem. Now agencies aways send you this test, and they usually say ‘it shouldn’t take longer than (insert small time period here)’. This is fine, but they are not developers and so they are probably not thinking about all the things that you are, how best to structure your code, how to show best practices, what approach will you take, are there issues like cross browser support you need to consider, is the problem to make something responsive? If so what screen sizes should you test against. If you have to access an API, what about checking for access to the API, what if no data comes back. There are a lot of things to consider when writing a solution to a technical test.

While doing this test you are probably still getting telephone calls from other agencies and you have to schedule the time to get the test done. This usually means, getting away from the family, finding some space on your own and focusing. While always remembering the famous last words of the agency ‘it should only take a few hours, can you get it done this evening’.

If you aren’t given a test, but instead get a telephone interview. This is so the client can ask you a few technical questions to make sure you know what you are talking about. And they can see/hear that you know something about a technology they use. Telephone interviews also have their problems. First of all if you have a bad connection (thanks Vodafone) it doesn’t sound to good if you keep going ‘can you repeat that please’. Second if you speak at the same time as the interviewer, you get this awkward pause where you both wait for the other to start talking again. So the flow of the conversation can get broken, but when there is a good flow to the conversation then the interview is (hopefully) going well. If you can clearly explain how a technology works or what work you have done and what problems you’ve solved then it shows you know what you are talking about.

With conversations with agencies, sending off applications to job sites, technical tests and telephone interviews job hunting is indeed a job in itself. You are basically becoming a salesman for your contracting services. So all you web developers out there who never wanted to be in sales, unfortunately you will be when job hunting.