The internship usually looks better on your resume since it usually exposes a larger variety of things about yourself.
Taking on the internship means that you'll willing to take on new challenges. Not only that, at a decent internship, usually you'll learn what you would like to do and what you wouldn't like to do. At the point you may be at, you might not know what you want to do for the next twenty/thirty years of your life. Most people eventually change careers. Some people change from being from hardware engineers to software engineers and vice versa.
Also, let's face it. Work is usually boring but you gotta make it fun for yourself. Even in an IT environment, there are creative solutions to problems that they face everyday. In fact, you might be able to teach others something.
Taking on your own project might also be an interesting idea, but it's very limited. Unless you're coordinating with other people, you'll usually be thinking in your own little box for a while. It's suitable if you have a good idea and able to make it work in three months (summer time). I mean, if you can build the next facebook/twitter/google in three months, that would definitely carry more weight than an internship, right?
My question for you is...
Why not do both?
I agree with Boris - Do both. You are young and have plenty of time and energy. Intern during the day and learn to program iOS at night. That will look great on a resume.
Also, if the internship sounds like it will be boring find another one. There are plenty of companies.
Unless it's a local company that you're genuinely interested in working for after graduating, I'd say avoid internships in the islands. You will only be getting projects that will "groom" you to see how and where you can be placed to suit their long-term needs. Nobody else would really care about your Summer at XYZ Corp, doing retrofits on aging dBase for DOS applications.
Of course, if you need the money, any internship is better for you long-term than flipping burgers or working the sales floor at a local Best Buy.
Without a doubt, you will get the most return on your investment of time by doing your own project. Look at the hot tech startups that you admire, and get a feel for what technologies THEY use, and spend your summer getting a mastery of those technologies, by deploying and maintaining your own projects on the Web.
They don't have to be jaw-dropping gorgeous or awesome (though, that helps). Just demonstrating your ability to put together a project that uses those technologies goes a long way.
Sooner or later, you'll have to ask yourself.. do you want the fun and challenge of being a "Programmer", keeping up on at least 5 major frameworks, or do you want to still be paid well, but doing "boring" IT work? That's the fundamental difference between Bleeding-Edge programmers, and normal IT workers. Both are equally needed.
If your interest is software development or other applicable specializations in IT, you may want to consider contributing to an open source project. (I would recommend Google Summer of Code, but unfortunately the deadline just passed.)
Being able to point to patches looks good when applying for a job because it provides a lot of context. Beyond showing that you're proficient in your language of choice, it also demonstrates familiarity with software engineering methodology, demonstrates that you can get up to speed quickly on a large code base, and (especially for a project with a lot of contributors) shows that you can work effectively in a team.
Also take some time to learn the wide variety of tools used in software development:
Ultimately, I think the best way to get your foot in the door is to show both that you're knowledgeable, and that you know how to find the answers you don't have on your own. These are skills that employers are desperately searching for, and they'll serve you well.
I thought it was a knockout win for the internship until Laurence got his post in. I really appreciate the different perspectives!
There was something else I didn't mention, which was that I already have the Hale Pilihonua project to work on over the summer. On top of that, I am still debating between the internship or my own project (possibly with some other people). Of course I could do it all but I want some semblance of a life away from the computer :)
Now I'm curious. On top of a 40 hour work week, how much time do you guys spend programming and working on personal projects?
For the best of the best (top 5% in open source), it goes beyond passion, and is entering into the realm of obsession. Just saying. Nobody says you need to be operating at that level, and from personal experience in Silicon Valley, I would recommend against it.
I used to live, think, and breathe Coding and Tech Hacking in my younger days, and had housemates in Sunnyvale that were like-minded. It was a great time in the dot com days, and it was amazing some of the crazy sh.. stuff we worked on in our garage. :-)
As I program for a living, most of my free time (maybe 15 hours/week plus an occasional weekend) is spent on hardware hacking. Hicapacity.org is starting up a series on Arduino devices, which is a good way to get your hands dirty with firmware coding as well as low-level circuits, and I'll occasionally stop by to check 'em out if my schedule can manage it.
While it helps to gain guidance from others, ultimately, you need to find a project that truly interests you -- and when you do, it'll turn into a rewarding project of passion. Charles Nutter (of JRuby fame) and Miguel de Icaza (of Mono/Moonlight fame) started their projects as hobbies, and now they're irreplacable industry leaders in their niche spaces.
David, I'm with Laurence. An internship is really great for experience. There is nothing like real world experience. However, I would not do it with a place you are not interested in or has antiquated technology. I would find a place that interests you and I would work for free if you have to.
Also doing something for an open source project would be great, again, if you are passionate about open source and about the technology.
So, try to work with people. Don't waste your time with stuff you are not interested in. You are young and can still make that choice. :)
Laurence, you still sound like you are geeking out. Your recommendations about life are spot on! Sleeping under your desk gets old no mater how fun it seems at the time.
I would would concur on doing something you are passionate about. I would work with technology that is inline with what your interests are (troubleshooting windows 2000 or XP boxes for local law firms is probably not the best bet if your interest is in development, unless you need the income)
If you work for a company, yes they will probably try to "track" you. Internships are an essentially an on-site performance based interview. If you have an entrepreneurial bent that may chaff at bit. If you are worried you will spend a lot of time doing uninteresting, clerical stuff, ask them to be specific on your tasking. If they give a fluffy, vague answer you probably will be. If they can give you a solid answer then they probably have a focused task in mind. The difficulty you will find is unless you know the tools the company uses, it will be difficult for them to spin you up in three months and have you get something meaningful done. If the internship is a year, that is a different story.
Any experience in working with a team will be helpful. I have found the best ideas do not form in a vacuum as they are acid tested and improved by the group. So maybe the answer is the internship and working with some friends at night or weekends. SourceForge is another site where you could become involved on a team. How involved is the project you have in mind?