I have worked as the only developer at a company who knew a specific technology, as the only one who did the type of programming I did, and as a contractor in similar situations. (I've also worked in team environments with other developers who knew different tools and with other developers who did exactly what I did.)
Pros of being the only programmer
- As you mention, you frequently have the freedom to use whatever tools or languages you feel you can learn. You don't always have to make a case before your peers to get permission to work with New Technology X while everyone else is using Current Technology Y.
- You have more responsibilities. Essentially, you function as both project lead and developer on each of your projects, and with your ability to identify and implement new stuff, you're effectively the department head as well. (Don't tell salespeople this. They love to talk to decision-makers, and you don't have time to talk to them.)
- There is no question about credit for the work that gets done: it's obviously you and you alone who made things happen.
- You can spend more time actually working on your own projects and less time in meetings about projects that are basically someone else's (but you're there as a support person, possible backup, or whatever.)
Cons
- As David points out in a comment, you are the only developer, so no development gets done without you. I once bragged to my brother that I was "the guy" on a particular project at work. He accurately described my situation for me: I was trapped. I couldn't move on in that company because I'd never be able to get rid of that project. (He was right, too. It took several months of training over an extended period of time before I could hand it off to someone who was even somewhat capable of supporting it.) You may find it difficult to take a true vacation when nothing can be done without you.
- As Pierre points out, there is no one on site to do code reviews or share best practices with you. You can reach out to peers in various ways, but nothing is quite as effective as tapping a coworker on the shoulder and asking her to look at your code for 5-10 minutes.
- In a similar vein, you may have difficulty getting experience with new tools. Offsite training may be as rare as vacation time: someone will complain that the company can't afford to have you off looking at Language 3.0 for a week when there's no one to keep the Language 2.0 apps working.
- Career advancement can be extremely difficult to manage. You may not have a position for which you can strive, even a change in title may be difficult to gain, and end-of-year reviews don't have any frame of reference, so excellent work may go largely unnoticed if for no other reason than that no one really understands what you do.
If you decide to move to a company where you would be working as part of a team of programmers, I don't think your solo experience is likely to hurt you much. Your lack of experience with design patterns isn't necessarily as important as your willingness to learn them. (There may be situations where you're interviewing against a candidate with a similar background and also experience in whatever methods that company uses, but that is true of basically everyone.)
Along the same lines, your lack of experience on a team is balanced by your ability to wear many hats. There are some developers who are good team players but never develop the ability to manage a project; you've already shown that you can do that.
I would recommend that when you are a solo developer, you should spend some time reading about tools and techniques that similar developers are using, so even if you don't use them yourself, you're aware that they exist and you can refer to them during an interview, even if only to say "Yes, I've read a little about MVC frameworks, but I haven't used them myself." Do what you can to stay in touch with other developers: go to local user group meetings, read and comment on blogs (or keep one of your own), try to get to workshops from time to time, watch webinars and such. (You might also consider sites like lynda.com for in-house training: it's not as good as a week-long conference somewhere else, but you can watch the videos on your own time and not send everyone into panic mode because you're out of the office.)