If you're a programmer, you might be used to people asking you how easy it is to develop a game, or code up a website. Sometimes they might ask for advice, or ask if you could help them out with an idea they've got. I've experienced it and seen it a fair few times in Facebook groups devoted to computing groups, particularly in the Facebook group for my old society at Keele.
It can be quite common to see posts asking for some student developers or fledgling programmers to work on an idea or a project for a start-up or simmering business idea. Software developers are not alone in this regard. Graphic designers, web designers and photographers suffer from similar queries in their line of work. And the "payment" is usually the same. Experience or exposure.
The problem is, experience and exposure tend not to pay the bills. The Oatmeal comic did a very good representation of this (you can view it here). It's strange, but people tend to genuinely believe they can ask programmers (and graphic designers and photographers) to help them out with a bit of development without offering any remuneration that actually benefits the person carrying out the work. They also seem to grossly underestimate how long a project will take. Sure some projects can be turned around really quickly but the person working on them generally has a reason for doing so. And that reason is usually not experience or exposure.
What experience do you need?
This is a common offer that people will give when trying to solicit services from programmers (and others) where money isn't on the table. That the project is good experience for the person doing it. One I saw recently offered something along the lines of "the experience will be extremely relevant to your course". My response to that was "That's great, you know this how? Have you done this course? Have you taught it?" Of course, the people trying to win you over into doing something tend not to have done your course or taught it. How do you know? Because if they did, they would have the skill set themselves to do what they want you to do for them.
Now don't get me wrong, I'm not saying experience is a bad thing. It isn't. It's a very good thing and you should absolutely acquire it where you can. But let's look at the average computing student. If they're in their third year of university, they probably already have 3 years of experience in programming from their course. Then they'll probably have 2 years experience in computing from college (assuming they did a relevant college course). And then they probably have all of the nights they spent learning in their spare time, playing around with code, toolkits and frameworks, exploring different languages and development environments.
So how much more experience do you need? In essence, you'll be viewed more favourably in industry if you have some out-of-academia experience to go along with your computing degree. But remember, a project you did in your spare time (providing it works and can be seen by someone other than yourself) counts as experience (and counts as out-of-academia experience as well).
So should you accept that someone who wants you to do something for them is prepared to offer you additional experience to put with your current pool of (approximately) 5 years worth? Well...
Experience != money
If you're looking into going freelance, or working for yourself after your studies, then yes, experience and exposure are great. They let you build a portfolio that you can advertise yourself with and build upon to become a great name in your field. But if you are freelancing, or building your own company, how long do you think you'll survive on experience building projects? After all, each project you work on tends to take twice as long as you first thought, how do you factor in your maintenance of that 'free' project if a paying client does come along?
It can be difficult, especially if you're still a student. You might feel that you can't take money for projects because you're not established in your field or because it would be wrong to take money from another person for what is, to you, an easy piece of coding. It's a common thing for coders to feel, I think possibly more so than graphic designers or photographers, that what we do isn't all that complicated, or costly to achieve. Graphics designers often feel the brunt of their trade in costly design software, and photographers definitely feel it in their camera equipment. But for coders, we can often make do on our computers, which these days are practically a commodity in every home (and are perhaps overlooked in the cost of being a programmer), with development environments which are invariably free (at least on student licences or for personal use). So what is the cost of programming then?
Most likely, it's your tuition - the cost of student loans and living costs that come with learning your skill. The tools you use may not cost you much but the knowledge of how to apply them probably did.
But the person really wants some help
Something to remember at all times is that there are plenty of software companies and software consulting companies out there that provide specialist services in software development. So if someone really wants some software built, they can find someone willing to do it. There are businesses out there that specialise in providing bespoke software solutions for small clients. So you need to ask yourself, what is it that's stopping these people from using those services?
Invariably, money is the answer. Established consultants and companies can command a very nice fee for the work they provide. And for someone with a flash idea, it might be a bit out of their price range to take on a development house to do the work for them. But that doesn't mean they can come around and ask students to do the work instead for 'experience' and 'exposure'.
You're providing a service
Another thing to remember, coding is a service. As soon as you produce code for someone else, you have provided them with a service that they couldn't do themselves. If they could do it themselves, why would they need you?
Think about it another way. If you go to be an electrician you spend a lot of time learning the skills of the trade, learning how to safely re-wire buildings and install fresh systems. Once you've completed all that, you get a piece of paper or some certification that says you can now legally and safely perform electrical work. No one would then expect a freshly qualified electrician to provide their skills for free.
Coding is the same. You spend years training and honing your skill set. Why is it fair to then be asked to provide those skills for free? It isn't. It's exploitation of the situation and the mindset of the individual and it is most definitely not fair. You have a skill set that someone else wants to utilise - they should be willing to provide you with something you want in return, be that money or maybe just a couple of pints in the pub, they should be willing to part with something more than just 'experience' (which you already have) and 'exposure' (which you probably don't need).
Too long; didn't read? Well the essence of everything can be summed up like this:
You wouldn't stack shelves at Tesco for free to further their business profits - so why should you program for someone else for free to further their profits?