

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

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&#x27;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
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](http://twitter.com/comaddox)

------
notduncansmith
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](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](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 :)

------
bcjordan
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/](http://www.apprentice.io/)

\- TripAdvisor's internship or web engineering program
[http://www.tripadvisor.com/careers/webprogram](http://www.tripadvisor.com/careers/webprogram)

\- Boston Startup Job Fair
[http://bostonstartupjobfair.com/](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.

------
Chetane
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
Thanks! That makes a lot of sense. It's great to hear that that transition
strategy worked.

------
bzalasky
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
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!

