How to start working on side projects
medium.com
medium.com
I mean, this is the thing you're doing for you, and that means it's something that you're personally interested in (er, right?), and personal interest is a huge advantage...
Seriously, the idea that someone would need advice on how to "start working on a side project" seems almost bizarre.... Lots of personal projects don't pan out, or founder due to lack of time or whatever (which is fine, push over the humps when you can, but let things flow)—but starting them is easy.
Well it isn't bizarre in context right? There are lots of people who have spent the first 18 - 20 years of their life what to spend their time on. A significant fraction of them have never even begun to work on things that weren't "part of the plan" as it were. So coming up with a side project is a daunting task.
The best advice is simply do something you haven't done before, code a compiler, code an interpreter, code up a javascript library, design a web site, take pictures of every bird in your back yard, dig up some dirt and sequence the DNA of things you find there, plant a garden, take an art class at the local community center, volunteer to sort food donations at a food bank, pretty much anything you haven't done before try it.
That way you can discover things you are really interested in, and things you really aren't interested in. Since theses experiments are things you never have to do again if you don't like them, go in with the attitude of "Hey I can tough it through anything once, because it's only once."
Its pretty simple advice and I am always amazed when someone hasn't thought of it already, but I have met a number of people who have graduated from college and then paniced with no idea what to do because their 'plan' ran out.
Once you realize that you can investigate whatever you want, the world opens up for exploration.
However, the article is mostly about finishing projects, which is harder to do: e.g., staying motivated, finding time, not getting too distracted with other projects that nothing ever lands.
If you're not passionate enough about programming to have a side project (or six), please just get out of the profession. Or maybe become a mediocre manager (if you think you're done learning when you leave school behind, you'll have no choice).
I agree that high-technology businesses were the only organizations that maintained (or even grew) employment during the recession but ... that doesn't mean you deserve one of those jobs. If you love it enough to make it your hobby, you can earn a good living at software development without being a flash-in-the-pan.
Passion outside of work is neither necessary nor sufficient.
[I, personally, am of the "passion" sort. I find that this attribute can be both an (obvious) help but oddly, also sometimes a hindrance, as I can get too personally involved in things, and sometimes that clouds my judgment.]
The one type of candidate that I will almost always turn down when interviewing is the one that can't answer the simple question of "Tell me a story about something you enjoy and why. It could be a project you worked on, an outside hobby, anything." We all have our different strengths and interests, but the people I've found that I work with the best can talk about something they enjoy.
As for myself, I've spent many years working in the industry. Sometimes I take on side projects just to noodle around, sometimes I take on consulting projects to learn something new (or help out a friend). Given my drothers, I lean towards non-programming pursuits these days -- cooking, gardening, mountain biking. In their own way, all stimulating and, at the same time, allow my mind to relax away from the computer.
Of course. However I think this particular thread is about programmers who are passionate about programming, and how that relates to their ability as programmers... :]
[AFAICT, passion in general is good for mental health, and I'd even wager it's correlated with intelligence. It's indeed a good thing to have, but passion in general won't have quite the same effect on one's profession as passion about that thing in particular will have...]
Beware of turning your passionate hobby into your job. It will become a chore. Also, you won't have a hobby anymore that keeps you from burning out.
(Source: Personal experience. I am an academic.)
YMMV... :]
This often doesn't seem to happen with programming, perhaps simply because it's a fairly broad field.
He could have taken his masters program as his full time hobby. There is a reason he went to masters. He loved what he was studying. It only makes sense for all projects for him to work on are ones that are for the masters program. caveat: I believe this holds more-so for Ph.D. people than masters, as masters is still half class based. However, masters students have research projects that take up the other half of their time.
Or, he could have had consistently heavy course loads. The reason that many famous entrepreneurs drop out is because they do not have enough time to do both school and their amazing side project (note, their one amazing side project). This is rare.
Have you considered that >90% of CS graduates are not going to be superstar programmers? At my University, I do not know of any other students doing their own side projects, outside of research projects with professors (this isn't to say I'm the only one, but given what I know, I'd be willing to bet there are fewer than 5 doing something cool).
One of my master theories is that I do need an online presence codewise and blogwise to demonstrate my competence and my passion for building cool stuff. However, to start building projects on GitHub or fixing bugs, you need a pretty descent level of competence. Universities such as mine first immerse you in Java, teach some theoretical CS (algorithms, ...), then have a class on various programming languages then have the upper division courses on C or C++. If you notice, most super cool open source projects these days revolve around C++ at a level that we don't learn, JavaScript, a language that is booming on popularity now but is only touched on in Universities, and Python, which is used in some Universities (those fortunate people) instead of Java. I doubt JavaScript will be seriously taught in Universities for many years. Maybe the Ivy's will have it down, but not everybody goes there. From this we can draw the conclusion that most students wont have the competence to commit to open source projects unless they go off and seriously learn on their own time. Students like that may only build simple projects for themselves and not put it up for show (it's so simple, surely somebody has better functionality somewhere, right?). Why blog? Students like that have nothing profound to talk about.
One of my issues with the frequenters of hacker news is that every programmer expects everybody else to be at least as competent as they are. Not everybody has as high of a drive to code nonstop. I don't. After classes, after oodles of homework and self-teaching the 90% they didn't teach me in class, I want to read books. I enjoy reading. I enjoy hanging out with my friends.
I, unlike most of my fellow students, have realized that dream jobs have ridiculous expectations. I can see why, too: if everybody wants the job, and they are doing something legitimately cool, then it's only reasonable they should have the pick of the litter. However, is your job a dream job? I hate seeing every single application say "two years of experience required" or five. I've been fortunate enough to get internships for the past two summers. Is every graduate expected to take some bullshit big biz job for 2 years, learning very little and becoming embittered by the industry? This is worthless. Some enjoy it, I don't. It'd be better for small companies to take on a promising looking graduate at a slightly less pay and have them expand their knowledge at the company.
Yes, I deserve your job. I'm more than competent enough for it. If I don't have the knowledge you need now, I would be able to learn it in depth within two weeks (give me the full days to learn it). I love what I'm doing, but I love other things too. Having other hobbies besides coding is healthy. Just because you know all the current buzzwords (node, django, backbone, Go, ?) does not mean you are a better coder and does not mean another person without this knowledge is worthless.
So when do you graduate? Where do you want to live when you're done with college? What kind of position do you want? So how about zero years of experience for someone that's proven to be intellectually curious? What do you want your life to look like in ten years? You've piqued my interest ... care to talk?
Surely you realize that the point of these questions is to try to weed out that 90% as much as possible. A potential superstar coming out of college doesn't cost that much more in salary, so you want to get one if you can (another way to put it: hiring mediocre programmers won't save you money overall). You may see a bias on hacker news because people here are disproportionately working on (subjectively) interesting projects, so they think they can get potential superstars on board.
You may like this pg essay if you haven't read it: http://www.paulgraham.com/mit.html
Btw, I'd encourage you to apply to those jobs anyway with a candid cover letter. You made a good impression here. But your concerns here are also a reason to take networking seriously and go to conferences, departmental seminars, local user groups etc. You have to know people before they can know you're good (and yes, I'm aware of the inappropriatness of replying to your comment with "immerse yourself EVEN MORE!" The trick is to do it strategically so it's not any more time overall).
Edit: "these questions" = asking about side projects
"How to" articles are an easy way to procrastinate, unless you're legitimately stuck on something.
One of the biggest personal-project (hate the name "side project" for some reason) killers I've encountered is simple fear: of failure, of not being good enough, etc.
I try (but don't always succeed) to keep the thought that it's OK if my projects end up sucking, if they don't take the world by storm, if my interfaces aren't general enough and my algorithms inefficient. I still try to do the best job I can, simply for reasons of personal pride, but there's tons of stuff that doesn't actually matter all that much, and a lot more that can be fixed up after the fact. Just getting something is hugely important when you're operating without the sort of support network you have in a job.
1) Focus on one project at a time. Resist the urge to get sidetracked.
2) Feel free to take a break from your project if you start to lose motivation.
3) Only change the scope of a project to reduce it. If you have more good ideas put them on a sheet of paper to implement after you finish your project.
These 3 tips will turn you from starter to a finisher. I know a lot of developer's that have started tens, perhaps hundreds of side projects and when you ask how many they have finished there is an embarrassing pause and they point to a couple of projects.
Switching from one project to another is fine the first time. Your new idea might be genuinely better. However if you find yourself doing it again and again it's a sign you are a starter and not a finisher. If you end up with nothing to show for your time what is the point of working on these projects in the first place?
- Get into a "serial" mode, i.e. work on a single (small) component at a time, with as few context switches as possible. This can be achived by:
- Breaking your project into small, clearly defined components. This allows you to:
- Pick the component you feel would be fun to work with on this particular day. This should lower the bar for getting started on your project a late sunday morning. If you get stuck or bored, work on some other component.
- Take a walk "All truly great thoughts are conceived while walking" - Nietzsche
Is this common?