Life is tough for students. It often seems like the lessons are worthless, and the real world is too disconnected with the toy examples you get to play with in school. Bad programming classes reinforce this idea of learning through toy examples. I've seen more than a few resumes where the software experience is limited to trivial projects done in school alone. Both students and employers realize that this is not enough. Ideally, students are expected to get some industry experience before they enter the job market. This post talks about some of these avenues. This will be a long post, so it is split into parts.
Internships are great at building a resume. Most good internships consist of solving a small subproblem that is directly useful. The employer gets to test the student's skill in a real-life problem. The student gets to see a real problem and apply his understanding to it. Needless to say, rote learning is not rewarded. A solid grasp of concepts and an inquisitive mind are the best thing you can bring. Students might be asked to implement something simple and time-consuming that both tests their skill and frees the remaining developers. Internships are among the best sort of resume building: the student earns money and learns valuable skills. Both sides build contacts, and evaluate each other. The average internship lasts 3 months and pays close to your full-time salary.
Startups seem to be a popular resume builder, especially in the West. Depending on how much time is spent in the startup, they can be great opportunities. In a startup, you get together with like-minded people to form a company to solve some problem. Everything from the idea to the implementation must be done in-house. This is perfect for small teams of highly capable individuals. Web-based startups were quite popular a few years ago. Making a website is easy especially if it is tuned to a specific need. Unlike internships, the average startup takes a lot of time and effort. It is more risky in terms of payoff as well. Your resume does not take a big hit if your company folds: startups are inherently risky, and everyone understands this. Depending on the problem you tackle and how far you get into it, it can have a wide range of impact on your resume. At worst, it still shows initiative and drive. You learn a lot of top-level issues that are generally not made available to junior employees. Finally, you get to solve a problem from beginning to end. That said, startups take a lot of effort and time. It can easily impact your academic career if you aren't careful. Finally, your networking options are limited compared to students doing internships.
A simple alternative to a full-fledged startup might be a simple website demonstrating an idea. These work best if the idea needs the long tail of audience for the best impact. Say you've developed a new way for people to pick the best commute times. You buy a domain ($8), some space ($30?), and put up a website showing off your idea. People use it if they find it useful. You get the satisfaction of having made a real product, even one that is simple and small. You could try monetizing it with Google Ads or similar services. If you find a lot of people using your website, you could turn it into a startup. If there's no traffic, at least you have a working product and a better idea of the work behind a real service. The time you put in depends largely, but shouldn't be more than three months. The payoff is very limited: you're unlikely to make much money. Networking opportunities vary, but the website lives on as a proof of what you can accomplish all by yourself. The biggest payoff is actually making a useful product and learning the entire process, even at a tiny level.
The next post will consist of options like software development that you can do yourself, and why unpaid internships are a bad idea.