I recently received an email from my friend Sam…
Hey Eric and cc’d Clay,
The schools all seem to be less than 2 years old, but they all have excellent (95%+) placement rates after completion of their courses, and, if the employers who hire the graduates are a metric to go by, the schools actually do a good job of preparing students for a job as an junior developer.
I’m curious, as someone who is a developer, if you could answer some questions for me.
First, what was it like for you when you first started out? What are some things you did that you think helped you a lot (projects, things to learn, habits, etc.)? What are some things you wish you had done, or things you wish you had done differently?
As someone who has worked in teams (I think) and also freelanced and now works at an agency, whats it like to be working more on your own as opposed to with other developers? Do you have a preference?
Is development something that still excites you now, even after you’ve been out in the professional world for a while?
What’s your day to day like?
Working as a developer executing the creative ideas of others, how do you manage interacting with non-technical managers, their vision, and your execution of their vision?
And anything else you’d like to add!
Take your time to respond, or, if you don’t have the time, that’s cool too.
Thanks either way,
There are so many good questions in there and I will attempt to answer them all with my own perspective as a reformed hack.
Should I be a developer?
As for full-on web dev schools I don’t have any experience there, but I hear a lot of them are great for getting you up to speed quickly and placed in jobs. And honestly, going to any of those schools and working along with other students who are struggling with the same material will make a world of difference. I went the “traditional” route of studying Comp Sci in college at UNC and while those classes certainly helped me in a broad sense, they were much more focused on math and theory than what I deal with on a day-to-day basis as a web developer. Those types of skills can come in handy if you’re looking to grad school or being a teacher yourself, but the average web dev can get by just fine without them.
I'm in, how do I get started
If you do end up going to one of those schools they will of course have a whole curriculum laid out that would be much more comprehensive than what I can cover in a measly blog post. But some rules of thumb that I’ve come up with over the years may help navigate through that curriculum
Alright, so let’s say you decide to dive in with one of those schools. They will of course have a curriculum that will put you well on your way to getting a job as a developer. Whether or not you enjoy that job and grow your skills is largely up to you though. A few tips that may help you in that pursuit:
- Identify Your Weaknesses Starting out you’ll be weak at just about everything, but as you advance in your career, it’s important to round out your skills. My first few jobs out of school were consulting gigs that often meant fixing or augmenting existing software. In this capacity I got really good at debugging and finding my way around different systems, but I didn’t realize that I wasn’t very good at starting a project from scratch, thinking through the steps to make it happen, and then executing. When I joined Redwood I very quickly caught up to this reality and it was a painful process of backfilling my experience for a few months.
- Seek Motivation One thing I’ve always struggled with is finding motivation to keep learning new stuff. It’s hard to sit down with a thick programming book and just ingest knowledge. It’s much easier if you have a project in mind and slowly chip away at it while you learn up on the new language or technology. That’s kind of what I’m doing with the Over Under Game which will eventually be a working app, but for now is just a sandbox for me to try out new ideas and concepts I’m learning in Ruby on Rails.
The "Right" Technologies
- Middle Tier: Ruby (language) and Rails (framework)
- Database: MySQL (old-school, popular); MongoDB (new shit)
- Source Control: Git
- Dev Ops: AWS (Amazon Web Services)
Teams > Individual (Most of the time)
Starting out learning programming is hard and as I mentioned above it’s super helpful to share that struggle with someone else and learn together. In the job world, working in teams is both fun and a great way to continue learning from other people. The trade-off is that you’re more likely to specialize on a particular technology and/or knowledge domain and there’s probably more red tape in the way of getting stuff done. In a company of any size there are likely to be tons of meetings and at all but the best places those meetings are stifling and boring and a waste of time. That is the one thing that a working programmer needs lots of – huge swaths of uninterrupted time. As a freelancer I get all of that I want, at the cost of camaraderie and fewer options for bouncing ideas around with others. Like most things there are tradeoffs, and there’s a certain amount of trial and error involved in trying to figure out what works best for you.
In short, programming isn’t for everyone, it’s hard, it’s rewarding, and it can be fun. Godspeed.