ATTN: CODE DUDES (men and women are dudes in this case). If you were a young twenty-something starting out wanting to be a programmer/coder, and you didn't want to take the path of college, what would you do? What would be your plan?
write code, read other folk's code, write more code, read about coding, write more code, read about hardware, write even more code, contribute to open-source projects (not just code), embrace math, perhaps learn a(nother) musical instrument, and reconsider college avoidance... - Aloof Schipperke
that's the short list... - Aloof Schipperke
Thanks. I'll take a longer list if you find time. Also, any suggestions on specifics that could lead to employment. - Eric @ CS Techcast
I need to thing this out, but I'm at young twenty-something, who is a professional programmer that didn't really take the college path (I attended but only for 1.5 semesters, and my official GPA is 0.85). I think Kevin's list is a good starter, but I need to think it through. - OCoG of FF, Jimminy
Thanks for the consideration. - Eric @ CS Techcast
** I've been thinking about this, and let me preface it by saying I've got a little lucky in stumbling on this community while it was still extremely active. Pretty much all of my work has come out of my networking here. But there are some general things, that I think can help. **1) If you're not going to follow the general path – and there are great reasons for not – you need to know and understand that you will be at a disadvantage, from a general hiring perspective. But in some ways, you have advantages, being to iterate and learn more quickly and possibly jump into the job market more quickly. So take that into consideration. 2) Focus on learning, and being really good at something. Figure out what you want to work on, and focus on a language and framework that seems to be commonly used for that. Never stop learning. (See Kevin's Comment.) 3) Find a regular job, even if it's a job you don't necessarily like. Look at it as a learning opportunity, in fact this is an important lesson for any job, you should ask what you can learn from that position. As long as it makes your life survivable, food on the plate at least for most meals, and pays all the other bills. You might not be able to afford a lot, but prioritize learning and surviving. You're young, and have plenty of time. 3) When you aren't working, devote most of your time to learning. It doesn't have to be just about programming. Without school, you miss out on CS/Math theory and Humanities/History, and you should round yourself out on these. 4) Find people in the industry who can help you learn. This isn't always easy, but when I was much younger I relied on places like Daniweb, and today I'd look into Reddit (r/programming & r/compsci, among others), Hacker News, and find people there to learn from. If you see an interesting article, or technique, and want to find out more just ask questions. 5) Once you have a decent grasp, start finding people who want to learn, and help them too. Some say you should charge for help, if you're writing code, but I always looked at it as a free problem that I could learn from. Coming up with your own, that isn't overly generic is hard. Finding small problems that people are asking for help with is a great way to get practical experience, and also helps to build a small network. 6) Be stubborn. Don't give up easily, this isn't an easy job and is often one that frustrates you with yourself, and makes you feel stupid. Take a break; go spend time with family or friends, or some other distraction. The problem might solve itself. The same applies when you're looking for a job; don't be annoyingly stubborn, but constantly prod your contacts and jobs. 7) Keep your eyes open, you never know when a fun or interesting idea will pop up. You also never know who will have the opportunities for you to work on, so just be open to everything. ** Figure those 7 things out, and focus on being really fucking good at what you do, whatever it is. And that applies to all the jobs, even the ones that are temporary. Also try never to feel comfortable, comfort is the first sign of complacency and that leads to mediocrity. You're at a disadvantage already, starting out, so you don't want to add another possible mark against you. - OCoG of FF, Jimminy
I think the biggest thing I'd add for learning is choose a project for yourself that is interesting and break it into tiny pieces so that you can learn and have specific questions to go look up, things to try, etc. towards a concrete goal because it can be really overwhelming and difficult to transition from book learning or tutorials to putting software together, even just setting up an environment, collaborating with others, etc. Don't give up because it's difficult...and I don't just mean that breaking into an industry or culture is difficult, but writing code can be difficult and you have to be willing to write bad code, break things, and start over and not beat yourself up too much. Look for mentorship opportunities wherever they are. Figure out your learning style--are you a great autodidact, do you like textbook learning, are you great at hacking at things and pulling bigger lessons out, do you want a more structured curriculum or community--and let yourself gravitate towards that without judging yourself or comparing yourself to others. You have to let yourself be willing to struggle but that, too, can be an acquired skill. I personally feel pretty strongly about not paying for boot camps or things like that (mostly because I find their curriculum lacking compared to what is freely available and I'm not into for-profit education but everyone needs to find their own path). As you create projects, you'll learn and build a portfolio and be able to evaluate ways to improve your earlier work and I think that's really important for employment. I don't know if the world is changing, but everywhere I've worked has had plenty of developers without a university education, if not a clear majority. Sure, most of them started earlier, but they also had fewer resources available to them so if you're passionate and dedicated it probably balances out. - joey - team everyone
As for projects that will generate revenue - that's the age-old problem. Perhaps a trick from the artist community - build a portfolio of work. This is ultimately what a hiring manager or customer needs to see - some evidence a person has the ability to deliver something of value (some also want interpersonal skills, but not always required :-). This is one of the reasons I mentioned open-source projects - it's easy to participate and younger folks are more likely to get some coaching if they try to submit less-than-stellar patches.... Perhaps they should also reach into their network (they *do* have network, yes?) - perhaps smaller companies need some modest needs. It was easier to do this 30 years ago - it's how I got into the biz. Not as easy these days... This is an important point for the 20-somethings out there (said a get-off-my-lawn guy). - Aloof Schipperke
Thank you! - Eric @ CS Techcast
I've also think Kevin's suggestion is good. And moreover in regards to contributing to an open source project, pick one that really interests you and find a good mentor. For example, if you're interested in the linux kernel, there are seasoned kernel hackers are more than willing to be mentors; just find one on http://kernelnewbies.org. - imabonehead