Student Hackers: DO NOT Intern...BUILD.
aashaykumar.com
aashaykumar.com
There is a huge difference between that. A good job will have some nice engineers there, that might be willing to help you out and push you to learn how to code correctly.
This is the main reason to intern.
This is critically important. In the past few months, I've done a lot of networking with the tech entrepreneurs in my city. After speaking to these guys, I became aware of problems I didn't even know existed. It turns out that corporate South Africa (and probably the world over) have a massive number of problems they need solved. For example: fleet management, business reports, operations (like using Voronoi diagrams to see which restaurant chain 'dominates' an area). This surprised me because as someone without exposure to a real business environment, I couldn't conceive why people would actually buy reports products and resource planning software. If you asked almost any CS major to explain what a 'enterprise resource planning application' should do I can quite safely bet that they won't be able to accurately describe what problems it addresses and how it solves them (assuming the grad has no first-hand experience in dealing with this kind of problem).
I realised how as an individual I have been exposed to mainly B2C companies. Now, having been introduced to real, profitable B2B companies, I see that the domain of problems to solve and businesses to build is huge. 'Get out of the building' really summarises this concept well. Get exposure to real business problems and you will find someone who has an unsolved problem that you can attack. A nice example of this (not a business problem but a real one nonetheless) is the other day I had to collect my calculus test. There were 1000+ people contending with each other to find their paper in 50 semi-sorted piles. It was chaotic. I know that there is a better way to do this (fast and efficient distribution of unique papers to 1000+ people) - I'm currently thinking about how to solve this problem. The takeaway idea here is that there are tons and tons of problems out there and exposure to the real world will give you the opportunity to see these problems and begin solving them.
That sounds incredibly cool. Would you mind going into more detail?
PS: Divide 1000 papers into stacks of 1000 and give to 10 people to subdivide into stacks of 100, which divide between themselves and 9 other people. Let all those people further subdivide the sheets till everyone has someones sheet. Put out an alphabetical list of those 1000 people where they can write some way to contact them. Or let them write their email adress/phone number on the paper next time you have a test. This way, everyone has to deliver 1 paper to one other person and receives 1 paper. There's most likely a better solution, but I can't think of one right now.
Thank you. I stated this as well but was missed by so many 'readers', glad you mentioned it here!
A lot of the stuff I built in my spare time as I was learning to code failed. Afterwards I questioned why and took that knowledge with me. Probably not as much as working with real business problems, but it is not for nought.
I'd bet nearly all of the young'uns in question are NOT spending much of their remaining waking hours building something of their own on their own. Yes, the world doesn't need another to-do list, but there's a zillion other small projects anyone can do with overhead expenses approaching $0. Even if they're doing just a to-do list, then they're doing SOMETHING on their own, learning about building & polishing & documenting & packaging & distributing & advertising & selling & etc., creating a portfolio of personal experiences. So what if it's unoriginal? follow the unoriginal path until it ends, then be somewhere the path is heading and be the first one there with something original.
Programming and entrepreneurship are like being a musician: if you don't do it at every opportunity, if it's not your preferred time-filling activity, if it's not darn near oozing out your pores, you're not one. I'm realizing people don't understand "I want": it's not a vapid expression of desire when pressed for an answer to "what do you want?", it's something you crave & pursue without prompting by others. The author noted that 75% of those saying "I want to be an entrepreneur" were doing absolutely nothing to make it happen, ergo they don't want it.
It's part of being an entrepreneur. You have to keep thinking and keep looking for ideas consciously. It's a cultivated habit.
Money is also an issue. A viable option for students is to try and freelance during one of their summers. You would need to spend some time before the summer trying to drum up a few months worth of work, but this might offer an acceptable compromise: if you're the sole freelancer, you'll have full ownership of the product, you'll learn a tiny bit about being entrepreneurial, and you'll also have spare time to work on your own projects. You might even make more than you would interning (assuming you're a Facebook-caliber intern).
Maybe the best "path" for a student to take is to spend his/her first two summers at a big tech company and a startup, and then spend his/her last summer freelancing and working on personal projects.
Obviously, a student could learn a lot working on a personal project over a summer. That could be a great way to go.
On the other hand, the initial exposure to the operations of a successful company bombards an intern with valuable information. He or she will discover that some things function extremely well and some things don't quite make sense, learn basic business etiquette, learn how things scale, etc. All of this information can be extremely valuable when you're ready to grow your own company.
I'm sick posts telling young people to "DO this, NOT that, or ELSE!" What works for you might not work for someone else. There isn't one path to success. This an extremely limiting view of the world.
Further: I’ve talked to more CS majors who say, “I want to be an entrepreneur” than I care to share...
Then they may be in the wrong program, unless they mean "I want to be a YC alum" or "I want to be a technical co-founder." An "entrepreneur" is someone who deals in business, not just a programmer who doesn't work for anyone else. If that's their goal, they shouldn't be in CS. In the reasonably likely case they do want to be something more specific and technical, hopefully they've thought about it further before committing to such a statement.
1) the vast majority of students would be unable to find a sexy startup to work with and 2) you are vastly undervaluing the benefit of learning best practices and industry standards, which you will get plenty of at a decent-sized company.
Far better (and likely) IMHO to get a job at a (probably medium-sized rather than large) company where you will get to do both new coding as well as code maintenance (learning to read someone else's code is a vastly undervalued skill that you won't learn "building something awesome"), learn as much as possible from their senior engineers, and then start building something cool on the side that isn't a stinking heap of unmaintainable feces like most undergraduate-level code I've ever seen.
If you're a Rock Star Ninja who happens to be able to write quality code straight out of school, good for you, but I think most software developers out there would rather work with someone who's spent a year or two in apprentice mode as low man on some company's totem pole, rather than some hotshot out of school who probably turns up his nose at RDBMS's and Java.
I'd love to take risks and have fun, but when you're in college, looking for good, steady, well-paid, full-time summer employment, it's just not very appealing to take risks with your finances. I'm there right now (although an ECE major, not CS) and I wouldn't trade anything for the paid co-op placement I have right now.
Being an entrepreneur is something that is either your primary ambition, in which case you don't start studying CS, or something that grows out of the ambition to use your skills and knowledge to make something happen.
Studying CS with the ambition to become an entrepreneur seems like it's based on the notion that "that's were the easy money is". In my experience, those kind of people aren't good at either being a maker or an entrepreneur.
I'll say... do an internship but be careful where and with who. Working in a small startup for a handful of months will show you how a company works inside-out, and probably will allow you to do networking with interesting people. Go where you can get a good mentor.
Of course, if you intern in a big-corp just to be a code-monkey it might not be that fruitful (even though you might still learn about 'real life programming' or big architecture).
Where I'm working, I started as a (paid) intern, doing some research and just seemed to stick around. I would occasionally sit in on meetings and training just to see how the other parts of the business worked.
And there are a lot of cool offers and places where you can learn a lot on Madrid (I myself started last week at Vizzuality), yet too many uninterested students that end up selling their souls to Indra/Everis/Accenture :(
But I also did two internships, one at a big, one at a small company. They were incredibly valuable : I learned about real-world (unit) testing, code reviews (by people more competent than me), working with a big infrastructure, having deadlines, etc... Those are all skills that are really useful for any programmer and they're helping me now that I'm working on a project that I hope will become a startup.
As Adam Pritzker from GA said, "The cost of building technology is dropping so low that people can actually afford to take the risk to learn by doing something that, in our minds, is a much more effective way to learn than anything else."
"Working for someone else is not all bad, even if building your own thing is your ultimate goal." -Kyllo
I am not saying it's bad at all! It's perfectly fine to work for someone else but if you are entrepreneurial-minded, it's best to intern at either a startup or a completely unrelated field to what you are used to, SO that you may be able to find an area in that industry where software/hardware can optimize it.
"There is a huge difference between that. A good job will have some nice engineers there, that might be willing to help you out and push you to learn how to code correctly." -stevoo
So the main reason to intern is to just become a better coder? Doubtful. Just to be completely blunt, the main reason college students intern is to have a secure job after graduation.
"Interning was a great start for me and helped me meet a ton of people. The difference was I interned at a startup." -blakeshall
Yeah I explicitly say this in my post! Working for a startup is completely reasonable as you will hopefully be able to directly help with the companies' organic idea.
"it's just not very appealing to take risks with your finances" -iansinke
There is very little risk taking with finances in the sense that you really don't have to spend anything to build. What you are losing is the money that COULD be made doing a summer internship. Being an entrepreneur is risky, though, so this risk will have to be taken at some point if you want to exercise that desire, right? Better now in college than after where you really will be taking risks with your finances (living expenses while trying to have a startup).
My Takeaway: This post should be titled differently because it seems that people are just reading the title and not the actual post.
I also may have not taken into account the money aspect as much (I promise I am not a snob)...I guess if money is an issue and you need to work, then interning is fine but at least do it at a company that will help to enhance your entrepreneurial mind! I actually do make explicit mention that working elsewhere IS reasonable.
There are wide variations in company culture and work habits and my advice is to not be immediately turned on or off simply by the size or life stage of a company. You need to ask much more in depth questions to understand if the company is a good fit for what you're looking for at a particular stage in your life.
False. 100%, completely and entirely, false.
School is frequently grounded in theory. More often than not, Internships are on actual products. Being able to traverse/understand source code and build productively into an existing product is an invaluable skill as an engineer.
Not only that, but it's during the internships that you meet all the people from outside of your collegiate bubble and where you FIND the people you want to build with. Not only that, but a fair amount of (us) students are consumed by loans, and any sum of pocket change (though the thousands of dollars you make at a place like Facebook or Google is in no way trivial) is invaluable. Not to mention that you get that building experience at the same time.
And yes, internships help you get a job. There is nothing, NOTHING AT ALL undignified about doing that.
The mindset of building for the sake of building is great! No qualms there. I think your view on internships and their value to students is a bit oversimplified.
HOWEVER, I make it clear in my post that I am only referring to 'entrepreneurial-minded' CS majors. These are students who presumably want to have their own startup or simply enjoy taking an organic idea and building upon it. Doing an internship at a large engineering company, in most cases, is not going to help/encourage you to be entrepreneurial spirited and do this. At least not as much trying to build something on your own. Another option that I present is to work at a company that is completely unrelated to your field and see if there is room in which software and/or hardware can help optimize that area.
There's a lot that's good about your advice and intention, but don't forget that large companies tend to be large because they're extremely good at what they do. Interning at a few companies (diversity is good) can teach you what "being good" looks like in a way reading a blog post can not, because you learn by doing and seeing.
[1] (A gross approximation of his message was essentially that with proper Maoist thought, everything else would righteously fall into place.. but then it turns out that enthusiasm alone doesn't give you the skills to make proper steel (see http://en.wikipedia.org/wiki/Great_Leap_Forward)).
I don't agree with the large companies are large because they work well hypothesis either. It wouldn't cover disruptive startups gobbling up larger companies market share, nor would it cover companies which are small, but very good at what they are doing. Google did search better than Yahoo, and it dethroned it. Was Yahoo larger than Google when Google started out? Yes. Was it better? Not neccesairily. And no matter how good your flight checking app is, you'll never become as large as Google, which doesn't mean you're doing a worse job than them.
Also, size breeds inefficiency because it averages. If your a 2 person startup, and one of you has no clue at all, you'll fail. If it's a 2000 people corporation, incompetence can and will slip through the pores (Else I honestly can't explain how some programmers got their jobs). The same way a large company can teach you what "being good" looks like, it can also teach you what "being bad" looks like, but they believe it's "being good". Organisational size is no guarantee for quality, the same way popularity isn't. Else Java would be the best language.
There's a lot more to entrepreneurship than just starting a company, it's more a way of thinking. So you can work for a BigCo with ambitions of doing your own thing in the future and learn as much as you can about how BigCo operates. What seems to work, what doesn't, why are they doing X this way?
In fact in most industries , successful entrepreneurs are very often those who have experience in the industry as an employee. They know how to business works, so they know what to optimise and what mistakes to avoid.
This summer I plan to work with a buddy of mine on my CS course. We have an idea in mind that I've already been working on (www.housequest.co.uk), but really we just want to work on something for three months and try to create something useful.
In the end, I'd say it's a good idea to obtain an internship for one of your summers in university. Although you don't get much time to work on other cool stuff, I believe you'll benefit from it in other ways. It's a good fall back plan for when you leave university, as past experience accounts for a lot. Secondly, you learn a lot. I was building iOS apps before my internship, but building them professionally was completely different. I was doing silly things. Lastly, it's good for networking with professionals.
The other summers you can then use to build even better software.
I know very few CS majors who can decide how entrepreneurial when they are that young. Everyone is pretty much entrepreneurial when you are in college - you want to create the next facebook or send the next rocket to space, but actually having the guts to do that is another story.
When graph search came out, he said he had worked on the Graph Search Project but the specific part that he had worked on was not implemented at all. How disappointing, huh?
Not disappointing at all. He did build something and in the process he most likely learned a myriad of intangible skills (project management, working with people, social skills, communication skills, etc) Those lessons are invaluable to the real business world.
Many of the skills required in today's jobs (not just the bubble of SV we all sit in here at HN) are learned at big companies, doing nothing but working with other people. Communication skills are often misunderstood and often seen as secondary to technical skills. As many experienced will attest to, many of today's software errors aren't a result of poor technical ability but rather poor communication. No offense to the OP, but his writing skills are clearly not great. In the land of startups, I'd be scared as an investor/customer (any stakeholder for that matter) trying to properly communicate with him.
EDIT: Also forgot to add this: "Professional networks were important to the success of their current businesses for 73 percent of the entrepreneurs. In comparison, 62 percent felt the same way about personal networks."[1] That's something you will definitely get in a big company. [1]http://www.kauffman.org/research-and-policy/the-anatomy-of-a...
However, nearing the end of July I stumbled into my first contract job after helping out in #android-dev on Freenode. I'm now almost a year out of high school, still indecisive as to whether I'm going to college in the Fall (the same things that prevented me from interning at GitHub prevented me from going to college last year), and I am gradually building up my portfolio. Every recruiter I've talked to over the past few months have made a point to note how filled-out my resume is for someone my age. I guess my point is that I probably would not have been in that chat room at that time had I been interning in California.
"Building" over the summer would have been really fun, and the benefits of a 9-5 was that when I got home I worked on some of my projects which I had ignored during the school year.
Finding a summer job (with good pay) is easy here. If you are on your final year of bachelors or first year of masters then not getting a summer job is literally impossible if you actually want one (ie. apply). Companies will even take you in with rubbish grades if you seem ok, just to test you for two months in order to see if you might be suitable for the company once you graduate.
Interning for a tech company gave me an invaluable opportunity to network and learn about business strategy, workflow, etc.
I think young programmers need to learn through experience how a successful company operates before they try to start one on their own.
Big companies offer pretty outstanding pay when you're interning, helping you pay for college.
I do agree that building is something which is invaluable; however while in college before you've really been proven and shown off development skills to work at a startup or have funds to work on a new idea you're really forced into a corner for working on side things in your spare time.
You won't be able to do this later in life while time to build you'll have plenty.