Learning C-like languages in London, fast
November 4, 2011 3:32 PM   Subscribe

I work with databases and T-SQL. I'd like to be taught to program fun software-type stuff quickly and painlessly, in London. Maybe some Objective-C, I'm not sure. I think I'd prefer a one-week intensive course or two to evening classes, but I'm open to the latter if they're really good.

I'm a catch-all database developer and admin (basically in our workplace there is one database/IT person, and that person is me). Our front-ends are all in Access with scads of VBA; they run pretty well, and there are a lot of advantages (basically: speed) to developing in this way. I only started doing computer work about two and a half years ago, and I really enjoy it. But the thing is, I'm starting to really like the front-end dev side of things, and I don't think I'm going to be satisfied with VBA forever. If I don't learn a more versatile language in the next year or so, I'm going to end up rather frustrated. I know the obvious choice would be VB, but I'm not sure I want to take that route; I have no particular attachment to the features of VB I'm familiar with, and my personal laptop is a Mac and is likely to remain so, so it's not something I'd be able to diddle around with in my free time.

Work have been very patient about me picking up various things, but I'm not sure they're going to want development to be held up by my trying to do things the exceptionally-long way. So this is going to be a personal project for a while, though it's possible I might get some time off for this.

I have been trying to teach myself, but I'm not sure I have the patience at this point; I learn things like this a lot faster in taught environments, particularly at the beginning. I think later I'll be able to teach myself a lot of things, but I'd get a really good kick-start from some proper tuition.

I had a really crappy experience a few years back trying to learn web programming at Birkbeck; basically, the class was enormous and full of people who could barely use a mouse (I mean this quite literally). I learned nothing, and this has put me off evening-class type environments for a long time.

I also take a lot of art classes and so on; I find they are really useful to provide some balance in my life, and don't want to give them up, so I'm not sure I have time for evening classes right now. I could, however, make the time next term if I knew the course was going to be really good.

One thing I've considered is learning to create iOS apps first, just because I think I'd have the most fun doing that and am the most likely to keep it up for the few years it would take to get really confident in a C-like environment. Then maybe I could start thinking about this stuff in the context of my career, but I think it's going to be a while before that is possible.

I should mention that I've realised I basically hate web programming; I enjoy thinking about how to make things usable for real people, not how to make things usable for shitty out-of-date browser rendering styles. This is also what's made me think I might enjoy iOS stuff, because it's such a closed environment.

I've done a couple of 5-day and 3-day courses with QA, which have helped me to pick up TSQL and VBA fairly quickly. But that was because the courses were booked via my workplace, who have a discount; I'm sure there are other good IT educational institutions out there.

Assume for the purposes of the question that money is no object; that isn't actually the case, but I'm interested in getting a feel for what's possible in other senses before starting to think about financing.

So yeah:
- In London
- Not web programming
- Not a course that is going to have students with low levels of IT literacy
- Not something that will take too long to complete or take up too much time or energy
- Fun!
- Something C-family-ish, probably, unless someone has a better idea
- By the way, I don't care about getting a certificate or a qualification. In fact, I'd actively prefer not to get an MSc, since that will make it much more expensive for me to get other Masters-level qualifications in the future.
posted by Acheman to Computers & Internet (8 answers total)
...get really confident in a C-like environment
Objective-C for iOS (or OS X) really isn't a C-like environment.

I should mention that I've realised I basically hate web programming; I enjoy thinking about how to make things usable for real people, not how to make things usable for shitty out-of-date browser rendering styles.

If you're just doing this for yourself, you can write web apps that only run on the latest version of Chrome. You don't have to care about IE compatibility. Besides, for end-user applications you have to do just as much annoying compatibility crap (oh, this API isn't available on OS X 10.4. Oh, this user uses a proxy that requires a password. Oh, this breaks if the user doesn't have administrative rights...)

Realistically for your first projects, you're going to make stuff that works *just for you*, and you're not going to support other versions of *anything*, regardless of whether that's browsers or OSes or first gen iPhones or what.

I really don't think you will find a one-week C, Objective-C, C++, Java, C#, or anything similar class that will be worth anything. You are probably going to have to teach yourself. Or take real college/university classes.
posted by tylerkaraszewski at 3:40 PM on November 4, 2011 [1 favorite]

Have you ever read the famous Norvig essay? Of course, the fact is that you've already started to learn to program – T-SQL is perfectly respectable, and VBA offers the concepts, at least.

Personally, I think that learning large-scale concepts (object-oriented vs. procedural vs. functional; algorithms and data structures; OO design patterns; etc.) is more important that picking a particular language and learning to make a particular kind of app. If you teach yourself algorithms, you can use them with any syntax.

You might try reading a book: Think Python, for example. Maybe the classic SICP (although it's probably not as practical as you would like).

This is a big field, and you should start out with the most general concepts rather than trying to learn to make iPhone apps in Objective-C first thing. (Obj-C has some really strange quirks, too, that can be a little hard to grok unless you understand the reasoning behind them.)
posted by sonic meat machine at 5:13 PM on November 4, 2011

I like Objective C. It has a Smalltalk-like influence, which is what I think throws off a lot of C programmers. But you have to factor in the need to learn Cocoa which is a far, far bigger task than I think you want to chew off. But if you want to write apps and want courses, you could check out www.bignerdranch.com. They have some courses coming up on your side of the pond.

I like Python and I think it is quite learnable yet very powerful. So I agree with sonic meat wagon.
posted by PickeringPete at 6:35 PM on November 4, 2011

Response by poster: Thanks, I don't really want suggestions of books to read. I have read all the many discussions of where to start with programming, and they've been helpful, but that information isn't what I'm after now. I've actually read a lot of books about programming concepts. "Python is a good language for beginners" is not helpful to me. "I know of a really good intro to Python course, you should consider that" is helpful to me.

The thing is, learning T-SQL and VBA both involved a lot of self-study for me, because there wasn't anyone else to teach me how to do my job. But the weeklong courses my work sent me on absolutely helped. I was forced to do a lot of boring labs that otherwise I would have been very tempted to skip. I also got a lot of stuff I can't quite put my finger on, but basically it's a knowledge of how to approach things, what to expect to be able to do and so on. I still look things up online and in books when I don't know how to do them, and that still happens often-ish, though not so often that I'm not worried that my job will be boring in two years time if I don't learn something new. I don't think that my learning stopped with the courses at all, but I do think the courses kicked it off very nicely. So I'm really dubious of the dismissal of courses.

Or take real college/university classes.
Yeah, the Birkbeck course I took was a real college/university course and it sucked. If people have recommendations for courses in London that don't suck, and that I can take as short courses without pursuing a qualification, that would be grand.

I would consider a short residential course in the UK, but the bignerdranch courses are in Germany, so that's not really what I'm after.
posted by Acheman at 2:27 AM on November 5, 2011

I've said this before here, but the skills you pick up from Stanford's online intro to CS class will be invaluable. They will help you go from procedural to object oriented programming and give you a background and confidence to do whatever you need to do. With some hestitation I say, don't even worry about actually trying to do the homework, just follow along and read the text.

The course itself is in Java but that doesn't matter. As others have said, the language is really irrelevant. You just need a solid foundation. You'll be surprised how you'll go from thinking in the concrete (VBA, TSQL, Access) to being platform agnostic in how you'd tackle a particular problem set.
posted by geoff. at 7:55 AM on November 5, 2011 [2 favorites]

"Python is a good language for beginners" is not helpful to me. "I know of a really good intro to Python course, you should consider that" is helpful to me.

If you will go with an online course, Zed Shaw's learn python the hard way online course is the way to go. That will start you at the beginning, but if you can get through that it will give you a very solid base.

If you really want to go after iOS, I've heard good things about stanford's online course.

Before I go though, let me rant at you for just a second (professional developer including iOS, web, backend, etc. here). Beyond even the basic CS stuff being discussed, understanding low-level things like memory management really messes with people. There is an amazing amount of terrible, leaky, and unstable c/obj-c/c++ code out there. That doesn't mean you shouldn't learn it, it just means you will need to take in a lot of information and concepts really quickly. Web development brings it's own set of challenges, but can be a softer start. I will strongly recommend that you read Javascript: The Good Parts before you start writing javascript.
posted by yeoldefortran at 10:06 AM on November 5, 2011

Response by poster: OK, sometimes people on AskMe are fantastic, and sometimes they really aren't. It's more than two months later, and I'm still annoyed by all the people who suggested I learn online. I think I made it pretty damned clear in my question that I was looking for courses in a classroom, having tried learning online already.

In the end, I signed up for an evening class in C at City University. I've only had the first class, but it seems pretty good so far, much better than the Birkbeck course. I am a big fan of online learning, but it can be really helpful sometimes to have someone to ask questions, a time that's set aside to do exercises, and so forth. This course also seems to focus quite heavily on teamwork, which as I understand is frequently a large component of programming work, and which I don't have much experience of in my job as I am the only computer person. There are followup classes in C++ and then a bunch more in C variants like C# and Objective-C, so I can work out where I want to take this.
posted by Acheman at 2:53 AM on January 19, 2012

Response by poster: Aagh, sorry for being so grumpy. I'm going through a bit of a difficult time right at the moment, fwiw, not that that excuses things.
posted by Acheman at 6:21 AM on January 20, 2012

« Older Where should I take my wife for our anniversary?   |   Where can I get a rag doll repaired in the UK? Newer »
This thread is closed to new comments.