4 ms·
Ask HN: How do I improve my programming/engineering skills
Ask HN: How do I improve my programming/engineering skills
Hey HN. I've been lurking here for sometime now and have seen similar posts, usually with positive and helpful responses. So decided to see if you guys could help me too.
So a little background about me. I'm 23 years old and been living in Scandinavia for 3 years now.
I'm not one of those guys that have been programming since they started walking. I started programming about 3 years ago when I started Electronic and computer engineering. There I learned Java for 1 year, one course per semester. After that year I found out that a strictly engineering-focused education wasn't for me and that I didn't even like hardware stuff anyway! So I rebooted my bachelor degree in a cross-disciplinary education which included all kinds of topics, ranging from 3D modeling to making sounds in Max/MSP with a lot of focus on academic reports (around 100 pages for one semester, which I hate btw) and user testing, and programming courses sprinkled in-between.
Therein lies the problem, since the education is cross-disciplinary, maybe one third to half of the students aren't very or at all interested in programming and as a result the quality and the challenge of the programming courses have suffered. Since starting that education they have taught ActionScript, C++ and C#, each on it's own semester and no-one is close to proficient in any of them.
I do realize that no-one should be responsible for my education except me, therefore I started learning Python on my own last summer. I've only really played around with it, not doing anything serious with it. Started one or two Django sites, finished neither since I was in over my head wanting to implement very complex ideas. I have made one rather complete script to download Google Docs folders contents and compiling them to LaTeX for my reports, but it's neither very complex or impressive. I'm very interested in web development and want to get better.
I do agree that you learn most my actually doing, actually coding something and I have tried to find open source projects to participate in, but I cant seem to get into any of them due to me not understanding the whole program. Maybe I just haven't found a small enough program to get my feet wet. I'm also not making much head way with Project-Euler either, usually getting stuck on some math stuff. I read a lot of tech and code blogs about webdev, Python and programming to keep upto date.
I tried getting a job at some local startups hoping to get the chance to learn from great coders but, of course, no-one was interested in my underdeveloped skills.
I do like programming and trying to find solutions to problems but I seem to lack both ideas of a manageable size (maybe that's an idea for a web site? Practice programming ideas, ranked by "size" and only provide hints and no solutions.) or the skills to implement those that do pop up in my head...
I look at someone like Kenneth Reitz and I think to myself that I would like to become like him some day but I have no idea how to get there. I also wonder if it is worth it staying in university when so many hackers seem to do fine with out the degree. And I would have take a Master's degree to get anything out of my education since it's so broad.
Does anyone have advice how I can improve myself? Or should I just find another field to try to make it in?
Sorry for the long post and thanks for reading it.
- duiker101 14y agoHack. Side projects, websites, whatever, hack. Start a website, you don't finish it? never mind you learnt something now start something new using something different. You got it right, you just need to keep pushing. The only thing that really pays is experience and to get experience you must try, break, play. Never mind on what, how, why, just keep doing stuff. IMHO university is useless. I did not need it and most of the good developers i know did not need it. The fact is, it takes time. And there is nothing to do. Experience is time converted in skills. To me you really seem to got it right but as i said you just need to keep it up. If you lack ideas(totally normal) think of small problems in your daily routine that could be improved/fixed and do it. Good luck, and don't give up, seriously. When you start getting rewarded for your work this is one of the most emotionally(and maybe even financially) remunerative jobs.
- lurking_lurker 14y agoThanks for the advise!
- manuscreationis 14y agoI think you're generally on the right path, just keep trying. Since you're still getting your feet wet, you should pick a language and stick with it for a little while, but don't stick with it as your only language forever. Too many people make the mistake of getting comfortable with one technology, and deeming themselves "done" learning anything else. Start with Python, or Ruby, or Javascript. Something simple. If you're a fan of Windows, take a look at C# (which you say you've had a semester of already). Start S M A L L. You say you try to build things that are over your head. Don't do that. Build things that are just about your level, while still providing a challenge. You're not going to come out of the gate with something like Kenneth Reitz' "Requests" framework. You're going to have years of learning and experience ahead of you before you can produce work like that (unless you're a prodigy, which almost none of us are). Most importantly, do not give up. You are not stupid or incapable of programming if you hit a wall and can't seem to get by it. We all hit these walls, at every level of our craft. The issue is recognizing when you have the ability to climb the wall, to blow a hole through it, walk around it, or just go back the way you came and pick another path. You could try applying for unpaid (or lightly paid) internships as more of a learning experience. If companies don't think you'll be a drain on resources, I would imagine certain companies would love to have someone who is eager to learn hanging around to take minor tasks and to be mentored for a few hours a week. The key there is finding the right company with that kind of time/support. Best of luck.