Getting into computer programming

Another thought… once you get beyond the basics (data structures, memory management and stuff like what goes on the heap, what goes on the stack, what the compiler does, etc. etc.) almost everything you’ve learned in school becomes outdated within a few years. The number one skill that a good coder needs is the ability to learn new things fast, using books, the Web, and other resources. You can’t expect to be sent to a class to learn new technology X - you have to learn it yourself.

How do you know?

You can also tell me the reason why Microsoft and many other big software companies have so many bugs in their wares.

If you care to name the company and project you have alleged to work on, maybe it would be a bit more impressive. Right now I am just totally underwhelmed.

Just $.02 on top of all the other comments.

IMHO, as a computer professional these past 12 years, technique is more important than language.

The programmer’s skill is to be given a task and be able to break it down into the quantum steps that are required to accomplish it. The ability to turn a problem over in your head, finding the critical points, identifying areas of special event handling (like boundary conditions) are important.

For example, to be a little silly about this, making a peanut butter & jelly sandwich is a number of steps. You can break it down this way:

  1. Get two slices of bread
  2. spread peanut butter on one piece
  3. spread jelly on other piece
  4. place pieces together.

You can break it down further

  1. Locate loaf of bread
  2. open bag
  3. remove two slices
  4. place on counter
  5. locate peanut butter jar
  6. open jar
  7. locate knife
    <blah, blah, blah>

This list can be broken down yet further, into how to open the bag. The detail level required is often related to the language your using.

Visual basic, for example, has precoded routines that would “open the jar” for you while the same routine in C might have to be hand written. Important to all these, though, is the abiltity to break it down.

I’d recommend starting with a good language like C. It’s a language that is highly applicable in this current programming environment, but mostly I suggest it because it is a good balance between power and granularity. You’ll learn programming technique well with this.

Later, worry about object orientated languages like Java & C++.

-B

And while I’m pontificating… programming these days is a team sport. The majority of projects have progressed long beyond the point where there’s a single programmer working on a single piece of software. Project managers work alongside programmers, directing and managing all the little pieces that have to come together. Marketing drives desired software features, finance limits resources, testers push code back and forth, System admins control servers & other hardware resources. Being able to work as a member of a team is important.

-B

OK, Urban Ranger, you still don’t seem to back up any of your claims, but I’ll bite.

The company is VERITAS. According to this and just about every other media review about VERITAS, it’s considered one of the top 10 software companies in the world, and is the world’s leading storage software company.

The products I worked on was Netbackup Storage Migrator. It’s a hierarchical storage management system. I worked primarily on the NT and MS Exchange versions. Prior to that project, I worked on the HSM app that shipped with Win2K, through a joint venture between Microsoft and the company I worked for.

I don’t want to mention specific companies by name that use the product I worked on, since I’m not sure if it violates the privacy contract I signed when I worked there. I can, however, say that the types of companies that used our product were companies that had terabytes and petabytes of critical information to store; think large banks, image banks (ie, the places that sell stock photos), and places that store lots and lots of digital video.

Nonsense. I’m a self-taught programmer; since age 4, I’ve learned Logo, Basic, C, C++, Pascal, Perl, and PHP (and to a lesser extent, x86 assembler and Java). I’m currently employed as a software engineer and working with motion control and signal processing, among other things.

Or see Visual IRC, one of my freeware projects. Over 130,000 lines of code; tens of thousands of downloads per month; high ratings from Tucows and CWSapps.

I didn’t learn from classes. I learned from reading manuals, help files, and (probably most important) other people’s code. Just about anything you’d learn in a programming class can be found elsewhere - for reference, look in the manuals; for algorithms, read Knuth; for style, read someone else’s code and decide what you like about it.

I really need to get my post count up, so i’ll throw in a few cents.

In my opinion most languages will serve you equally well for learning purposes. Most universities (at least around these parts) use Java as a teaching platform. While not the best language for realworld applications, it does have the advantage of forcing OOP (object oriented programming) and other good coding practices. And its available for free right here Sun or here Microsoft !

That said, you should know that Java wont get you all the cool jobs, but it will serve very well for learning.

With your background i expect the basics (syntax, logic etc) will come to you pretty fast, so i wouldn’t worry about that too much.

The, IMHO, most important aspect of programming is knowing the tricks of the trade. Many of these you can only learn by practicing. What you can learn from a book however, is various algorithms and datastructures (general tools which will make your programming life alot easier).

Here’s what i would do:

Get a good book on general Java (general meaning a book not limited to a single compiler like MS J++). Follow the examples presented. When you feel like you have a basic grasp on the language try to think up a small project which you find interesting (i learned programming making text-based games).

Then buy this book. It’s the bible on algorithms and datastructures. Dont read it all but skim through it and use it as a reference.

When you get this far, picking up new languages shouldn’t be a problem. Both Visual Basic and C++ along with various database systems are used intensively in the industry.

Good luck :slight_smile:

I’ve been programming for 34 years now - the first assembly language program I wrote was on an assembler I wrote myself.

For the OP - the best way to proceed is to look at want ads and the online job listings for companies near you, and see what skills/languages they are looking for. Then, find some people in the company and call them up and ask what kind of skills they’re looking for. My company would almost certainly not hire someone without either a degree or lots of experience. Computer Science degrees are not scarce these days. Anyone here telling you what is hot is just guessing.

There are indeed lots of unemployed programmers, at least in Silicon Valley, so it might be tough.

As for languages, I agree that once you learn one language picking up another is fairly simple. The hard part of programming is algorithm and data structure design. Some people get it, and some don’t. In school you at least get exposed to it. Lots of people who theoretically know how to program are clueless about data structures. I taught it one term, I know!

I’m not sure writing something big at home will help all that much. As was said, programs are big things these days, involving debuggers, change control software, collaboration, documentation, etc. Anything that is going to take you any sort of reasonable amount of time (since you still have a job) is going to be underwhelming, and might not even make you use all parts of the language. If you have the equivalent of a community college near you, a class would be faster, more efficient, and provide some credentials.

Good luck!

Just out of interest; what language did you use to create the assembler?

Docklands, I’m trying to break into software development myself. I’ve been doing Unix sys-admin and technical support for the last 8 years just so you know where I’m coming from.

I think you’re going to want to have more experience before you go out looking for a job - in my experience, hiring is all about the technical interview.

A good resource for beginning programmers is www.gamedev.net - they’re devoted to writing computer games, but in the end, it’s all software and they’re a great resource for advice, free stuff, book references, etc.

If you want to go with C++, this is my favorite book at home, and Bloodshed Dev-C++ is a great free compiler/IDE package based on the GNU C compiler.

Also, you’ll have to figure out which platform you intend to develop for. Obviously, Win32 is pretty big these days, but Linux and Unix programming are alternatives, and frequently (though not always) the pay for Unix programmers is higher than that of their Win32 equivalents.

But, realistically, I don’t think you’ll get a job until you’ve got some experience and a few decent software packages under your belt, or more formal education. Entry-level pay usually isn’t that great, and you’ll probably end up maintaining some one else’s code (as opposed to writing new software) - YMMV

Hope this helps,

As a 15 year veteran of the computer industry I would advise against it. There is a huge glut of programmers right now. Many companies are moving development to India as it is cheaper. Very few have even started thinking about moving development to China yet and when they do the industry will severely go down the pan (2 billion people who effectively work for peanuts?). As wierd as it sounds, right now the best occupation you can train for is one of the skilled builders (roofer, joiner, electrician, plumber etc.). Almost nobody has gone into these fields in the past 10+ years so as far as job security and earning power goes that is going to be the place to be in the next 10+ years. It has to be a skilled builder though; manual labor is being done by non-UK nationals as they are cheaper than UK labor.

Just my .02c

Machine language! The machine was an LGP-21 in my high school. (It was 1962 vintage, and a transistor version of the LGP-30 from 1955 or so.) You wrote jumping to absolute addresses. The character set for this machine was not ASCII, and it was set up so that if you wanted to write a Bring instruction you entered a B - since the top 4 bits of the 6 bit code for a B happened to be the opcode for the Bring instruction. (It was
an accumulator machine.)

Great fun. If you have the first edition of Bell & Newell, it is described in there. The LGP-30 is mentioned in “A Story of a Real Programmer”

You can find the manual for this machine (which I still have - the manual, not the machine) here:

http://ed-thelen.org/comp-hist/lgp-21-prog-man.html