Computer programming – where to start?


I’m confused – I don’t know where to start with this. I need help. So how about a Cambridge PufflesCamp aimed at helping solve these conundrums?  

“Learn to programme or be programmed” as the saying goes. I can’t remember where I heard it, but it is the final command of this blogpost on the 10 commands of the digital age.

My preferred learning style would be to incorporate some sort of regular weekly ‘taught’ learning programme, but the challenge is finding somewhere that’s suitable and affordable. If anything, this is to give me some sort of structure that at the moment is lacking in my daily life. But then which course? A brief look at one local provider is as varied as it is confusing. That’s not a criticism of the course provider, it’s a reflection of just how diverse programming and coding is. Compare it to someone saying “We do writing courses – in every written language in the world” – but to a visitor from outer space. Which one do you go with?

Looking through the list of all the different names and acronyms, I’m familiar with most of them by name…but that’s about it. It’s one of those things where I know I need to become knowledgeable in this area, but don’t know where to start. It’s a similar state of affairs to those people who say to me that they need to become more familiar with social media but don’t know where to start.

At the moment I’m playing about with the basics – in particular with my new website that I’ve not yet launched. What I thought was going to be a straight-forward theme ended up being anything but. I spent part of yesterday evening with my web host trying to get our heads around why it wasn’t nearly as straight forward as I thought it would be. I could get to the code behind the theme but could not understand most of it. There were bits where I could – for example recognising where certain things needed to go – such as the name of a Twitter feed to produce an automated feed from my Twitter account. But what didn’t make sense was why placing one piece of code would lead to the feed being placed in one area of the web page and not another. It wasn’t as intuitive as I had expected it to be.

Where I’m at is that I’ve got a ‘vision’ of what I want the whole set up to look like and how I want it to function. I’ve sketched the designs out on paper and have much of the content ready or in the pipeline for it to be incorporated. But I don’t feel that I’ve got anywhere near the level of skills needed get from A to B.

Apart from where to start, I am also going through a bit – well…a major crisis of confidence at the moment. It’s not helped by spending most of the day in isolation (one of the perils of this new world). This combined with trying to get over the hurdles of the curse that is this anxiety disorder means that things feel generally bleak. That’s not to say they should remain that way.

At the same time, I also think that the steps I need to take are relatively straight forward and not especially big to overcome all of this. What I need are people to work with – not just for my benefit but for all of our benefits too.

This is what I’m proposing.

A mini-PufflesCamp in Cambridge.

This is not to replace the one that I hope we can have again in Brighton that we had last year. This one would be more about people bringing their specific computing related projects/ideas/problems together with the aim of trying to help each other out. I’ve got my things that I need help with, and there things that I can help with – even if it’s a case of playing with some of the hardware or software that I’ve purchased in recent times.

The idea would be to locate either to a pub or coffee house close to the station (there are a couple with free wifi access) or to my place over a weekend (looking at late March) and to bring computing/social media problems and skills together and see what the results are. In the run up, through either the comments section in this post or through Twitter, we could scope the things that we want to address so that people can come prepared with possible solutions or ideas. I (or rather my parents – as that’s where I still am) can provide floorspace for a few people should anyone need to stay overnight – and there may be a couple of Cambridge-based people (depending on numbers) who might be able to provide the same.

I’m not planning on this being a huge gathering – possibly around ten people or so, otherwise we end up in the realms of having to book venues, at which point things become expensive. Which is not good given my levels of skint-ness.

What do people think, and who would be interested?




10 thoughts on “Computer programming – where to start?

  1. I’ll see if I can make it – I’ll still be working in Cambridge until the end of March which, rather oddly, makes it trickier as I like to get home at the weekend. But hopefully I can chip in 🙂

  2. That sounds like an interesting format for learning! How does it work in practice?

    As you know, I am not a teacher but from what experience I have had the biggest stumbling block for non-techies seems to be getting the head around ‘abstractions’. I flinch slightly with the use of the word ‘programming’ because I wonder if it misleads as to what the issues are.

    Getting into writing some code at a particular level should actually be easy (and a great start) for almost anyone. What is harder, but which I would expect would come with continued engagement and some prompting, is how to understand how a particular system is put together – what the writers’ fundamental design concepts are, how they fit together and very importantly, the current limitations of the structure. So, for example, you could be able to read a small snippet of code that puts something specific up, easily. Being able to ‘read’ how the system is put together is harder but important for making bigger and consistent changes – in the absence of documentation it probably means darting round lots of snippets of code and forming a mental map which will become a vital input for working out what to do next!

  3. I’d recommend html and php, and O’Reilly books. Install Linux at home and play! The worst that can happen is that you have to reinstall 🙂
    I can translate some things from geek to normal people if that helps.

  4. Tend to agree with Andy Bower. The problems that most people associate with programming are not programming problems per se. There are several steps the first two are the simplest: –
    1. Understanding the basic concepts of branching, looping etc which are common to most languages
    2. Understanding algorithm design (which broadly means you don’t want to many nested loop or otherwise the code takes forever to run).
    …. once you have these two concepts firmly embedded then you can pretty much “program”.

    At this point things move from the generic to the specific and there are two additional problems. These broadly relate to using components/tools you are using…

    Typically when programming you want to save effort by reusing code, both your own and other peoples (hence the concept of libraries and object orientated code etc). When building your own code you will try to write it in such a fashion that useful components can be reused. This is much harder than it sounds and requires a lot of design effort up front. Fortunately for very simple projects this may not be necessary (although I’m sure purists would argue with me on this one).

    The other problem is using other peoples code. This is usually a good idea (for example why create an algorithm to sort a list in alphabetical order when somebody has already written one). The challenge here comes with the libraries not behaving as you would expect (and quite often not as documented – assuming they are well documented in the first place). Working round these latter problems is not like the abstract logic of programming at all but more like an investigation where you simply have to work through it (in my experience by reading internet blogs by other frustrated programmers and lots of trial and even more error). In many ways this is more akin to working out how to use a new gadget or repairing a washing machine than the abstract thinking required when coding/designing.

    In terms of languages to learn, I guess a lot would depend on what you want to do with it. High level languages (e.g. Java and VB.NET) are more likely to be useful if you are going to be building interfaces or performing simple operations on a server (e.g. integration with databases etc). Lower level languages such as C++ are for either highly computationally expensive work (e.g. simulations, complex statistics and advanced computer games engines). However, I found that learning C++ was a great investment as it forced me to get my head around how the code actually handled by the computer. Anyway feel like a bit of an impostor posting here… I know for a fact that Andy is a far better coder that I am!

  5. While my soul weeps at the prospect of someone learning PHP and the web languages as an introduction to programming, it is probably the best start if you want to hit the ground running on the Interwebz. Rural Adversity is right to point you in the direction of O’Reilly books and with getting practising, although you don’t need to install linux to do that if you want to leave that obstacle for a later day.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s