

Ask HN: Any advice on how to survive (and thrive) at a developer academy? - CoreSet

I suppose I should point out that by &quot;developer academy&quot; I mean a class of programs that has sprung up in recent years catering to individuals with no computer science background nevertheless interested in learning enough code to contribute professionally.
After making the personal decision and doing the research, I learned the material necessary to complete the entry exams and apply to several developer academies across (and outside) the country. Now I&#x27;m at the point where I&#x27;m completing the prework and executing the necessary logistics to attend one in the fall and would love to know from any alums of programs like Hack Reactor, App Academy, Bitmaker Labs, etc.: what did you wish you knew going in? I&#x27;m a little late in the game to make much use out of &quot;don&#x27;t do it, they suck&quot; but I&#x27;d greatly appreciate any advice you could give on maximizing the experience! Thanks!
======
argonaut
I've been involved with one of them.

1\. I don't know which one you'll be joining, but do the prepwork.

2\. If the prepwork doesn't include git, learn git (Recommend CodeSchool,
GitHub's tutorial, and generally spending time using git). Reading Pro Git or
something like that doesn't really help unless you've been using git for a
while. Learn how to use GitHub (fork, cloning, pull requests, issues, etc).
Build a good internal mental model for what is going on.

3\. Get in the habit of _properly_ touch-typing if you don't already (meaning
all ten fingers and using the pinky). You'd be surprised how even a lot of
programmers don't properly touch type. Get comfortable with a standard text
editor (I recommend Sublime Text for a beginner. You can learn vim later,
maybe after the course).

4\. If the course curriculum does not include _basic_ data structures and
algorithms, get a good overview of basic data structures and algorithms.
Meaning learn about hashes, arrays, multi-dimensional arrays, stacks, queues,
linked lists, trees, binary search trees and how to implement them. Learn
about order of growth, etc. If the course does cover those topics, then you
can go ahead and hold off on learning them (or not). You _can_ read about
these topics, but I think getting it explained to you by a teacher, assuming
those topics are covered in the course, is a lot easier and intuitive.

5\. Some courses don't go into much depth about HTML and CSS (for good reason
- those topics are just pure memorization, lots of busywork and trial and
error, not very much educational value). If so, brush up on HTML and CSS,
especially advanced CSS. A lot of web dev interviews will (sadly) involve
those two areas.

6\. Code as much as possible. Jump ahead. Read as much as possible. If it's a
Rails school, take the initiative to go through the Hartl tutorial,
learn/read/code about advanced Ruby metaprogramming. Ditto if you're doing JS
or Python.

7\. Start a personal website and blog. Make it look good (this can be your
practice for #5). This is not important for success in the course, but is
important for branding yourself after the course. By the way, I personally
believe you should avoid branding yourself as a "junior" developer. Avoid
that.

~~~
CoreSet
Thank you for the advice! Let me ask for clarification on a few points.

Absolutely agree with 1, 2 (just did Codeschool's free "Try Git" tutorial and
am moving on to the paid version) 3, 4 (though I don't have any experience
here) and 5 (I think the majority of our HTML/CSS will be through online
courses).

For 6, you're referring to this, right?
[http://ruby.railstutorial.org/](http://ruby.railstutorial.org/)

Also, would you recommend studying Python or any other languages concurrently
with Ruby besides HTML, CSS, and JS? I love Ruby's simplicity so much compared
to half-remembered bits of high school Java that at this point anything else
will come as a shock.

On 7, do you have any ideas for other angles? I'm coming from a
journalism/content background and will try to avoid wholesale anything pegging
me as green, but if it came down to it...Journeyman Developer? Upstart App
Writer? What would be the best way of honestly representing my expertise?

~~~
argonaut
1\. About git. In my experience, I have never met anyone who learned git by
just doing tutorials. The best way to learn git is to start using it for every
coding exercise.

2\. Yes, that's the Rails tutorial.

3\. Is the dev academy Ruby-focused, JS-focused, or something else? Because I
would most certainly NOT recommend you try to learn multiple languages
concurrently. Whatever language is the focus of the dev academy, master that
one. So no, don't learn Python/any other languages concurrently. (HTML and CSS
are not programming languages. They are markup languages and it is assumed
that any web developer has basic proficiency in them). The one exception is
you usually need to know some JS. So if, for example, the dev academy does
Ruby, you'll still probably be taught JS. But as far as self-teaching goes,
focus on the language that's the focus of the dev academy. Master that first.

4\. You're missing my junior developer point. "Upstart" and "journeyman" are
all synonyms of "junior." My point is that you should not give such a blatant
indication that you are junior in any way. Let them make up their mind about
your abilities when they interview you. Saying you're a junior developer is
only going to hurt you. It is only going to increase the likelihood that your
resume gets tossed out. Just say you are a
(Software|Web|Ruby|JavaScript|Python) (Developer|Engineer).

~~~
CoreSet
3\. The camp is Ruby (RoR) centric, although you're correct in assuming the
curriculum includes a strong JS component (from the materials I've seen). I
was mostly interested in the idea of learning another language concurrently
for the possibility that it would illuminate important general principles in
development/CS, but yeah, I think you're right that whatever I'm taught should
be my principal focus.

4\. I agree. It's interesting, I would never utter (or write) the words
"entry-level journalist" or "upstart writer", etc., but something about this
new technical domain made it feel as if I should advertise my inexperience.
Thanks for the wisdom!

