top | item 6540735

Ask HN: How to hack a Computer Science minor into a developer position

5 points| jrlocke | 12 years ago

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.

7 comments

order
[+] tyre|12 years ago|reply
I was a philosophy major scheduled to graduate in May 2013, so I have some relevant experience. When I left Hamilton in Feb. 2012, I had only 3 classes under my belt and less programming experience than you do now. As an engineer at a large company and now at a start-up, here's what I can tell you.

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
My advice to you would be to improve (or acquire) your software engineering skills through practice, by doing real life projects. What I mean by that is pick an idea/project that excites you (e.g. An interactive website for non-philosophy majors to get a high level overview of philosophy) and do it (I know, "just do it" by itself it not so helpful).

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
Thanks! That makes a lot of sense. It's great to hear that that transition strategy worked.
[+] bcjordan|12 years ago|reply
Don't short change yourself, it sounds like you already have some fairly significant programming experience (assuming that's Ming's intro to web dev course and something with Professor Ramsey in there).

> 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
I majored in Biological Anthropology (BA 2007). Today, I'm working as a Software Engineer in San Francisco. I had been exposed to programming in the past, and got my professional start working on consulting projects after I lost my job as a Copywriter in 2009. Work on as many projects as you can and surround yourself with people that know more than you do.
[+] tectonic|12 years ago|reply
Do you have a portfolio, GitHub profile, or some web dev projects that you've built available online? We're always looking for talented junior developers-- feel free to send me a note!
[+] notduncansmith|12 years ago|reply
As they say on ShopTalkShow, "JUST BUILD WEBSITES!". It took me about 3 months to get to "practical web developer" status with almost no coding background (was previously in marketing). Another 3 months of practice and I was competent enough to get a job doing it.

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 :)