There are lots of these adverts around at the moment. The web is big business, most people realise that now. That means that people who can program it are sought after, sometimes by individual companies and sometimes by contractors.

This naturally leads to companies trying to fill the training gap (and in the UK, this gap is VAST) and what better way than to offer online courses for not very much money?

Well, in my opinion: there are lots of problems.

Firstly, as many people comment on Facebook underneath these adverts, you cannot learn to be a good developer in a short time. Even after 15 years in the game, I still struggle to keep up, I never seem to know enough and I make mistakes. I would hope my overall quality is high but if I make mistakes after 15 years, what can someone do after 30 days of any quality?

Another largely avoided issue is that in almost all cases, the hardest part of development is requirements gathering. That is of course not very interesting to most developers who think coding is cool and, dare I say it, "sexy". The reality is, sadly, a mostly mundane experience of learning how to listen to people and what they really want, rather than what they say they want and then to convert this into software quickly enough before they change their mind. When they do, there are problems associated with Change Control, another area that is largely not talked about in software training.

But I think possibly the most difficult hurdle to overcome is the lack of personal contact. Software sounds like a pure technical role but it isn't in reality. A lot of development skills are to do with communication and personality. How do my team respond to being asked to carry out certain work? How do they understand what is being asked for by me or the customer? How do they interact with each other? In almost all situations, these issues can be the difference between a really valued employee and a person you want to fire. Team work is essential in an ongoing way but also a good attitude, a can-do approach to work, a personality that helps others etc. How do you learn these things in an online course? You mostly can't or don't.

I know a few people who have used Code Academy but it has the wrong approach. It shows a basic example and you fill in the code but don't have to prove any understanding of what is actually happening. Take those people from Code Academy and give them a proper project to work on and they can't do it, the training has given very little by way of breadth or depth - at best they are primers but they don't even really succeed with that either.

There was only one site I have seen that shows a more proactive and realistic approach to online training (although there are now a few more) and that is, a mentor-based approach that wasn't just a case of typing in some code to make something work but allows a mentor to ask questions about your motivation. Why did you choose that type of code instead of this type? Did you think about this when you wrote that? Where do you handle that error etc.?

The reason this works really well is it ticks the boxes that the other training courses don't. You get to interact with people, understand what they are asking for, justify your choices and have that personal interaction where you learn what people are like to work with. You also get real-world experience from mentors who can tell you that certain things do or don't happen in real life or how to cope with them.

Sure this type of training or mentorship is going to cost more than a basic online training course but why do developers think that it is wrong to pay for something of quality? You wouldn't expect to train to be a doctor for free (or anywhere close) so if you really want to do something, invest in it and the skills you gain will be invaluable. I would value someone who has used online mentorship much more highly than someone who went through a few Code Academy courses. It shows investment, willing and aptitude.

So don't learn to code in 30 days, learn to do it properly.