/* jquery */ /* jquery accordion style*/ /* jquery init */

Start Coding: Over To You

Software is vitally important to our modern lives. And, as you've seen, there are many different ways to start coding.

The key to success is to start with a few straightforward programming exercises. Every day you'll enhance your knowledge and skills.

Just like any journey they'll be ups and downs. It's those early successes That are the key to staying on track period debugging in particular can be a little taxing. So build your cold gradually, testing frequently as the program grows in size.

Enjoy your coding.

Online TuitionStart Coding SeriesIntroduction

Start Coding: Online Tuition

In recent years the range and quality of web-based training has improved enormously. In fact it's easy to become overawed by the sheer number of choices available for budding coders and computer science teachers.

One piece of advice is to stay clear of sites that employ novelty languages. While they might seem a little easier at first, all too soon you'll hit a dead end. Far better to select websites that base their content around well-known languages. In this way you'll benefit from a wider set of learning materials and have the support of an active coding community.

A website that acts a little like a coding portal is code.org. The collection of information and links have a quality feel and the scope encompasses both pupils and tutors.

If you have a younger audience in mind then take a look at The Hello World Program. Here puppets are used to used to convey key coding concepts in a memorable and interactive manner.

Code Academy is an often cited example for software tuition. It offers video-style tutorials for popular languages such as JavaScript, PHP, Python and Ruby, plus web-centric frameworks like jQuery. In addition there's a number of hands-on assignments, such as building a web project or using YouTube and Twitter application programming interfaces (APIs).

Khan Academy is another extremely popular educational website. Here the scope is much wider than just programming, with topics surrounding area such as Maths, Science, Economics and Humanities. Khan's computer science studies are centred around the Python scripting language. While the Discovery Lab element has a practical hands-on approach to learning, with a number of interesting robotic elements.

Does the sheer volume of online web tutorial material seems a little daunting? Then why not visit the World Wide Web Consortium (W3C) website's tutorial page. As the W3C is responsible for defining the HTML, CSS and XML standards you can rely on the validity of the information presented.

Fun BooksStart Coding SeriesOver To You

Start Coding: Fun Books

With so many books available, on such a wide variety of coding topics, it's impossible to provide a definitive list. So, let's pick out a few that have a strong emphasis on fun.

Books for younger coders are just as applicable for the young at heart. Python for Kids is geared around problem solving, and has a number of related coding puzzles on its website.

Super Scratch Programming is a recommended read by MIT, who created the highly-visual, jigsaw-like Scratch programming language.

If you're looking for something unconventional the Computational Fairy Tales book might fit the bill. First it takes the reader to a world with kingdoms, castles, dragons, goblins, magic spells and other fantasy concepts. Then it encourages the reader to develop a code war chest to overcome numerous challenges, with a view to introducing coding concepts and computer science topics.

Functional programming is an interesting yet challenging aspect of coding. For those wishing to find out more Conrad Barski's Land of Lisp book is an excellent place to start. The numerous practical exercises have an underlying gaming theme, while the informal style and well-paced content is brought to life by a collection of wacky-yet-informative cartoon-style illustrations.

Learning ResourcesStart Coding SeriesOnline Tuition

Start Coding: Learning Resources

A decade ago books and magazines were an essential resource for the budding coder. Today the learning experience has been enhanced by a wealth of online blogs, tutorials and purpose-made training sites.

Nevertheless, it's all too easy to find webpages that contain errors and misinformation. So, the printed word still has an important role to play.

Choose a book from a reputable publisher, such as O'Reilly , and you can be confident that the contents have been thoroughly checked by an editor plus numerous technology experts. And a good quality reference book will only extend and reinforce information gather from other sources.

With a book you can dip into a particular section in seconds, quickly scan the contents, glossary or index for a particular subject, or skip backwards and forwards between topics. Trying to do the same with a collection of web pages can be a frustrating experience - and it's even trickier with a video.

Magazine tutorials are important too. Typically written by seasoned professionals they're able to introduce a coding language in just a few pages, complete with verified code examples and recommended places for further reading and research.

Maker ProjectsStart Coding SeriesFun Books

Start Coding: Maker Projects

Maker projects are typically a blend of software development and hardware hacking. For some the desire to become a maker is a strong incentive to write coding.

Electronic circuit construction and interaction with external devices add a new dimension to coding. As a maker you'll acquire skills in circuit board design, soldering and prototype hardware construction techniques.

Home automation, remote control, and robotics are just a few of the possibilities. Websites like Adafruit's Learning Centre have a wide range of project ideas, kits and step-by-step tutorials.

As I mentioned in the previous post, the Raspberry Pi is an excellent maker-centric platform. But there are a number of other options.

While Arduino boards may not offer the same flexibility as the Pi, they are an excellent choice for hardware hacking projects. Arduino technology aims to simplify the construction of programmable interfaces to a wide range of digital and analogue components. The popularity is demonstrated by a highly active Arduino community, who've constructed an amazing diversity of devices and gadgets.

The LEGO® Mindstorms delivers a straightforward introduction to robot construction and programming. The latest EV3 kit comes complete with remote controller, motors, sensors, bricks and over 550 Lego Technic components. And the Mindstorms community is a great source of ideas and assistance, with regular maker challenges.

A sign of the worldwide interest in hardware hacking is the popularity of Maker Faire events. These gatherings simply buzz with innovation from an eclectic mix of participants spanning all age groups. One of the biggest is the New York Maker Faire, while the UK has its own Elephant & Castle Mini Maker Faire.

Raspberry Pi ProjectsStart Coding SeriesLearning Resources

Start Coding: Raspberry Pi Projects

The availability of a fully functioning Linux computer for under £30 has attracted enormous worldwide interest. The result is a profusion of guides, tutorials and helpful resources for anyone wishing to dip their toes into the coding waters.

While a Pi supports dozens of languages the Raspberry Pi Foundation chose Python as its default development language.

With over 2.5 million boards now in circulation there's a wealth of Python resources (including my own Learn Python on the Raspberry Pi tutorial). Even if you're not a Pi owner much of this material is applicable to PCs running Windows, Mac OS X or Linux.

Once you've acquired a few basic Python skills why not try your hand at the Pi version of Minecraft. After a quick and easy installation process you can begin building using just a few lines of Python code.

With it's built-in, multi-pin General Purpose Input Output (GPIO) connector the Raspberry Pi is ideally suited to maker projects. The Python and Scratch languages both have simple GPIO interfaces for experiments with LEDs, sensors, integrated circuits and much more.

Once your creation is complete you could demonstrate the fruits of your efforts at a local Raspberry Pi Jam event or hardware hacking convention. These are great places to meet like minded individuals and discover new ideas.

Scripting ProjectsStart Coding SeriesMaker Projects

Start Coding: Scripting Projects

If your focus is on building stand-alone applications then scripting languages are a good first choice.

One of most flexible is Python. It's a free-to-use language that runs on every popular operating system. A blend of power and simplicity, plus the clear, easy-to-grasp syntax, means it's an ideal choice for the first-time coder.

Python's large module collection offers a rich set of built-in functionality, including user-interfaces, graphics, games, websites, robotics, maths, scientific research and much more.

Many similar scripting languages are available, most of which also run on virtually any computing platform. Ruby, PHP, Perl and Lua are particularly popular.

BASIC is the classic introductory coding language. Windows PC owners can give Microsoft's Small BASIC a try. The associated website includes numerous graphical and game-themed projects, with full source code listings.

Mobile App ProjectsStart Coding SeriesRaspberry Pi Projects

Start Coding: Mobile App Projects

Mobile app development is a particularly enticing area. Uploaded to a suitable app store your creation can be seen and downloaded by millions of users.

Novel app ideas, when combined with some focussed coding effort, can result in monetary return. In fact some app developers earn enough to fund a comfortable lifestyle.

Nevertheless, creating high quality apps isn't a trivial exercise. So don't expect to create an engaging, interactive game with quality graphics, multiple levels and so on in a couple of days.

Apple iOS

Apple iPhone, iPad and iPod development might seem an obvious choice. After all, the large Apple community regularly checks the Apple App Store for new apps. However, there are a few points to consider.

Firstly, you'll need an Apple Mac PC to install the Xcode development environment plus the iOS SDK. Secondly, native iOS apps are coded in the Objective-C language. And thirdly, you'll need to register with the iOS Developer Program to upload apps to the App Store, something that costs $99 per year.

Google Android

Google's Android development environment is just as comprehensive. But there are a couple of key differences.

Firstly, it uses the cross-platform Java language, which means you're free to use a Windows, Mac OSX or Linux PC for the development. And secondly, the Google Play app store registration has a single upfront cost of just $25.

Windows Mobile and Firefox Mobile OS

If you're already familiar with Microsoft technology you might want to consider creating Windows Mobile smartphone apps. The registration cost can be a low as $19. And as the Windows Mobile app store is much smaller the Apple App Store or Google Play there's far more chance of your app being noticed.

It's too early to say if the new Firefox Mobile OS will make a dent in the smartphone marketplace. However, there are a couple of interesting factors. One is this OS should be available on entry level smartphones. Another is that Firefox Mobile apps are developed using standard web languages, namely HTML, CSS and Javascript.

Mobile App Frameworks

A dedicated, platform-specific development environment isn't the only way to start mobile app coding. There's also a number of powerful third-party frameworks.

For example, the Appcelerator and PhoneGap solutions offer a complete set of app development tools and resources. Importantly you can code using the standard HTML, CSS and JavaScript languages. After testing the underlying framework builds a native app for the specified platform (iOS, Android, Windows Mobile, Blackberry, Symbian or WebOS).

The big difference is that don't have to learn a different language or new set of tools for each platform. The only slight snag it that you'll still need to use an Apple Mac PC to create iOS apps.

Server-Side Web ProjectsStart Coding SeriesScripting Projects

Start Coding: Server-Side Web Project

The vast majority of websites are built using a mix of client-side and server-side technology.

In fact, some of the most popular website (Google and Twitter for example) present a distinctly minimal user interface. Here all the clever stuff going on at the server end.

Arguably it's a little harder to get started in server development. But it doesn't take too long. And it's the only choice for data-driven scenarios, such as product comparison information and e-commerce catalogues.

First you'll need a web server. Apache is a popular choice and offers everything required for a content-rich, high-performing web service.

But there's quite a few free, open source web servers around. Most come pre-configured with at least one server-side development language (invariably PHP), and a working SQL database (typically MySQL).

PHP is a powerful and flexible scripting language, with a rich library of web-friendly functionality and built-in database support. Yet it's also easy to learn. PHP source code can be embedded inside an HTML file or stored in separate '.php' files.

Another approach is to use a template-centric PHP framework. This allows the developer to focus on high level design and page content. A popular example is the open source Drupal product.

Databases are the key to efficient information management. An SQL database stores data in tables, each table designed for a specific purpose. SQL's english-like statements are easy to learn - for example CREATE, INSERT, UPDATE and SELECT.

Client-Side Web ProjectsStart Coding SeriesServer-Side Web Projects

Start Coding: Client-Side Web Projects

An ideal way to start coding is with scripts that run in a web browser. Web languages are easy to learn. And any text editor can be used to create basic pages.

A key strength of HTML coding is its simplicity and immediacy. You can learn a handful of the most commonly used HTML tags in an hour or two. After saving your script as an '.html' file simply open it in a browser to examine your handiwork. Repeat this edit and review process as you experiment with different HTML tags.

As your confidence and experience grows you'll be able to incorporate small fragments of complementary web technologies, such as CSS page-styling and small pieces of JavaScript.

There's masses of web development information and tutorials in magazines, books and online. A great way to learn is by studying the work of others. All browsers have a view source code menu option. This allows a sneaky look at the code behind any Internet-hosted web page.

And don't think it's just about building personal websites or blogs. With HTML5, CSS3 and the powerful JavaScript language you can create all kinds of web apps, including stunning graphics and highly-playable 2D or 3D games.

Mozilla, the company behind the Firefox browser, have an excellent introduction to web coding at its WebMaker site. WebMaker's tools include Thimble (a page builder), Popcorn Maker (a video and audio editor) and X-Ray Goggles (which displays the hidden HTML code behind the page elements as the mouse cursor hovers over them).

Choosing Your ProjectStart Coding SeriesServer-Side Web Projects

Start Coding: Choosing Your Project

When it comes to choosing an appropriate coding project it's your motivation to code that has the greatest influence. It's the project which dictates the programming languages and coding skills you'll need.

Take a website development for instance. It's relatively easy to define the languages and tools up front, which will certainly include HTML, CSS and JavaScript. However, you'll also need to draft out the website design and page layouts - which is all part of the fun.

For mobile app development it's the target platform (iOS, Android, etc) and development framework (Appcelerator, PhoneGap, etc) which will dictate your learning path. Of course, you'll also need a good app idea.

A rather different approach is required for open source or community projects. Here you'll have to look around to find a project that interests you. Then scan the associated task list to identify the items you wish to work on.

Regardless of your final choice it's important to have patience and realistic expectations. Thinking you'll be able to construct a complete website in a few hours, or build an app in a couple of days, will only lead to disappointment.

Make It Fun

Regardless of your motivation or project coding should always be fun. One approach is to consider the development process as a sort of game. Here's a few ideas:

Split tasks into levels. Ensure the initial levels are easy wins and leave all the ambitious stuff to the end.

Keep score. Keep a note of your coding progress. It's always encouraging to look back on past achievements when the going gets a little tough, such as during a tricky debugging session.

Reward yourself. Identify a reward for each level, say a foody treat or a special drink at your local cafe. And maybe a software/hardware purchase at the end of a successful project.

MotivationStart Coding SeriesClient-Side Web Projects

Start Coding: Motivation

Personal motivation is a key factor in deciding how to get started. So, it's a good idea to spend a little time thinking about this question.

Maybe it's so you can say, "I did that." Even a tiny piece of code can engender a deep sense of achievement.

Start with just a couple of lines, then slowly add more code. Just as the wise philosopher knows every journey begins with a single step, the wise coder knows every program starts with a single code statement.

Let's explore a few more reasons to code.

A Web Presence

Maybe you want a presence on the web. Creating a simple web page doesn't take too long. And, as your knowledge increases, you'll be able to build a web site that showcases your individuality, imagination and design flair.

It's also a low-cost entry into programming. Everything you'll need to create a rich website is freely available. Some organisations offer simple web hosting services for free, while others can cost as little as a few pounds per month.

Community Involvement

Maybe you've been inspired to become involved in a community project. There's thousands of open source projects to choose from. Some aim to bring brand new technology or apps to the market place. While others have a scientific or environmental focus, offering the opportunity to take part in in worthwhile, or even world-changing, challenges.

Open source projects provide full access to the source code. It's a great opportunity to learn coding techniques from other developers. There's usually a list of tasks that require attention. These tasks can involve fixing bugs, making small refinements to existing code or adding new functionality.

Though need to gain a little coding experience before uploading your own contributions.

Becoming a Software Professional

Maybe your goal is to become a software professional. Unsurprisingly this will take some time, not to mention dedication and focus. But the rewards are considerable.

The world is full of software opportunities, and every year tens of thousands of new ones become available. And coding positions tend to offer salaries well above the national average.

The ever changing technology landscape means it's possible to be an expert in a burgeoning field relatively quickly. Nevertheless, the professional software developer invariably has many years of coding experience.

Today, most software projects involve more than one language. For example website construction typically involves HTML, CSS, JavaScript, PHP and SQL. So, a primary goal should be to learn a few complimentary software languages.

Why Code?Start Coding SeriesChoosing Your Project

Start Coding: Why Code?

There are many reasons to attain at least a basic level of coding expertise.

For a start it will help you appreciate what makes your computing devices tick.

Take mobiles devices for example. Did you know the Android smartphone and tablet operating system has around 12 million lines of code? Printed out the stack of paper would be as high as a typical family house. And every single one of those characters has been typed by human hand.

Today most road vehicles rely on tens of millions of lines of code for engine management, safety devices and entertainment systems. With the next generation this figure could rise to over 100 million.

Another reason is to take back a level of control in this digital age. Without any coding skills you're just a consumer. One who's only choices are restricted to off-the-shelf products, from companies who've already decided what you want.

Digital counterculture figure Douglas Ruskoff explores this theme in his Program Or Be Programmed book and talks. While technologist and musician Jaron Lanier expresses a similar point of view in his books You Are Not A Gadget and Who Owns The Future.

For yet more reasons take a look at this well produced video on the 'why code' question.

IntroductionStart Coding SeriesMotivation

Start Coding: Introduction

Software is the invisible ingredient that powers our technological lives.

Without the magic of software a smartphone, tablet, PC, game console or any other digital gadget is just an expensive collection of electronic components; unable to perform even the simplest function.

But how do you get started in software development?

My series will guide you on a journey to coding success.

Why Code?
Motivation
Choosing Your Project
Client-Side Web Projects
Server-Side Web Project
Mobile App Projects
Scripting Projects
Raspberry Pi Projects
Maker Projects
Learning Resources
Fun Books
Online Tuition
Over To You