Keeping your skill set up to date

As part of life as a contractor one of the most important things it managing to keep your skillset up to date. This was fine when all you had to worry about was just HTML, CSS and maybe jQuery, but now with the explosion of JavaScript frameworks keeping your skill set up to speed is getting harder and harder.

When you look at a job description you usually see a whole list of ‘technologies’ that are required for the role. Angular, Node, React, Sass, CSS, UX/UI skills and maybe ‘if you also know PHP, that’ll be an advantage’. But keeping up to date with all these different technologies is nearly impossible. Two of these are entire platforms and not just frameworks.

So how is a lonely developer supposed to know all these frameworks, platforms and technologies inside and out, as well as work fulltime?

Well one way, and what a lot of freelancers are doing now, is niching down to a certain skill set or role. For example, is being known for creating offline first apps using Angular or creating Progressive Web Apps using Node or front-end development using HTML and Sass. These are all examples of how a freelancer/contractor can narrow down what they do in order to really understand well the technology they use.

Of course, the first thing that goes through peoples mind when thinking of narrowing down their skill set, what we use as contractors to get work, is the fear of missing out on work. If I don’t have the skill set for a certain job, then I can’t go for so many roles, I’ll miss out on work. But if you do a quick search on Google for ‘niching down + freelance’ one of the first articles you’ll find is ‘Overcoming the Fear of “Choosing a Niche”‘ by Brennan Dunn.

In the article he shows why having a niche or being a specialist is actually a good thing for your business/career:

When you go from being a generalist — that is, a provider of some commodity service, like web design — to being a specialist, who solves a specific type of problem for a specific kind of client, three things almost always happen:

  1. You’re able to charge more.
  2. Your clients give you more creative latitude and freedom, and a lot more respect.
  3. It’s easier to close deals.

In the rest of the article, Brennan goes through all the different issues with niching down, about the fear people have of doing this, the fear of picking the wrong niche to work in, dealing with the boredom that might come with only working with one technology.

If you want to read about how other people have found their niche and what it has done for them, this article Top 16 Freelancers Tell You How They Found Their Niche gives some interesting insight.

There are also some great books on this:

 

So in order to keep your skill set up to speed in today’s ever-changing web industry, instead of trying to be a master of everything and ending up a master of none, it might be work just narrowing your focus a little. Finding out what you enjoy working with, what projects you have enjoyed working on and becoming a specialist in those types of projects, using that type of technology in order to really learn and know that skill set.

It something I’m going to focus on doing over the next few weeks months.

 

Working for Free
As a mobile app developer, I’ve seen many examples where developers get asked about making an app for someone either for free or for equity.
Usually this is an ‘entrepreneur’ with a killer social media app idea, the next Facebook or Twitter and if the mobile app developer doesn’t want to work on this app for free, they are going to regret it when they make it big.
Unfortunately what these entrepreneurs don’t seem to realise is that mobile app development is the business that the app developer is in. If they wanted to be in the social media space then they would be developing their own app instead of someone else.
The app developer has also probably had several emails already about the next big social media app that they should be apart of before it goes massive. For the app the developer these type of apps ideas come and go. Usually never to be heard of again.
Equity and the promise of greatness don’t pay the mortgage.
But is there ever a good argument for building an app for free…..
Well I think there is. You see some apps are not just social media or todo apps. They are apps that are trying to solve a real problem, using mobile technology and all the great benefits it brings to help.
So here’s the list of reasons why I would working on an app for free:
  1. I have the time between full time projects. If I have some time between two projects and then I might decide to provide some help for free
  2. If I feel the app would be helpful to someone, it solves a real problem
  3. If the work isn’t a 3 month build. That’s too long to work for free
  4. If there is a chance in the future that the app will do well
The reasons why I wouldn’t help make an app for free:
  1. It’s the next Facebook
  2. It’s going to be huge according to the entrepreneur
  3. It’s the next Twitter
  4. It’s more than a couple of weeks work

Now a lot of app developers may think that by not helping out on this next great thing that if the app does become big, you’ll be gutted to have missed out. But honestly how many apps are still making it big. Long gone are the days when you made millions from a single app.

 

Loving Webstorm again

I’ve recently gone back to using Webstorm for my Angular development. I know that Visual Code is very popular at the moment, just look at any conference talks everyone is using VSCode.

So why have I gone back to Webstorm, well I have used is before and really liked it, but the immediacy of VSCode was really impressive, so I had to give it a go. But the other day I watched a great video by Victor Savkin, who was a developer on the Angular framework and now has his own consultancy Nrwl. In this video he shows how he uses Webstorm.

In the video Victor shows how he customizes the look of Webstorm using the Material UI theme, which can be installed via the Plugins section in Webstorm. I decided to give this a go to see what it looks like, and it looks good.

 

One reason I really like Webstorm is the number of features it comes with by default. While other IDEs have loads of plugins, which WS does have. It comes with so many built in features for example:

  • Support for a wide number of frameworks including Angular, React, Ember and even Vue
  • The Navigation and search features are fantastic. Watch the part of Victor’s talk where he shows how he uses bookmarks to navigate around the actual Angular framework
  • It had built in debugging support so you can step into your code within Webstorm
  • The code quality tools it has like ESLinting, TSLinting and JSCS all built in
  • The plugins you can install to enhance WS even more

The main drawback of Webstorm is that it is a paid application, unlike VSCode which is free. But I don’t see it as a drawback, because with a paid application you know they are going to be around for a while and are committed to the application you rely on so much. Also being funded means that JetBrains, the people behind Webstorm, have their own in house dev team who work on new features for WB.

So while there are other IDEs out there some of them free, but I love using Webstorm again. Here are some links to the articles about Victor’s talk on using Webstorm for Angular

  • Make Webstorm Better with these customisations
  • Using Webstorm for Building Angular Apps
Using Desk 3

I’ve recently upgraded to the new version of Desk, which is a great desktop app for blogging. Before I was using the previous version, but I decided that it’s time to upgrade.

In version 2 you could setup links to WordPress, Blogger (if you still use this) and Medium. Now in version 3 it’s just for WordPress. I suppose this is because WordPress is the leader in blogs so there is a big market for Desk to just focus on WordPress.

The developer of Desk, John Saddington, has also created an app just for writting to Medium, called MNML, which looks a nice app, but as someone who doesn’t write on just Medium I thought I’d just stick with Desk.

Desk has some nice features, it has full-screen mode, so you can just concentrate on writing and not be distracted by other app, like Twitter or Slack. It also allows you export your posts to either HTML, PDF, Word or Markdown. The Markdown option is useful as then I can take that MD file and add it to Medium if I want to cross post to Medium.

The UI of Desk is really clean and simple, when in the full-screen mode all you have is the editor, without any other windows. In version 3 you now has two side panels that show the list of blog posts you’ve written and all the tags you’ve created as you write. You can now create groups, so if you want to group a series of posts together, maybe you had a series of posts on a theme or you want to group by month then the groups tab is ideal.

I do feel that when upgrading from version 2 to 3 I’ve lost something by not being able to now post to other blogging engines like Medium and Blogger, but if you are a hardcore writter using WordPress then Desk 3 is a great app for you.

Are Mobile Apps Doomed


Photo by Adrien on Unsplash

I recently read an article called ‘Mobile Apps Are Doomed, I Repeat All Mobile Apps Are Doomed’ a very provocative title. In the article the author Rajat Saxena, who is an Android developer, says that if you are planning on releasing your own apps to the app stores then he has news for you, you’ll hardly any downloads. The reason for this is that no one downloads apps anymore. According to him there are only a few apps people use now, Facebook, Snapchat, Twitter and Instagram.

It’s a very interesting article to read, to get a developer who has a few apps in the stores, perspective on how hard it is to make a living or money from the App Store.

Does this mean as mobile app developers we should stop building apps? As the title says, mobile apps are doomed!!!!

Well the author goes on to say he doesn’t think so, instead we should be apps that have more value to the user. Apps that use AI in order to give the user an app that works for them, has great value to that user. And it’s this user engagement that will make you, as an app developer, successful.

I also think there is another reason why app developers shouldn’t give up just because apps don’t sell so well in the App Stores. More and more businesses are developing apps internally for their own business needs. As mobile is now everywhere, businesses are building apps for their staff in order to help them carry out their jobs. I myself have built a number of internal apps.

So if you are either a hybrid or native mobile developer I don’t think it’s a bad time to be an app developer. It’s just that the dream of making it big through the app store is no longer so easy or so common.

Why write


There has been a big discussion in the Inline slack group about the 30 day writing challenge. The main theme of the discussion was about how some people are finding it hard to write something every day. It was a good discussion because finding the time to sit down and write something does take commitment and planning.

It did make me think about the reason why people write, why do some people manage to write a blog post without fail, day in day out.

There are a number of reasons why people write regularly on there blog, one to build up a following in order to promote their business. The other is because some people just love writing, they love the creative process that writing provides.

If you are writing for the simple reason that you love writing and love the creative process, then worring about how many people are reading your posts doesn’t matter. Even the quality of your posts shouldn’t matter. Just getting something out there is the more important thing.

The cool thing I find out about the 30 Day Writing Challenge is that taking part has forced me to get into habit of writing. I don’t care about writing top quality blog posts, but instead I care about practicing writing a daily blog post.

30DWC Week 1

First week of the 30 Day Writing Challenge is up, so far doing ok, I managed to get a post out everyday. I haven’t set any plans to write for at least 30 minutes every day, the main goal I had was to get a post out which so far I have.

For this years challenge I decided instead of just writing whatever came to mind, I’ve tried to have a couple of theme subjects to write about. They are learning NodeJS and updates on an ExpressJS app I’m working on, but now into the 2nd week I think these may change.

The reason for the change is one, the project I’m working on at work may switch to using Angular 2.x from Angular 1.x, so I will have to spend a bit of time outside work brushing up on Angular 2.x. This means my plan to focus on Node for the next few weeks will have to wait. Unfortunately this is the way contracting can be at times, you need to have the skillset for the project. As we could be mirgrating to Angular 2.x I’ll need to know about migrating an Angular 1.x app than I will ExpressJS.

The other topic I have been enjoying writing about is productivity and Todoist. I’m a big fan of Todoist and I’m always looking on ways to use it in order to improve how I work and how to use Todoist to work towards the goals I have, both business and personal.

One think I have found this year is that by having themes for your blog it makes it easier to come up with ideas of what to write for a post. I’ve also written a list of blog post titles for the 30 days of the challenge, this has helped when it comes to writing a post. I look at the list of titles pick anyone I think I can write about and get going.

Anyway week 1 is done and I’m enjoying writing for the blog again.



Using Todoist to manage software development

I’m a big fan of Todoist as I’ve already mentioned but one area it does fall down on for me is how to manage software development projects within Todoist.

Normally a software project is managed in a team with tools like Jira or Trello with their column approach. These are both great products (some people aren’t the biggest fan of Jira, but I think it’s ok). It is going to interesting to see what affect Atlassian has on Trello now that they own it, will they move Trello into Jira?

So while I’ve found Todoist a fantastic tool for my day to day tasks, I’ve always struggled with it when it came to managing any personal software projects I had. The column approach that Trello and Jira give really help set out what tasks you’ll need to do, what ones are in progress and which ones are complete.

The answer to this I think is the use of filters and labels, both of these features in Todoist can really help you set up a project with views of how the project is going.

Thinking about it when working on a software project there are a few things you need to see:

  • What tasks/features need to be implemented
  • What features are being developed now
  • What needs to be tested/review
  • What is waiting on someone else
  • What is complete

You can set this up by first creating a Project, then add Labels for the various states of the project and finally create filters to give you the different views you want of the project.

So for example I may want to create a project for building a new mobile app

Then I’ll create some new Labels for each ‘column’.

 

I’ve given them all the same colour to make it easier to see them connected. I’ve also created one for the Project name (My_Mobile_App) this is so I can add that label to each task as well as the state of that task. Finally you can create some custom filters to give you an over view of the project. Filters like

  • @My_Mobile_App & @Feature
  • @My_Mobile_App & @Feature & In_Progress
  • @My_Mobile_App & @Feature & For_Review
  • @My_Mobile_App & @Feature & Signed_Off

With the labels and filters in place you can setup a great overview of the project. Another great feature of Todoist is you can invite others to that project. This can either be others working on the project or the client themselves who can get a view of how the project is going.

 

Todoist and tackling big projects

I’ve been a Todoist user now for over a year, I’m a fully paid up Premium user and I can honestly say I use it everyday. I put everything in there, things I need to do (obviously) links to sites I want to read, list of things I want to buy and places I want to visit. That’s the beauty of Todoist is that it is so flexible, and easy to use.

For the last few months I’ve been trying to implement a GTD approach when using Todoist. The video series by Carl Pullein has really helped me in the way I structured Todoist for GTD.

The setup I have is really quiet simple. I have the inbox where everything goes into, using the quick add feature of Todoist helps with this.

You just open the panel using CMD+Shift+A and enter your task in the panel, it then goes straight into your inbox.

Then I filter any tasks into their appropriate project. I have my projects divided into:

  • Personal
  • CGCSoftware
  • Professional (usually client related tasks/sub-projects)
  • Checklists (things I need to run through and check e.g. things to buy, books to read)
  • Someday|Maybe (an archieve for projects I may get to)

There are two main problems with my GTD implementation is that I’m terrible at doing my weekly review and the daily review isn’t much better. I keep forgetting to do them or when I do remember it’s usually in the evening when I can’t bother.

This means that the tasks in Todoist aren’t always working toward a gran plan. They are usually things that I need to do quickly, but not tasks that need to be completed on the way to achieving some great plan that I have.

This has led me to thinking of implementing a more Zen to Done approach as described by Leo Babauta. This approach means that as well as recording all the things that you think you need to do, you also set 3 most important tasks of the day and defined some ‘big rocks’ for the week. These rocks are the big tasks that you need to get done during the week.

Now ideally all these big rocks and most important tasks should be aligned with your overall aim of what you are trying to achieve. Things like releasing new website, or developing that new app or even getting weight down.

Carl Pullein has written a great article on the topic of getting your goals aligned in order to achieve great success:

Another great article Carl has written is about how to plan these goals, using the ‘what, why and how’ technique. The idea is for each of your goals you set out what is the aim of this goal, why do you want to achieve this goal and how do you plan to achieve the goal. For example if you goal is to build a freelance mobile app develop business (see what I’ve done here). Then you write out what your goal is:

I want to freelance as a mobile app developer using the skills I currently have as a web developer to build cross platform apps for my clients.

Then you set out why you want to achieve this goal, what is the motivation behind this.

I want to be a freelance mobile web developer so I can work on projects that I enjoy building (mobile apps) using the technology stack I enjoy using. In order to have a business that can support the lifestyle I want to achieve, which is freedom to work where I want and how I want. To have more control over my career.

The final part is the most important. The ‘how’ section is where you list the steps you’ll take to achieving this goal, for example:

  1. Build example apps to show skill
  2. Blog about mobile app development
  3. Use social media to reach likeminded people and clients
  4. Attend meetups to make contacts within the business

Now these steps can then go into Todoist as tasks. Each one being a big rock that you work towards each day. Each rock can be broken down into more manageable tasks where at least one of them is one of your most important tasks for the day.

Carl’s post on this goes into more detail about how to set this up, it’s well worth reading.

With the flexibility of Todoist this approach can be achieved, but the weekly and daily reviews need to be carried out, which is up to the individual. No app can help you do this.

 

 

Small update on Contacts Manger app

Progress on my Node app has slowed a bit, maybe it was a bit nuts to think I could blog everyday, build a complete Node app and work full time.
So far I’ve just got the basic shell of the app, nothing more than the app.js starting file. Not much more further on from my last update.

I’m going to change my plan slightly instead of building a complete app through the 30 days of the writing challenge. I’m going to study Node for the 30 days, write about what I learn. Then when near the end of the 30 days I’ll be in a better place to get building my app.

The first thing I need to do is go through all the EggHead IO videos there are on Express. I’ve watched them before while on the commute home, but I have sat down at home, watched them and made notes. This will really help with me understanding routes.

I think I understand the concept of them and how Express uses them, but the syntax for writing them alway alludes me. Re-watching the videos, making notes and practicing writing the routing of my app will help.