I will graduate Tufts in December with a minor in Comp Sci (I am a Phil major, but I discovered the joy of problem solving through code late in college, so I couldn't major in it). My focus has been on practical coding courses, not theory (2 in c++, 1 in c, 1 in web dev, and 1 survey of programming languages). I have internship experience that is nontechnical but related to tech: research at a digital ad agency and building a WordPress ecommerce store. I was wondering what HN considers the shortest path from the position I am in to a job as a software developer. (E.g., more school, an independent course, internships, a personal project, working on open source, a nontechnical role at a tech company?) Neither changing location or unpaid work are deal-breakers, I have some savings to stay afloat.
[+] [-] tyre|12 years ago|reply
1) When people ask what I do, I tell them I am a philosopher and a typist[1]. It sounds like a joke, but I'm serious. Most of programming can be broken out between solving the problem and then typing it out (syntax, semantics, style.) For the 'solving the problem' piece, you've been trained to solve abstract problems, to logically work your way towards a holistic, pragmatic solution.
Don't underestimate that.
I reference Wittgenstein and Berlin when writing API documentation. I look to Plato to decouple architecture and encourage sane data-modeling. You have one hell of an advantage. Computer science has been around for 60 years; you're leveraging the wisdom of thousands of years of accumulated problem solving.
2) Do it. You can spend your tuition on learning at a hacker school, but nothing will prepare you like building it yourself. Build yourself a website. It can start by being static with HTML and CSS. Then merge that into a framework (Rails/Django) deployed on Heroku. Then provision your own VPS and deploy it there. You can over-engineer the hell out of a simple website. For a job, never do this. For your personal projects, go apeshit. You need to learn fast. Not all of the implementation details of every technology, but the mental models.
The largest blocker for you right now is that you don't know what to Google. You're smart enough to solve any problem, but you don't yet have the experience to accurately frame them.
I would recommend working as an intern to learn the basics. Get familiar with the problems.
If you have any questions, I'd love to talk more. Shoot me an email at chris at zenpayroll dot com.
(1) http://twitter.com/comaddox
[+] [-] Chetane|12 years ago|reply
Along the way, you'll probably hit many roadblocks (e.g. ruby? php? html? ftp? git? heroku? aws?) but overcoming them through research, trial and error will teach you a lot about software engineering and you'll come out of the experience more educated. There's also an added benefit of building up a portfolio that shows you care more about solving problems (remember, we started from an idea) than a specific set of technologies (only a tool to execute on said idea).
When you think you're "good enough" to provide value to a company, I would start applying to job openings in parallel. Good luck! I'm actually a mechanical engineer by education, but transitioned to software after graduating using the method described above.
[+] [-] jrlocke|12 years ago|reply
[+] [-] bcjordan|12 years ago|reply
> the shortest path from the position I am in to a job as a software developer
Shortest path: apply straight to your first programming job or internship. There are many outfits out there that will take developers with no industry experience who have some practical programming ability.
IMO, the best way to get better is to work alongside the best team you can.
Specifically, if you're interested in web development in Boston:
- ThoughtBot's apprenticeship http://www.apprentice.io/
- TripAdvisor's internship or web engineering program http://www.tripadvisor.com/careers/webprogram
- Boston Startup Job Fair http://bostonstartupjobfair.com/
--or just apply to various jobs or internships at companies you know have good programmers.
Worst case, you learn some things during your interviews and get to see the offices of some tech companies. Best case, you get a position and get to learn some stuff.
If you're willing to throw down a few months' time and money, various dev bootcamp programs can practically guarantee you a developer position (and your courses sound like you would have a big head start). There are a couple in Boston, but more established ones in NYC and SF.
If you'd like some help filling in the gaps for interviews or choosing places to apply to shoot me an email: my HN username at gmail. Went through the same process last year.
[+] [-] bzalasky|12 years ago|reply
[+] [-] tectonic|12 years ago|reply
[+] [-] notduncansmith|12 years ago|reply
How did I do it? Total immersion. I spent a few hours every day doing tutorials, and then applying those lessons in little throw-away projects. When not coding or learning, I listened to podcasts in the space.
http://shoptalkshow.com by Chris Coyier and Dave Rupert is FANTASTIC, they do a friendly Q&A podcast with guests, sound effects, and it's just a lot of fun overall.
http://codeschool.com by the guys at Envy Labs is the best place to learn, bar none. I tried plenty of sources: Udemy, CodeAcademy, Treehouse, and various other platforms. These were all "okay" to "pretty good", but CodeSchool is the best value for your money. The courses alone are worth the $25/mo, but you also get exclusive screencasts that are really great for enhancing your learning.
Stack Overflow is your best friend. I wouldn't recommend doing direct searches on their site when you first run into an issue (just Google your problem) but the vast majority of solutions will come from SO. You can trust the answers on there for the most part, and the best part is that most answers are very informative: they explain the reason for the problem and why the solution works, instead of just giving you some code to copy & paste.
If you're a strong independent learner, you should have no problem following along with the CodeSchool courses (they move pretty fast though, don't feel bad about watching the videos multiple times). Sign up for a month, take a few courses (one or two a week should do at first). Then once you're finished with a lesson, go build a little website (it can be stupid, many of mine were) to demonstrate what you just learned.
If you run into issues, Google it. This is how you will learn. Ultimately, no tutorials will take you from 0 to "rockstar ninja guru", that will only come with experimenting. A helpful template for Google searches is [technology] [command or problem]. For example, "move a div with jQuery" or "rails generate migration". Sometimes including the phrase "how to" works, like "how to deploy node app". Also, "is broken", while less specific, can work: "doctype broke my CSS" will probably explain why changing your doctype is causing style anomalies.
Also, just to be clear: I'm not affiliated in any way with any of the websites I mentioned above and have no vested financial interest in them. They're just awesome :)