I'm 19 and I need advice
I loved the process. The problem solving, the designing of the interface, the whole thing was just extremely fun. After that I started learning vb.net and rewrote the whole program. It still needs a lot of work and I am now learning c# and planning on rewriting it again. This whole thing has inspired me to become a developer. Technology and business was something I always enjoyed, I've been reading Gizmodo and TechCrunch for a while now, but now I see the creative process and analytical skills that software developers use, and I really want to do this as a career.
I have been reading Hacker News and talking to people who work in the field as to what it is that I should be doing now, and the general consensus is to just go out and do something. While this is something I would love to do, (I have a ton of ideas I would like to work on) and on some level I feel like I need to do it, (i need to make some money, nothing major more like 1000 a month, and I want to keep motivated to keep learning) I run into two main problems:
1) I do not have knowledge required to execute my ideas. I have been programming for only about 6 months, (at most, depending on what you consider programming.), and the languages that I know are limited to vb.net and c#. These are not exactly high level languages themselves, and my knowledge of them is mediocre at best. I don't have the knowledge to execute any of the ideas I have.
2) I do not have any friends who share this particular interest. I don't know any code gurus or anyone I can rely on for advice or as a co founder, and I have no way of meeting anyone who would fit into that category. And if I did meet someone, I don't know enough to be able to tell if they where actually good or just better than me.
I have the opportunity to switch to Columbia University's engineering program on a 3 - 2 program with my college. Which means I do 3 years at my college, and will major in math and get a degree in mathematics, and then do two years in Columbia and get a CS degree from there. I feel like this would solve both my problems, but it will take 4 more years of school, and I will have to pay Columbia tuition.
I really want to start something but I feel like I can't. I've seen other people ask this before on Hacker news and most of the responses are "Just do it anyways." but that is really not helpfu in any way.
I was wondering if you can please give me advice on what to do. Thank you very much
30 comments
[ 3.4 ms ] story [ 79.5 ms ] thread1. Hackers learn by doing. If you enjoy tackling problems you're 3/4 of the way there. If you have ideas, you're 3/4 of the way there. Combining those two will fill in the other blanks for you. What language you use would depend on the problem space. When you pick a problem, you could always poll here for suggestions.
2. Don't worry if they're better or worse than you, just seek out people who love doing it. They'll eclipse everyone else in short order anyway.
My only add on advice is I would assume you have more college options than what you've stated. If you do like programming, you really can't go wrong at this point in history with a degree in it. I would look for less time consuming options.
Seriously, start your new life today. Pick a problem and start hacking away at it. Start hacking away at college options and start seeking out hacker meetups (you'll have plenty of options in NY).
Above all, enjoy it. Good luck.
Not only are these very good high level languages but there is lots of well paying and reasonably easy to get work around for competent users.
You sound a little overwhelmed which is normal, confidence is only going to come with experience. Whether or not you decide to study formally, write a lot of different code in your own time.
Imagine big problems, then break them down into smaller simpler problems that you can actually solve. Building Facebook must feel like an impossible task right now, but I bet you could build a database to store a list of friends. The more you do this the more you'll find 'big' problems are suddenly easier to understand.
Practical advice? If you are working in C# get a copy of ReSharper. It is transformative :)
Good Luck.
On the recommend of my first mentor, the second programming book I picked up was Code Complete by Steve McConnell. It did a LOT to improve the quality of my code, and enable me to write better code.
Be warned that it is a fairly heavy tome. And it is the kind of book which you want to not just read, but to actually absorb into your programming and thinking habits. But if you have the discipline to actually do it, I can't recommend it highly enough.
(oh, yeah, you might as well learn the example language, which I think is C++ in the second edition. It will do you good to be able to read more than one language, even if your writing skills are focused on one.)
I went there as an undergrad and learned much about computer science, as well as how to connect with smart students, how to find mentors, advanced engineering research, and more.
And best of all, the friendships you can make at an excellent, intense, diverse school can be a lifelong treasure.
Some suggestions for you:
* Find a community based in your interests. You'll find VB and C# communities around the web, and any number of IRC channels (look at irc.freenode.net - most development-oriented projects end up there). Find a channel and idle in it. Soak up tidbits of knowledge. Try to answer others' questions. Just participate in a community of developers, and you'll find yourself being spurred along.
* Find an open source project that interests you, and try your hand at contributing. Fix a bug, provide art resources, something to connect you to the project. There are lots and lots of people working on really neat things that could use help, and there's no better way to learn than to do.
* Build lots of toys. An apprentice doesn't end up building a cathedral his first year in the trade. Small projects - like your dad's need - are a wonderful way to practice. Each project will expose you to some new concept, and help you learn some new technique.
* Don't expect a CS degree to teach you about programming. CS is just that - the science of computers. You'll learn algorithms, compiler design, how processors work, and all sorts of stuff like that, but any actual development experience will be incidental, more likely than not. That's fine, as long as you realize that a CS degree is not a trade degree. It will augment your prowess as a developer, but it will not immediately make you one. That's up to you to cultivate.
* Don't expect to support yourself with it financially for a little while yet. I don't want to be discouraging, but once you enter into the business end of development, standards and expectations get much higher, and it can be very crushing if you don't have the tools in your belt yet to deal with them. If you can pick up small jobs here and there, do it, but don't look to make a career out of it with 6 months experience.
* Never stop learning. When you find yourself becoming comfortable, find something new to learn. A colleague of mine held the goal of learning and using a new language or technology stack every year. I've adopted that for myself, and it's wonderfully beneficial (this year is Android development). You will keep yourself exposed to new ideas, and continually widen your vision of the field.
* Just start running with it. An artist only develops their skill by drawing and drawing and drawing and drawing. A runner only develops endurance by running and running and running. A cook by cooking, a pilot by flying. There is no better teacher than experience. Some ideas to start yourself out might be an address book, an RSS reader, or a music player. Try your hand at a web application. Pick up a scripting language, like Ruby, Python, or Lua (you can use Lua to script .NET apps, so perhaps it's a good fit!). All you have to do is start somewhere and start doing it. You've started that with your dad's project - just keep it up now. You don't get to revolutionize the world on your second project ever, and that's okay. Your second project is a stepping stone to your eventual world-dominance app.
Good luck with it!
I ran in to something similar with web development (PHP, apache, mysql, and perl) and felt overwhelmed immediately. But, found that it was so much fun I stuck with it and just started small. "Ok, how do you get the data to sort this way?" "What is this md5 thing?" "How do I manage cookies and wtf are they?" etc. etc. etc.
Starting small, reading other peoples' work, take your time, don't get frustrated for more than 5 seconds, and find some online communities that share your interest.
Good luck and don't ever say "I can't" again ;)
tl;dr: A lack of degree will limit future options; learning is easy when you are young and harder when you are older; get your degree now, the world will still be there when you are done; write down your ideas.
As for what to do and how to do it, I would definitely tell you to go ahead and do the 3-2 program with Columbia. Besides the education, the connections you will make will last a lifetime.
I actually work for Columbia and live by the campus, if you want to talk drop me a line. But that aside, NYC has a great tech community with all sorts of programming/developer oriented events going on virtually every week (check out meetup.com).
Most importantly, hold on to that spark that got you interested. It will keep you going when you feel you are banging your head against the wall.
I'm a bit confused on the Columbia thing - if it's 5 years instead of 4 - go for it, education is the best investment you'll ever make. If it means 4 more years after undergrad: just go work, it's probably not worth getting out-of-sync with your age cohort.
My advice is that school is good for lots of things but project experience is not one of them. Please, go sign up at GitHub and make it your new home. It's like Facebook for open source development. Start checking out cool projects (it doesn't matter what language, they are all the same - that's the punchline) and learn to read other people's code. Pretty soon you'll find opportunities to contribute.
You know the easiest way to contribute? Leave positive and encouraging messages thanking developers for their hard work and let them know you're following along.
Next advice: stop reading blogs and spend that time practicing coding. Blogs are interesting but you'll find that your memory retention is less than 10%. Try to limit yourself to checking HN twice a day and otherwise, focus on the task at hand.
Final advice: make sure that you have a life. The best coders are interesting people with diverse interests. Develop an appreciation of music and try to expand your artistic whims. Get a camera, travel, read fiction, take pictures, travel more, write fiction.
Take chances. Get the guy. Get the girl. Get both at the same time. Don't be afraid and always try to listen twice as often as you speak.
Start looking into summer internships. Good way to establish contacts, find mentors, and get a guided introduction to the field.
Take a look at Hartl's Ruby on Rails tutorial. The book is free, online, and walks you through the stages of building a simple twitter-like client. It's amazing the things you can do with high-level tools these days. There are some good books on Python as well. I recommend O'Reilly's Head First series to my friends who are considering getting into programming.
Start small, bang out code, even if it's just following a book. The act of writing code seeps into your muscle memory and it gets easier and easier, until you start expanding your skills and then it gets easier and harder both at the same time.
Your first efforts are going to seem amateurish and trivial. Don't let that discourage you. With practice you'll only get better and the feeling of creating something with your own mind and hands is awesome.
I fell into programming by accident at about 21, and I remember what it was like, it's much as you described. Fun times!
All the advice here is good, but nobody has recommended you read "The Pragmatic Programmer", which I found to be a bit enlightening. I still go back to it years later to read and ponder.
Good luck! You sound like you wont need it. It's a damn good career for those who enjoy it and are willing to put in some effort.
EDIT: I never did a CS degree, but considered doing it many times (if work dried up, it never did). I believe though that the people you meet and work with is a major part of doing a degree, so that'd be why I would go. I get to work with good people anyway. This article was posted on HN recently and I think is relevant:
http://sheddingbikes.com/posts/1275258018.html
I admit there are CS-type stuff I can't do (but I know where and who to ask) because I never did a degree. Saying that though, I have worked with people who have had CS degrees and couldn't code themselves out of a paper bag. If I were to go back in time to when I was your age, I'd do the degree, though.
I didn't realize how fast responses will come in.
I am now currently looking for conveniently located Hacker Space (preferably in queens if anyone knows of any), and for an Open Source project to help out on. Plus I now have several books to look up and websites to join.
My email address is chazup@gmail.com. Weird because it is in my profile
Instead of going to Columbia and racking up a huge student loan debt, seek out a startup or open source project where you can be an apprentice to some masters who have a verifiable track record (majority of professors are lousy programmers if they do any at all). And never stop learning and seeking out ever better masters.
My point is, if you bite hard enough, your education doesn't matter.
It makes a huge difference in how people perceive you and it's also reflected in your speech patterns and your speaking ability. This in turns affects how people perceive you face to face. Poor verbal communication can make even the best resume useless.