If I spend most of my time not writing code, but sifting through other peoples' code (mostly PHP) fixing it, what would I be called professionally? How I got to this point is a long story. Seems I am good at reverse-engineering things, but I never formally learned to write code. I want to break away from this and start writing my own code, hopefully better than what I end up debugging, and I want to move into something that encompasses desktop and the web. Any advisement would be grand. Thanks!
Sounds like "maintenance programmer" to me.
If I were you, I'd begin cramming what you want to know. Buy a bunch of books. Cram it at home. Cram it during lunch. (I especially like to make notes on a legal pad whilst cramming.) Cram the knowledge of a hundred books into your cranium and dash this salt upon your resume. Then, try to move into a job that more closely matches your interests.
Rinse, repeat as necessary.
Pick a project you'd like to develop in the time you have available and just go for it! If you need, grab some books on PHP (or whatever language you chose), study it and just go for something relatively simple.
The best way to learn to program is to program! :)
A debugger? ;)
In seriousness though, it's still programming, and programmers take part in debugging code. There are testers, and there's usually two levels of testing. The first is testing that the bugs exist in the first place, then once tracked down the bug is passed to the programmer to be fixed. Once the bug is fixed it is then handed to another department who do (black box) regression testing against that fix to ensure the bug has definitely been fixed. There's quite a process, but you fit somewhere in all three.
"Novice programmer". I don't mean that to be pejorative. There's a lot of smart people out there who call themselves programmers--I used to--who have not much more expertise than you.
That said, there should be another word here. We have separate words for "editor" and "author", right? But the person who knows where the comma should go isn't necessarily the person who should be writing novels, and vice versa. Funny that this division hasn't come up in coding, probably because most people who aren't formally trained don't ever have a choice. They learn by making, not by having access to a code base that they then operate on.
Laura,
The fact that you're concerned about the quality of the code that you're maintaining already speaks highly about where you're going next. Call yourself a programmer, start taking classes, read books and take part in open source projects. IMHO you should strongly consider other languages as well. PHP doesn't lend itself to a good learning platform because there are so many bad examples out there. Take a look at Ruby, or C# if you want to learn about compiled code.
Good luck!
hmm, some kind of "proof-reader"?
EDIT: I don't know what one can call the profession mentioned in the question but what I meant is something equivalent to a proof-reader present in other professions i.e someone going over/looking into the work produced by someone else.
If I spend most of my time not writing code, but sifting through other peoples' code (mostly PHP) fixing it, what would I be called professionally?
A lot of programmers do this. Even if you are fully trained and a bigwig developer, you are going to spend a lot of time working with other peoples code, fixing it, adding features, refactoring. The percentage of time that a system is being written from scratch is tiny compared to the amount of time it is being fixed and improved.
I wouldn’t be too down on yourself about lack of formal training either, again a lot of programmers self taught before they had any formal training.
You also learn a lot by seeing the mistakes other people have made. And given enough time you will be able to write the code better than them.
Ah, academia, I think that school is not the best route for me, as I am better at teaching myself, hence the ability to reverse engineer things like other peoples' code. I'm still trying to shake the "doesn't play well with others" label. Ha ha.
I am going to keep up my PHP, but focus on C# 'cause I have the books and resources for it.
I would like to seriously try Ruby; I tried it once using Hackety-Hak (by whytheluckystiff) and it was great, but I ended up learning more from researching a couple of the examples that didn't work and got them working. I guess I want to fix my own mistakes once in awhile.
The support and encouragement here is great, thank you, everyone that put Stackoverflow together and also the users that make it such a great place!
What you're doing is called 'refactoring' code. This typically is a job of someone in Quality Assurance and Control. Refactoring serves a number of purposes ranging from actual algorithm improvement to improving readability. Refactoring is not debugging though. The former assumes that the program works, but needs to be cleaned up, while the latter fixes code. So, whether you debug or refactor, whatever you're doing falls under QA&C. So, I would call you Software Quality Assurance and Control professional (sounds nice!)
Every (good) programmer reads more code than she writes. It is the only way to get any good at it. You might be interested to read some work of Richard P. Gabriel.
http://en.wikipedia.org/wiki/Richard_Gabriel
You do know about unit tests, do you? The perfect way to reduce a big ball of mud to a nicely-structured program
http://devzone.zend.com/article/2772-An-Introduction-to-the-Art-of-Unit-Testing-in-PHP
Code plumber or ninja may be another couple of terms.
Plumber in the sense of applications and middleware and other pipes that need fixing.
Ninja in the sense of being able to do what others may see as magic tricks when it comes to fixing things.
There've been a couple mentions of 'editor' -- do you work with the original programmer, helping them to write better? Then that'd be a good term for it (and I wish that were more of a recognized specialty among programmers -- it's a great part of what I do for my client). Otherwise plain old 'programmer' fits fine.
Re advice, besides what others have suggested, try working through CTM or SICP.