Being honest with myself: my journey to learning how to code
zackshapiro.com
zackshapiro.com
I graduated from college with a philosophy degree and took a job in marketing. That job wasn't really marketing, despite the title, and I ended up spearheading a digital marketing effort that was 95% technical project management. That was the point when I realized I wanted to be the person making the products, not managing the people making them.
So I did everything I could to get closer to the technology. I quit my job in the non-profit sector and moved to Chicago, took a job as a project manager at a technology/marketing company, learned QA processes, taught myself python over 12 months, built some scripts to automate tedious parts of my job, and eventually got a job in Automated QA.
Now I'm an engineer in SF Bay Area at a startup. And yes, every day I go home and realize that my brain is wrung out, my mind is exhausted, and I am totally happy with it.
I had this issue the first two years I worked full time as a developer. It disappeared eventually.
I end up spending hours changing permissions, re-installing packages, and poring over StackOverflow posts. I get that real-life software development is very similar, but I'd really just like to build something.
Coding isn't all that hard (in my experience). It's the tangential stuff that makes it hard, and as a result, turns people off from learning.
I spend almost 30% of the project time helping people setup their environments or tracking a problems that are not directly related to the task they are assigned to do... that's unfortunately part of the game.
But the bright side is that it will take less and less and less time to solve this kind of problem after a while.
If it makes you feel any better, that slow grindy Google-heavy progress is normal for any programmer working in an environment they aren't experienced in. Toss a senior backend guy into frontend JS and CSS. Watch him rend his clothes to shreds. (CSS is fucking evil btw.)
You slowly get better/quicker at learning new things, but nobody really walks into something different and just instantly knows how to do everything.
The most important skills you can develop for ameliorating this is getting ace at debugging and static analysis. Both are close to my primary knack, above and beyond anything else I do as a programmer. I'm the go-to guy for my team whenever an intractable error/issue comes up.
It is with great pleasure that I've been told this is Rich Hickey's knack as well, although I sincerely doubt I'll be anywhere near that good in the next 20 years.
Run into a problem you can't figure out? Time to get resourceful...go for the common solutions first: Think through the problem and try to figure out where you went wrong. If that doesn't work, look at similar examples and documentation. If that doesn't work go to the common win areas: StackOverflow, Google. If that doesn't work, go on to IRC or forums. If that doesn't work walk over to a knowledgeable collegue etc. etc. until, all at once, the solution comes to you like a bolt out of the blue and it is like you've known it your whole life. Rinse and Repeat until you've built something useful.
The hard part is not cutting corners and sacrificing your original intent for the sake of getting over a hump. This is not so hard when expectations are clear like a tutorial but it is all-too-easy when creating a new product or feature.
Good luck and welcome to the Tribe!
Done well, the tenacity that a programmer possesses looks almost super-human to outside observers as well as being extremely valuable in other areas of endeavour.
I recommend doing these ruby tutorials and then the rails tutorials on this website: http://tutorials.jumpstartlab.com/
The projects are much shorter, and you very quickly realize the power of programming with ruby and rails.
Now i'm jumping back into the hartl book and everything has been making sense.
the jumpstart tutorials are very small, and once you create a rails app enough times you realize how much work its actually doing for you.
I spent a year on help desk, two years as a system and network administrator (skills I acquired by studying while I was on help desk) then I transitioned to development (which I studied for while doing admin) and now I lead my own projects. Like other have mentioned, it's all about dedication, tenacity, and passion.
However, I don't want to overlook the importance of the people along the way who took a chance on me. Those people were just as important to me being able to continue down this career path as the my own efforts.