Getting into computer programming

Given the vast cut backs happening in my industry at the moment, I began to think about other careers I might head into if I got the sack. Also morale is pretty low, and I’m running through childish fantasies of telling my boss to shove it.

I used to be pretty interested (and not bad at) computer programming. When I was ten or eleven I set up two bbc computers at either end of the assembly hall and had a program written in logo so that by typing into one it would flash a light in morse code and the other would receive this on a light sensor and display on the screen.

Still enough nostalgia. I was wondering if anyone could offer advice on how it would be best to get into computer programming.

Extremely brief synopsis of me:
Age: 22
Education: Double first in Mathematics, University of Oxford
Experience: 1 year of experience at the London office of a US investment bank

I was asking my uncle whether taking a programming course for a year would be enough to get a job, but he said he thought companies would be keen to hire and train someone with a mathematical background. Does this seem realistic?

Also, what would such a job pay. I don’t know if I could stomach a large pay cut.

Thanks in advance,

Docklands

I’m in the USA, so I don’t know how well my experiences will translate, but here’s my two cents.

I also have a math degree (a “double first” from Oxford sounds more impressive than my BS degree, IMO :wink: ) and I work as a programmer. Technology salaries in the US have been on the rise for some time, even with the decline in the stock market. Education and maybe some kind of certification would certainly be enough to get you in for an interview and then your personality and interview skills could get you the job. There are places where just your personality and interview skills could get you the job, but I bet the pay would be way below standard. I worked at a place that hired non-traditionally trained programmers (I had a difficult career path early on) and the pay was below market.

After a quick search I found a web site for engineers’ salaries here. It includes software engineers, that’s why I include it. I would imagine that without an engineering degree your salary would be somewhat lower. Good luck!

I got into computer programming on an informal basis; years and years ago I had a ZX Spectrum, then didn’t really use computers a lot for about ten years, after that I was reintroduced to them as PCs began to rise in popularity.

My rekindled interest programming started out with fiddling around in MS Access to manipulate databases purely to get reports out of a system that didn’t present them very well, that grew into an interest in Visual Basic for Applications.

At about this time, the IT manager for the company where I worked just suddenly left and I found myself doing some of his stuff; I voluntarily took over his position and ended up developing a few full-fledged business applications. Through a further series of unlikely events, I ended up being grabbed by the parent company and I’m now managing IT for the whole group; part of this includes hands-on development in a variety of languages.

My advice: Get a decent PC (if you don’t have one already), get Visual Basic (or something else if you prefer - there’s much debate on which is best) and get a good primer book on the subject; work through it on your own time and learn a few of the basics of visual programming. Try to pick up something about databases and SQL along the way (nearly all business applications have some sort of database as their foundation).
By this time you’ll at least know whether you enjoy it or not.

Try to get as broad a perspective as you can; read up on how to build and tinker with PCs, read up on other languages besides the main one you choose.

Thanks. I have a decent PC from a games perspective (Athlon 2200+, 512Mb ram, GeForce Ti 4600) I assume that carries over to programming. I built my last PC, so I have a fair understanding of what goes on inside also.

Excuse my ignorance Mangetout, but when you say “get” Visual Basic, where do I get it from? Is it expensive? Will it run on my XP? Are there different versions?

Can anyone recommend me a good book for a beginner?

Cheers

Docklands

“Getting” VisualBasic means buying a copy of the software.

It is not as cheap as a game, although it is not outlandishly expensive. It does take a whole lot of memory–two or three gig if my memory serves–not so much to run, but to hold the temp work files that it uses while unloading itself from the delivery package and then reassembling itself for use.

In the States, I don’t think you can find VB 6.0 any more (its replacement being VB .net) while a lot of the tutorials in the book stores are still aimed at VB 6.0. (And in the typical fashion of whiz-bang marketers anywhere, Micro$oft has renamed some of the internal procedures between 6.0 and .net although the functions are still the same, which makes using the 6.0 tutorials a bit of work–but not insurmountable.)

“Getting” VisualBasic means buying a copy of the software.

It is not as cheap as a game, although it is not outlandishly expensive. It does take a whole lot of memory–two or three gig if my memory serves–not so much to run, but to hold the temp work files that it uses while unloading itself from the delivery package and then reassembling itself for use.

In the States, I don’t think you can find VB 6.0 any more (its replacement being VB .net) while a lot of the tutorials in the book stores are still aimed at VB 6.0. (And in the typical fashion of whiz-bang marketers anywhere, Micro$oft has renamed some of the internal procedures between 6.0 and .net although the functions are still the same, which makes using the 6.0 tutorials a bit of work–but not insurmountable.)

Thanks for that.

Does any one have any recommendations as to what is the best way to get into work? Do I need any qualifications? To what level do I need to be proficient before I can get a job?

Try getting any entry level job in a software company. Quality assurance and/or testing are good ones to look at. Generally these types of jobs require some computer knowledge and perhaps a degree. As long as you’re fairly bright and know your way around a computer, you’re qualified.

Once you’re in, you usually can move around. The last software house I worked at had coders who’d started as testers and even secretaries/receptionists. The key is getting in, and working your way up. The ones who moved into programming jobs usually took programming courses at night and on weekends and expressed their desire to move into coding jobs.

Yes, sorry, I did mean purchase a copy.

Not necessarily the latest version; you might be able to pick up a copy of VB5 for quite a good price; it won’t have quite as many bells and whistles as the latest version, but will be great to learn on (just make sure that you can get the right tutorial books to go with whatever version you plan to get).

Alternatively, shell out on a copy of MS Access (I like Access 97 best, but I may be in a minority there) - this includes VBA (visual Basic for Applications) which, although it is not by any means as professional a solution for developing commercial apps (but you wouldn’t be doing that to begin with), shares a great deal of commonality with VB proper and Access is an ideal introduction to database concepts, including SQL (although the implementation of SQL in Access could not be described as ‘standard’).

Another thing I forgot about; message boards: there are any number of good message boards and programming communities out there, regardless of the language you settle on. I learned a great deal from the (very friendly) message board at www.access-programmers.co.uk .

If you have the chance, ask people questions about computers too; ask the guy at the office if he would mind briefly explaining what he’s doing as he troubleshoots your printer problems etc. (although many IT professionals will be reluctant to do this).

Without a degree and being a younger person, I would say that finding work right now might be difficult. I’ve been jumping around a few companies of late, and each of them wouldn’t give a second look to anyone without a degree or substancial experience.

The exception might be getting into a very low level position, such as testing or doing some of the network grunt work, while increasing your programming skills on your own time. You might have the opportunity to move up in the organization and get some good experience.

Plus, I would have to say the market for IT professionals is in huge slump right now too, which might make matters all the more difficult.

Because you have technical degree, you will be looked up favorably, as opposed to an English major with programming skills.

IMHO, you should get into c++. Visual Basic won’t be much of a chalenge with your degree in math. Beside, their is more job in this field. You could be doing killer stuff in computer graphics or neural networks men :wink:

Anyway, just my 2 cents and i’m a c++ programmer so i’m already sold.

You want to know something else. Install Linux OR BSD on your machine and it’s all free, you don’t need to buy anything.

I will second Athena’s comments. I work for a large software company and we would not consider hiring someone without a degree or experience for a software engineering role. The time, expense, and risk are just too great. If you are lacking directly relevant education or experience the way to get in is through QA, testing, technical support, or IS&T departments. Once you are in, you generally can receive training paid for by the company. Your odds of getting a programming job down the line are much greater as the risks are mitigated when hiring a known quantity.

I would suggest learning Java. It’s a better object oriented language than C++ and will teach you the right skills. And, you can pick up a number of free Java authoring environments. Go over to www.borland.com and look up JBuilder. I think they give the personal one away, and it does everything you could possibly want to do as a beginner. JBuilder is a great development environment.

I say this as a long-time C++ programmer with thousands of dollars of programming tools on his desktop. JBuilder kicks ass. And there are tons of great Java tutorials on the net, lots of source code to study, and Java programmers are among the highest-paid in the industry.

More important than just learning a language is to spend the time to learn actual computer science. I see far too many junior programmers really held back by their lack of fundamental knowledge. As a math major, you’ve already had linear algebra, set theory, and other building blocks of CS. You may have had boolean algebra as well, and that is indispensible.

Take a good course in data structures and algorithms, and take an introductory assembly language course to drill in the logic and give you a fundamental understanding of stacks, queues, pointers, etc.

Read Computer Language Magazine and Dr. Dobbs. Make an attempt to understand what they are talking about, and study the subject on the net if you don’t.

One thing to remember: One of the reasons programmers make big bucks is because good programmers have to learn constantly. So you have to really enjoy it.

Self-taught programmer here.

mangetout’s suggestion makes sense to me based on my experience, but I would not suggest working through examples in a book. Pick a topic ripe for automation that is of interest to you and automate it. Buy a good book only when you get stuck, have been stuck for days and are getting frustrated. A “good book” is defined as one that you can see answers your question when you browse through it in a bookstore with a lot of choice.

As far as an introductory topic is concerned: try and make it work related. Get some kind of mock up done at home, then bring it to work and mention to your boss that you’re working on it (on your own time, hasten to add, and definately not plugging unauthorized programmes into production machines!).

This will accomplish a number of things: you will be learning real-world coding problems, because you will be solving a real problem; you will be showing your boss (and anybody within the company who cares to listen) that you’re a keener; when you interview for your next job you will be able to bring up the topic and possibly get the assignment of building the programme for their system.

For example: I’m in the investment business, on the buy side. Do you know that there are still many, many companies out their who calculate their account performance and composites thereof using Excel spreadsheets? And there are other companies who spend a quarter of a million dollars on a turnkey solution? And then God knows how much on data interfaces (or even wholesale reformatting) so the turnkey solution will have a key to turn? And that writing a programme to calculate composite performance is not exactly the world’s most conceptually difficult job (tedious, yes: data has to be pulled in from all over, cleaned, error reports written, etc.; difficult, no)?

Assuming that your math degree does mean something (I’ve met PhD’s for whom it doesn’t) you will want to stay away from RAD (Rapid Application Development) languages like Visual Basic; you will want to get into the very atoms of the code so that your implementation of your understanding of the problem at hand will not be handicapped by large ‘grain-size’ of the compiler. As suggested above, C++ and Java are both good choices. I would add Microsoft’s new C# to the list of possibilities: I know absolutely nothing about it beyond the Microsoft ads (and I’ve only skimmed them!) but not only is Microsoft the standard-setter (for good or evil) but you will be learning a language that doesn’t have as much established competition as the other ones.

Note that this will not protect you from the ignorance of Human Resource departments (notorious in the field for wanting 5 years’ experience in technical specialties that have only been around for 2), but it won’t hurt.

Your morse-code programme certainly indicates at least a little interest and proficiency; as mangetout noted, you really have to find out for yourself whether you like it or not; you also have to determine whether or not you’re any good at it. There are a lot of very smart people out there, some of whom have degrees in math, who can’t programme to save their lives … it’s not just a skill, there’s a certain amount of talent involved. When I’ve hired people in the past for investment/programming jobs, I’ve always emphasized the programming aspect … you see, investment stuff is something I can teach!

Good luck!

Since you’re looking for advice, I’ll move this thread to IMHO.

I suggest picking up a copy of Delphi or C++Builder. They’re as easy to learn as Visual Basic, but at the same time you’ll be learning Pascal (Delphi) or C++ (C++Builder).

Visual Basic hides a lot of details from the programmer, which is good when you’re learning but bad when you’re experienced. With Delphi or C++Builder, you can start by dropping controls onto a blank form and writing single lines of code at a time (just like VB), but all the details are still there when you need to make changes to a stock component, write your own components, etc. You can even get down to the hardware and write assembler code if you need to.

Programming is not the same thing as writing lines of code in some programming language, that’s why the self-taught people will have difficultlies later.

If you really want to get into programming, get a diploma (etc.) in software engineering.

errr… that’s a mighty big statement there without anything to back it up. I’m self-taught, and have yet to have ‘difficulties’. In fact, my newest gig isn’t even programming, it’s writing textbooks for college level computer classes. Yup, the books used to teach classes for that diploma you talk about.

For what it’s worth, I quit my last job as a coder last January. I was solely responsible for a large segment of an Enterprise level software package written in C++ for one of the largest software companies in the world. We’re talking an application that was required to run 24/7 on networks of thousands of computers. Seems to me that if I were to run into difficulties, I would have while working on that lil’ project.

While exploring the Windows world and the theoretical world, it would also be a good idea to look at the Open Software/Free Software world: the tools and software available in it, the reasons for its existence, and the philosophies behind it. This also serves to illuminate many of today’s technical/political controversies.

A good starting point is Eric S Raymond’s How To Become A Hacker. This document outlines the origins of the ‘hacker culture’, explains what it is (and what it isn’t), and gives pointers on where to get open-source programming tools, development environments, and operating systems.

With respect to learning how to program, ESR says:

Concur with Athena; I’m entirely self-taught and I’m currently providing support/tuition/guidance for a number of programmers on the team. I’ll quite often come up against gaps in my understanding or knowledge, but I know how to ask questions, I know how to read books, I’ve usually got a solution within half a day (and some new skills to boot).

Formal learning structures work well for many people, maybe even the vast majority, but not everybody truly needs them.