Stay on target, stay on target

The other day I was watching the Developer Insights videos on the Apple Developer website. The video that I really enjoyed was the one with Brian Mueller who developers the Carrot suite of apps.

While watching those videos I did start to think ‘ah native development looks fun, building apps for iOS, Mac and Apple Watch. Maybe I should start learning Swift’. So then I started downloading the free books on Swift from iBooks and following Swift accounts on Twitter.

Then another thought popped into my head (my second thought of the day, it was a good day). Do I really need to start learning something new? Don’t I want to specialise in Ionic development? And this reminded me that I should keep reminding myself of my main aim and sometimes remind myself to ‘stay on target’ working towards my main goal of becoming an independent Ionic developer.

Of course I will take on jobs/contracts that may not involve working day to day with Ionic, but as long as the technology I’m using is related then I can’t see this being a problem, if for example I working with Angular 1 or 2 for a few weeks then that still helps. Learning a totally new platform e.g. Swift is not going to help me working towards my main goal.

So I need to set a regular reminder in my calendar to review where I’m at and what I’m doing to work to this goal.

Building a app part-time needs planning

Recently I’ve tried several times to start working on a side project, building an app. I’ve had several ideas, an app for tracking your Warfarin intake (after getting blood clots I found out how important regular Warfarin is), an app for managing you post (letters not email) and an app for tracking visits to the gym and what you do while there.

All ok ideas, I won’t know until I have a early version out whether other people like them, but I think they are ok and I’d use them.

So far I’ve got no where with them. Yes I’ve started them several times, I’ve create many Ionic template apps ready to start building the app, but this is as far as they get.

I’ve also been working with another developer on a app they want to build. It’s a great idea and will be a fantastic app once built, but what I’ve found is as I can only spend a few hours a day on the app. If the planning of how the app will work is not in place then development will slow to a virtual standstill. I’ve found this with both my apps and this other third party app.

If before development starts things like data structure, screen flows, how the app will handle offline support, how the app will inform the user what’s happening as they use the app. If these things are not planned or at least considered. Then during development the developer is building an app partially blind. Decisions that the need to be made will be decided by the developer as they go. For a side project this maybe ok, but it will slow down progress on the app. You’ll find that you will be rewriting functionality in the app over and over as you change your mind. This will slow progress.

Though you think as you are coding you are making progress, if you are rewriting the same part over and over the app is not progressing. When you see the apps isn’t getting any closer to being ready to launch, your initial enthusiasm for building the app will disappear.

So for my personal side project apps I need to go back to the drawing board (well notepad really) and plan these following aspects of the app:

  • Screen flow
  • Data structure
  • Offline support
  • User messages
  • Features for first version – in order to get the app out there to see if people will use it
  • How the app will be promoted
  • Who’s the target audience
  • Pricing structure – will I charge for it? If so how will that effect the structure of the app

A lot to think about. Some of these can be fleshed out as the app is being built, but having a good idea/plan before starting development will help.

Side projects or part-time freelance work

I’ve been thinking about part-time freelance projects vs side project, and the pros and cons for each.

If you have a full-time job or contract you’ll only have a few ‘spare’ (if that’s actually a thing) hours. So is it better to get a freelance project or spend the time working on your own projects.

If you have a freelance project you are getting paid, which is a plus. It also may building a project using a new technology that you want to get into, for example building a native iOS app or a WordPress theme, which is a great way to get into a new arena. But you are building a project for a client who has their own deadlines and plans for the project. So there is extra pressure to get work done. Those days when you get back from a long day at work, and you know you have to star your second job. You’ll have emails from clients asking how projects are going or asking for amends to the project.

With side projects you do get the freedom to use a new technology you want to get into. You are the client, so you guide the project any amends are your ideas, you decide how the project will go. Once your side project is live you can show others and use it as a way to show your skills in a new technology. The main drawback for side projects is when building them you are not being paid, you may find that progress on the project slowly gets slower and slower until the project comes to a halt. While with a paying project you’ll keep working on the project so you can get paid once it is complete.

Looking into this I’ve found some interesting articles, including this one on the Todoist blog about keeping your side project moving forward. In this article it lists some amazing projects that started as side projects including Gmail, Github and Buffer all very successful projects.

So where do I stand on this? Well I’m currently leaning to the side projects. Because I’d prefer to work with a technology that I want to get further into. I’m sometime a bit lazy so those days I get back from work I may not want to work on a project. It’s a tricky one…..


Continuing my GTD Exploration

Yesterday I wrote about how I was struggling with using GTD and actually getting something done. Like a lot of developers I have tons of projects I want to get done. Personal projects, client work, day to day coding tasks, tasks that you have to complete when running a limited company and all the jobs you need to do at home (family, house, finances etc). So there is a lot.

GTD is aimed at helping you obtain ‘stress free living’ a nice idea, but when you first go through the collection phase of GTD, where you sit down and write out all the things you need to do it looks really overwhelming, this can put you off starting anything.

As part of my getting better at GTD I’ve been watching the Todoist videos by Carl Pullein where he shows how to use the features of Todoist with GTD. His latest video is on dealing with projects that are overwhelming, projects that have a large number of tasks. Through using uncompletable tasks, he sets up stages within a project that tasks for that project can be added. So you can split up your project into more manageable stages. This is a great idea and really helpful.

I’ve also been reading about others who use GTD with Todoist. One article I found was by a JavaScript developer Justin Hill. Who in his article Organising a Life of Learning and Action makes a good point, that people express the desire to be ‘productive’ like we are machine’s just sitting in a factory producing stuff. This is a good point. With the world of start-ups, entrepreneurs, app developers and people who seem to make new products every week. We can easily get caught up in the idea that if we aren’t productive or building something, we’re not moving forward with our lives.

I think the we, as people who work with the internet (developers, designer, freelancers, entrepreneurs) can get caught up in having the best system for managing all the tasks, ideas and content we get exposed to everyday when on the web. For example I think we’ve all used every known task app there is. We all have several social media accounts just sending tons of content our way. All this on top of general day to day living can be very overwhelming.

So I think worrying that the system I have in place for managing the tasks I need to do is just adding to the problem or having so many things to do. GTD’s main aim is to provide you a way of taking all that is floating around in your head and getting it written down. Then you can sort through it when you have time and using the technique shown by Carl creating projects that aren’t overwhelming seems a possibility.

Getting Sh*t Done

For the last few months I’ve been trying to get on with GTD, I’ve read the book, watched videos on it, read hundreds of blog posts about it, but I still can’t seem to get into it to using it everyday.

Like a lot of freelancers/contractors I have tons of ideas like, creating apps, learning new technologies as well as all the day to day tasks you have like getting the car cleaned, finding a gardener etc. 

I also want a way to create tasks for each thing I need to do as I’m coding. I like the idea of braking down a piece of functionality I have to add to an app into small tasks. So I want a lot from a task management system.

I’m currently using Todoist as my task management app and it’s great and very flexible. But getting things done does not seem to be happening. So I’m currently going through a reevaluation of how I use GTD and Todoist. I’m going to create a project that will contain the 3 goals I have for the upcoming week. Also I’m going to create time slots in my calendar for when I’m going to work on something. 

I do think that having due dates is a waste of time because if you miss one then every time you look at your task app it like its nagging you about something you might not have the time to get done that day. 

So to recap I want a way of 

  • Keeping track of things I need to do that day
  • Get moving on projects I have for both myself and clients
  • Write tasks I need to do as writing code
  • Remember the things I need to do around the house
  • Odd jobs that need to be done, calls to make, emails to read 
  • Working towards main goals

I do expect that the problem is not so much GTD but how I’m using it. I think more research and trial and error is needed.

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.

Software I use

  Recently as part of the 30wdc Darren Beale wrote about his essential software I thought as part of my post for today I’d list the software I use everyday.

  • Webstorm – I use to be a sublime text fan, but recently ST has stopped progressing, version 3 seems to have been in beta for years. So I have switched to Webstorm and in my opinion I think it is the best JavaScript editor there is. It has support for Ionic, Angular 1 and 2, TypeScript, ES6 and Node. The support and innovation that the Jetbrains team put behind Webstorm is fantastic.
  • Todoist, I’ve used other task apps like Wunderlist, Any.do and Trello, but for me Todoist is my favourite todo app. I’m currently trying to use GTD and Todoist can really support GTD. I have been watching a lot of Carl Pullein’s YouTube channel all about using Todoist for GTD (his channel is well worth checking out)
  • Evernote, this is where all my notes, ideas and business ideas go. Being able to record everything in your brain into one app that you can access from anywhere is great. I’m a big Evernote fan.
  • DeskPM, is the tool I use to write my blog posts. It’s been created by indie dev John Saddington. It links to multiple blogs, WordPress, Blogger and Medium. Has a full screen mode so you can just concentrate on writing, it’s a great app.

So these are the main apps I’m using right now. 

Why I like using web technologies for mobile

I was walking my dog this morning, thinking why do dogs like sniffing where other dogs have peed (pretty gross) and if I was asked why I like using mobile technologies for building mobile apps, what would my answer be.

Well there are a couple of answers to that question. First I think that if you are running a web agency and one of your major clients comes to you and says ‘we love the website you created for us, can you also build us a mobile app that uses a feature of the site, and we want it in the next 6 weeks’. This a great example of when a hybrid or mobile technology built app (NativeScript or AppCelerator) is a great solution. Because it allows the web agency to use their in house skills straight away on the project. They don’t have to hire either an iOS or Android developer, they can get the web developers they have starting on the project.

Another time a hybrid app is a good solution is when someone has an idea for an app, but don’t have the skills required for building the app. They do know that they want to hit both iOS and Android (and now Windows with the latest beta of Ionic 2). Getting a developer who can build a hybrid app will allow the app entrepreneur to get a version of their app out there to customers to see how well the app does and if their idea takes off.

I do think that hybrid is not the answer to everything. Apps that need to be high performing, or need to closely integrate with OS native is the way to go. Also if your company is large enough to have it’s own in house native developers then it make sense to use what skills you already have.

On the flip side of this argument is this article by Keith Elliot – Your Hybrid App is Going to Kill You (a bit harsh title, but still an interesting read).

Free Work, does it pay

Recently I was contacted about a small project, which is fine. It’s nice when someone reaches out to you about a project. The project is a small mobile app (using Ionic) with probably a tight deadline. This is all I know so far, but from the tone of the message I received it does sound like it would be a ‘do this for nothing so we can see if we will send more work your way’ type of thing.

These type of projects do seem to come up more and more for mobile apps, just ask Jason Keen he’s a AppCelerator developer who I follow on Twitter, who has discussed this issue many times.

Now I like the sound of this app, it would be another example to add to a portfolio, something it the app store. I also have time while looking for a new full time contract to do the app, but is free work ever a good thing? (This ending a sentance with a ? reminds me of when my wife watched Sex in the City, terrible program)

So what to do when something like this comes up. It’s a bit of a gamble, especially if you are starting out. You like to have some work coming in and if a new project could lead to more regular work (though there is no guarantee of this).

Well there are still plenty of more questions than answers so it’s worth seeing where this goes.

What do others think? Is free work ever worth it? (Dam!! I have to stop finishing sentances with question marks)

Freelancing Websites

Over my last few posts I have been talking about contracting and why I personally like contracting. There are two main ways of finding work as a contractor either through recruitment agencies or via freelance websites.

There are many of these freelancing websites, Upwork, Freelancer (UK), PeoplePerHour and Toptal. Sometimes I have shied away from these sites and they are usually swamped with developers offering very cheap services that I cannot possible compete on, full websites for £100 or a complete mobile app for £250. Now I’m not to sure about the quality of the work that these offer would receive, but I can see how a client with a small budget can be tempted with offers like these.

For me to use one of these sites at the rate I’m looking for I need a site that both has a high number of users and has a high level of entry. So the clients who look for freelancers on this site know that the quality of developer they are looking at is at a high standard, and they are willing to pay for this high standard.

One site I have looked into that fulfils these two requirements I have is the Toptal Web Developers group who, on their website, say ‘hire from the top 3% of freelance web developers’. The main reason I like Toptal is that there signup process is very thorough, you have to complete a signup form, give examples of work and even write a blog post about them, which is actually a good idea. Because sitting and writing out your thoughts on why you want to signup to Toptal makes you really think through the process and what you are looking for from a freelancing website.

I’ve seen a fellow Ionic developer Julien Renaux who is on Toptal, I contacted him via Twitter to see if Toptal was a good service, he said that it is and he has had no problems with it.

So if you are looking to become a contractor/freelancer and want to find work from places other than recruiters (who are still a valid and useful resource) then one of these Freelancing websites maybe an option.

Here are some links to podcasts where people have spoken about how they have succeeded using one of these freelance marketplace websites: