Support from readers like you keeps The Journal open.
You are visiting us because we have something you value. Independent, unbiased news that tells the truth. Advertising revenue goes some way to support our mission, but this year it has not been enough.
If you've seen value in our reporting, please contribute what you can, so we can continue to produce accurate and meaningful journalism. For everyone who needs it.
ON THE EIGHTH of December last year Barack Obama wore a Code.org hat and wrote a line of Javascript. The hat didn’t particularly suit him and the code he wrote wasn’t particularly meaningful, but I suspect the symbolism of POTUS being taught to write code by kids wasn’t lost on many.
From minors to ministers, the explosion of programming initiatives in Ireland has caught the attention of the nation; those evangelising the art point to the benefits of understanding how software is made, whether or not you build it for a living.
There’s a lot of discussion about the best way to learn to write code. One theory is that it should be geared towards highly visual and graphical feedback as early as possible; another is that a friendly language makes more sense. The former would lead you towards learning some HTML and CSS or possibly Javascript to create something visual, the latter would introduce you to a friendly language that best introduces the core concepts of programming. Both approaches have their merits so I’ve picked two resources below that take one approach each, both are free and extremely accessible for beginners.
What’s the right approach?
There are so many online resources geared toward teaching programming that the problem no longer lies in finding them but in filtering down to the most appropriate ones.
Khan Academy is an excellent online tool that allows you to work your way through courses with constant feedback and help. The videos are excellent and you can go from beginner to a reasonably advanced coder using the tutorials. The most appropriate course here is the ‘Computer Programming’ one, as ‘Computer Science’ is a more theory based approach to algorithms which isn’t the best introduction to programming generally.
One of the great features of Khan academy is that you can do the ‘Hour of Code’ or ‘Hour of Databases’ which give a quick, one hour introduction to a topic. The interaction is hugely impressive as you can just work in your web browser without downloading or installing any other software. The programming here is all done in Javascript, which is an extremely popular and powerful language that controls most interactions you have with a web page. Khan academy is completely free, though they do appreciate donations; I used Khan Academy extensively during my masters and it was a huge asset.
Advertisement
If you want to push yourself…
Another of my favourite resources is Coursera. Coursera has a much bigger catalogue of courses than Khan Academy and they’re from actual universities. They tend to last a number of weeks and have set amount of work to do per week. This is a higher commitment option but that does push you to put in more time to get a higher reward.
Coursera have beginner Python courses specific to both adults and children. Python is a well-established, multi-purpose language that used in many areas from web development to data analysis and scientific computing. Coursera tend to offer good follow on courses that allow you to progress as far as you wish. Coursera is completely free, though you can pay for a certificate of accomplishment for the courses. I’ve completed a few software development courses on Coursera and they were all extremely well organised and more educational than I expected.
There are other great resources too such as Lynda.com, but I’ve found that you need to pay to get the most out of it which can turn people off.
The best advice: just start
Given the extreme accessibility of Khan Academy it’s probably a good place to start, but for a 2-4 hour per week commitment I think the Coursera course probably offers more motivation. You also have the added advantage with Coursera of thousands of other students doing the course at the same time, and some forums that allow you to discuss the class content and exercises.
Overall the best advice, as with most things, is just to start. While there’s no ‘right’ language or technology to get you started there’s no ‘wrong’ one either. Once you begin doing tutorials you’ll be learning the basics of variables, conditions, loops, and functions which are essential no matter what language you choose.
Of course I’ve aimed these suggestions at everyone, but if you or someone you know is under 17 they should seriously consider going to a Coder Dojo, they exist in almost every town in Ireland and are volunteer led get-togethers for children to learn how to code. You can find the nearest one to you on their website, CoderDojo.com.
Mark Lambe is a Dublin-based software developer who works in scientific and high-performance computing. He tweets about this and much more as @AnTweetseach.
Readers like you are keeping these stories free for everyone...
A mix of advertising and supporting contributions helps keep paywalls away from valuable information like this article.
Over 5,000 readers like you have already stepped up and support us with a monthly payment or a once-off donation.
The coding world moves so fast, it’s hard to know what too learn next. But just learn something the core concepts on clean code and structure are much the same across most languages.
Rubbish Stephen. Different programming languages have different syntax and semantics. There are language families which are similar in syntax such as (C++, Objective-C, Java, Perl, C#, JavaScript which are all from the C family of languages) and then you have the BASIC Family, Smalltalk family and a host of others. Some languages borrow concepts from languages in different families and nest under more than one family tree.
If you are good in say PHP you are most certainly not, by default, good in Ruby or Python. If you are a stellar COBOL programmer you would certainly not be able to code a single line of a more modern language without learning it first.
To become competent in programming takes dedication and hard work. I have seen many programmers who have been programming years and are still not what I would classify as competent based on some of the code they churn out. Only the very gifted can become masterful at a given language in a short period of time.
Yea I know about languages and I know they’ve all different syntax, I’ve done most of the ones you mentioned and that’s why I said the core concepts are the same. A function is a function and a class is a class in most languages. An import is an import and to extend is to extend. Patterns in ruby are the same as JavaScript and php. Obviously the way it’s written is different and how it’s fun but the concept is the same. If you understand good programming in any language I believe you can move between languages very easily. I’ve been a ruby, rails, js, php, c, objective c, Python dev and more in my time and that all came from learning actionscript years ago.
Id recommend learning a simple language like Haskell first and then moving on to more diverse languages like Python, Java or C++. Some lads in my college ran an intro to Haskell course and the structure and methodology of it is a good way to get used to programming as you write the code almost in the same way that you ‘think’ of the code. Java (from my own experience) can be a bit daunting if you can’t get your head around the pretty rigid structure of methods and classes etc. I’m using Khan Academy at the minute to learn HTML and CSS as well and couldn’t recommend it more (even though the peppy, overly positive American narrating the video is starting to grate on my cynical Irish sensibilities)
I would recommend learning Java, C++ or C#. In college I found Haskell more daunting than the afformentioned. Also if you learn one of these languages you have pretty much learned 70% of any of the others.
+1 for Arduino though, personally I use mBed, if I want to knock something quickly up for work I always have an Arduino or mBed in my drawer in work.
If you want to get into the likes of Arduino/mBed I would seriously consider getting familiar with the C language, it’s a great language to know and it’s used in anything embedded related.
I guess these are the only options given that potential programmers are abandoned by the second level education system in this country.
I learned Borland’s Pascal, Prolog and a 4GL called MicroSQL in highschool back in 1992-3.
Since then I’ve covered these languages in order DBQ, DBase IV, MS Access (with strong VBA), VB6, TSQL, VB .Net, ASP .Net, JavaScript, C#, Java, Matlab, Octave, R.
People recommending languages here are making assumptions about what you want to do. Different languages have very different purposes. Also, if you just focus too much on a specific language you will find yourself spending an inordinate amount of time learning things that suddenly become completely redundant.
The only skill I learned in 1992 that is of any use to me today is SQL. It is important to ensure you develop the ability to quickly switch between languages and quickly learn new languages. That requires a fundamental understanding of programming itself and not getting too comfortable with a particular syntax.
Am currently mentoring in a CoderDojo, teaching kids 6 and up. Once you learn fundamentals of if/else, loops, and functions, all you need is practice. Look at other peoples code. If you see something you like on a website, your browser has all the inbuilt development tools to help you figure out how they did it.
Ties you to Apple only really unfortunately, if you were going down the HTML5 app route, look at Ionic and Cordova, or something like PhoneGap (also built on Cordova).
There’s a freely available Swift compiler called Silver, which you can install on both Mac and Windows PC. Probably not what Apple wanted, but now Swiftians can avoid the tie in if they prefer.
Excellent article, perhaps a bit daunting for a complete novice though.
A more basic hands on approach to coding can be found through the Raspberry Pi foundation.
A great starting point for parents and kids.
So, everyone is advocating their own personal favourite code flavour as the one to learn first. This is starting in the wrong place.
Code is a tool. Nothing more than that. It’s something that enables you to get things done. So, the logical place to begin is with something you want to do. Once you’ve established that, then, and only then, find out what the right tool is and learn how to use it by doing the thing you want to do. Sure, you’ll need to learn some basic principles, but after that just start making something.
Now, it’ll probably be poor enough, this thing you make. And three years later you’ll look at the code you wrote and either laugh or cry (don’t be concerned about this, it happens everyone who codes anything, all the time, forever). But you’ll start learning, fast, and you’ll build not just on what works but what fails.
I’ve been relearning to to code the past two years. I did C in college but hated it. However, I discovered something the past two years that has reignited my love of it.
You can take the Harvard computer science course, for free. The course is called CS50 and you can do it on edex.org. I would encourage ANYONE who wants to learn how to code to do it. An absolutely INSANE amount of effort goes into its production. It’s very… American, but that’s part of its charm. The quality of the course makes you see why Harvard can charge so much in fees. I’ve done about 50 different programming courses in my day and this is by far the best. The content was exactly the same as the first year computer science course in DIT just presented in a much better way.
I’d also recommend some of the basic courses on Lynda.com by a lecturer called Simon Allerdice. He’s Irish I believe (just from his accent) and he has a way to make things very VERY clear.
If I was to do it all again, I’d do the CS50 course, the Lynda courses by Simon Allerdice and learn python.
Python and Javascript were the languages that taught me object oriented programming. I tried learning Java first (after C) and it was a nightmare. Not because of the language, but because I didn’t understand OOP properly. Programmers often forget how difficult OOP is as a concept to understand because once you get it, it’s difficult to imagine programming another way. Especially in a shared library world.
A lot of information on the internet can be useful. But it can also be very hit and miss. I love learning from videos and online resources. However for programming books are essential if you want to take it a step further.
Lightbot is brill for kids … graphical and introduces “Procedures” … reusable code concept.
Scratch is also good for kids. Some schools now using it.
Unity for games … and its free
Codecademy for Ruby : http://www.codecademy.com/learn … clear and concise
Ruby on Rails for real world serious apps. http://rubyonrails.org/
Some research suggests that it is teaching of Philosophy in secondary schools that makes the French the best software engineers in the world! Also nice side effect of No Financial Crashes … Philosophy provides a framework for good rational thinking, very useful in personal and work lives!!!!
Actually only one in five are aware of coding initiatives, like coder dojo. Three quarters of parents are keen to get johnny and Jane into coding. According to amarach research for upc and coder dojo. Some schools reachbscratch. Which us a visual programming language to teach basic things Luke loops and functions so they can move more easily to more complex languages. With npm and node.js JavaScript, the once clunky beast is getting more use. Its great for RAD in the way Rails is. While HTML and CSS arent really coding they offer a soft entry to that world. And are complex enough in themselves now in html5 and css3,
Well, the IT skills shortage has already blown up in our faces. That’s why, despite the unemployment problem, we have to import a large proportion of our workforce. Think of that next time the Gov. announce they’ve created x number of jobs after bringing yet another tech company onto our shores.
It would help if they actually employed very experienced coders. Unfortunately the young age of “managers” these days means they are intimidated by the very experienced and ignore the value these people can offer their company. It is the young and cheap that get the jobs. It doesn’t dawn on the hiring managers that if they pay for experience, the get better quality and get it faster.
Someone do a survey of how many people over 50 who are unable to get work, despite having 30+ years experience as a programmer.
It’s not that difficult and can be done within a year. I’m self taught in C++, java and python. I’m still being paid for what I helped build over 6 years ago. The world has always been divided by those who can manipulate their environment and those who can’t and this is the future. You should look into your local Coder Dojo if you have kids, it’s FREE or consider a Fab Lab.
Not 'Your Party': Corbyn launches new party - but no-one's quite sure what it's called
Updated
10 mins ago
1.9k
12
VAT9
Govt urged to 'bite the bullet' amid signals a promised hospitality VAT cut may not happen
Updated
54 mins ago
4.4k
32
recall notice
One person dead after ‘extensive’ outbreak of listeriosis linked to ready-made meals
Updated
17 hrs ago
128k
19
Your Cookies. Your Choice.
Cookies help provide our news service while also enabling the advertising needed to fund this work.
We categorise cookies as Necessary, Performance (used to analyse the site performance) and Targeting (used to target advertising which helps us keep this service free).
We and our 210 partners store and access personal data, like browsing data or unique identifiers, on your device. Selecting Accept All enables tracking technologies to support the purposes shown under we and our partners process data to provide. If trackers are disabled, some content and ads you see may not be as relevant to you. You can resurface this menu to change your choices or withdraw consent at any time by clicking the Cookie Preferences link on the bottom of the webpage . Your choices will have effect within our Website. For more details, refer to our Privacy Policy.
We and our vendors process data for the following purposes:
Use precise geolocation data. Actively scan device characteristics for identification. Store and/or access information on a device. Personalised advertising and content, advertising and content measurement, audience research and services development.
Cookies Preference Centre
We process your data to deliver content or advertisements and measure the delivery of such content or advertisements to extract insights about our website. We share this information with our partners on the basis of consent. You may exercise your right to consent, based on a specific purpose below or at a partner level in the link under each purpose. Some vendors may process your data based on their legitimate interests, which does not require your consent. You cannot object to tracking technologies placed to ensure security, prevent fraud, fix errors, or deliver and present advertising and content, and precise geolocation data and active scanning of device characteristics for identification may be used to support this purpose. This exception does not apply to targeted advertising. These choices will be signaled to our vendors participating in the Transparency and Consent Framework. The choices you make regarding the purposes and vendors listed in this notice are saved and stored locally on your device for a maximum duration of 1 year.
Manage Consent Preferences
Necessary Cookies
Always Active
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work.
Social Media Cookies
These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools.
Targeting Cookies
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
Functional Cookies
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then these services may not function properly.
Performance Cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not be able to monitor our performance.
Store and/or access information on a device 148 partners can use this purpose
Cookies, device or similar online identifiers (e.g. login-based identifiers, randomly assigned identifiers, network based identifiers) together with other information (e.g. browser type and information, language, screen size, supported technologies etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here.
Personalised advertising and content, advertising and content measurement, audience research and services development 191 partners can use this purpose
Use limited data to select advertising 154 partners can use this purpose
Advertising presented to you on this service can be based on limited data, such as the website or app you are using, your non-precise location, your device type or which content you are (or have been) interacting with (for example, to limit the number of times an ad is presented to you).
Create profiles for personalised advertising 117 partners can use this purpose
Information about your activity on this service (such as forms you submit, content you look at) can be stored and combined with other information about you (for example, information from your previous activity on this service and other websites or apps) or similar users. This is then used to build or improve a profile about you (that might include possible interests and personal aspects). Your profile can be used (also later) to present advertising that appears more relevant based on your possible interests by this and other entities.
Use profiles to select personalised advertising 117 partners can use this purpose
Advertising presented to you on this service can be based on your advertising profiles, which can reflect your activity on this service or other websites or apps (like the forms you submit, content you look at), possible interests and personal aspects.
Create profiles to personalise content 50 partners can use this purpose
Information about your activity on this service (for instance, forms you submit, non-advertising content you look at) can be stored and combined with other information about you (such as your previous activity on this service or other websites or apps) or similar users. This is then used to build or improve a profile about you (which might for example include possible interests and personal aspects). Your profile can be used (also later) to present content that appears more relevant based on your possible interests, such as by adapting the order in which content is shown to you, so that it is even easier for you to find content that matches your interests.
Use profiles to select personalised content 47 partners can use this purpose
Content presented to you on this service can be based on your content personalisation profiles, which can reflect your activity on this or other services (for instance, the forms you submit, content you look at), possible interests and personal aspects. This can for example be used to adapt the order in which content is shown to you, so that it is even easier for you to find (non-advertising) content that matches your interests.
Measure advertising performance 173 partners can use this purpose
Information regarding which advertising is presented to you and how you interact with it can be used to determine how well an advert has worked for you or other users and whether the goals of the advertising were reached. For instance, whether you saw an ad, whether you clicked on it, whether it led you to buy a product or visit a website, etc. This is very helpful to understand the relevance of advertising campaigns.
Measure content performance 77 partners can use this purpose
Information regarding which content is presented to you and how you interact with it can be used to determine whether the (non-advertising) content e.g. reached its intended audience and matched your interests. For instance, whether you read an article, watch a video, listen to a podcast or look at a product description, how long you spent on this service and the web pages you visit etc. This is very helpful to understand the relevance of (non-advertising) content that is shown to you.
Understand audiences through statistics or combinations of data from different sources 108 partners can use this purpose
Reports can be generated based on the combination of data sets (like user profiles, statistics, market research, analytics data) regarding your interactions and those of other users with advertising or (non-advertising) content to identify common characteristics (for instance, to determine which target audiences are more receptive to an ad campaign or to certain contents).
Develop and improve services 113 partners can use this purpose
Information about your activity on this service, such as your interaction with ads or content, can be very helpful to improve products and services and to build new products and services based on user interactions, the type of audience, etc. This specific purpose does not include the development or improvement of user profiles and identifiers.
Use limited data to select content 49 partners can use this purpose
Content presented to you on this service can be based on limited data, such as the website or app you are using, your non-precise location, your device type, or which content you are (or have been) interacting with (for example, to limit the number of times a video or an article is presented to you).
Use precise geolocation data 64 partners can use this special feature
With your acceptance, your precise location (within a radius of less than 500 metres) may be used in support of the purposes explained in this notice.
Actively scan device characteristics for identification 36 partners can use this special feature
With your acceptance, certain characteristics specific to your device might be requested and used to distinguish it from other devices (such as the installed fonts or plugins, the resolution of your screen) in support of the purposes explained in this notice.
Ensure security, prevent and detect fraud, and fix errors 119 partners can use this special purpose
Always Active
Your data can be used to monitor for and prevent unusual and possibly fraudulent activity (for example, regarding advertising, ad clicks by bots), and ensure systems and processes work properly and securely. It can also be used to correct any problems you, the publisher or the advertiser may encounter in the delivery of content and ads and in your interaction with them.
Deliver and present advertising and content 123 partners can use this special purpose
Always Active
Certain information (like an IP address or device capabilities) is used to ensure the technical compatibility of the content or advertising, and to facilitate the transmission of the content or ad to your device.
Match and combine data from other data sources 92 partners can use this feature
Always Active
Information about your activity on this service may be matched and combined with other information relating to you and originating from various sources (for instance your activity on a separate online service, your use of a loyalty card in-store, or your answers to a survey), in support of the purposes explained in this notice.
Link different devices 65 partners can use this feature
Always Active
In support of the purposes explained in this notice, your device might be considered as likely linked to other devices that belong to you or your household (for instance because you are logged in to the same service on both your phone and your computer, or because you may use the same Internet connection on both devices).
Identify devices based on information transmitted automatically 113 partners can use this feature
Always Active
Your device might be distinguished from other devices based on information it automatically sends when accessing the Internet (for instance, the IP address of your Internet connection or the type of browser you are using) in support of the purposes exposed in this notice.
Save and communicate privacy choices 100 partners can use this special purpose
Always Active
The choices you make regarding the purposes and entities listed in this notice are saved and made available to those entities in the form of digital signals (such as a string of characters). This is necessary in order to enable both this service and those entities to respect such choices.
have your say