I recently came across a candidate for a developer position who sounded very promising, but unfortunately had graduated some years ago, had no experience and was working in a different field. I offered to give this person some advice and fortunately they were open to hearing my thoughts and opinions.
Instead of writing a one-off email, I thought it would make more sense to write a general version in a public place that I can point everyone at. I've come across several people who have mentioned they want to start/change careers.
Why would I want to be a programmer???
So many reasons...
- Good/Great/Amazing pay
- You could make websites!
- You could make mobile apps!
- You could make desktop apps!
- With the right job a programmer can work from home, or even work for themselves
- You will probably naturally learn more things about computers
- Your friends will think you are some sort of internet wizard, when you explain why their favorite website is broken
- YOU WILL ALWAYS HAVE A JOB
Is programming right for me???
Maybe not, but is your current job right for you? At least as a programmer you will probably get good pay, regular working hours, job security, flexibility and more.
But I can't right now because...
There is nothing stopping you. Literally. Nothing. If you have access to some sort of computer, you can make it happen. No excuses. Programming is probably the most accessible field with a plethora of learning options out there. For example, programmers often feel the need to write how-to blog posts...
How do I proceed?
Read and write code.
Having written some code at home, you may even have an advantage over other candidates when you interview. A very smart man named Linus Torvalds once said "Talk is cheap. Show me the code.". And if you show them the code and it's not half bad, they will have no choice but to hire you. If someone presented me with these 2 candidates:
- Did 2-4 years of college
- Did 2-4 years of coding in their free time and created websites/apps that they could demo
I would take the second candidate hands down. Even though I went to college, probably because I went to college, I would rather take someone who has "real-world" experience, then someone who was able to pass courses.
But where do I start, I don't know anything?
No, I'm not talking about an online degree. These days there is a lot to learn, but there are so many resources available. I haven’t used all of these sites personally, but I’ve heard good things about them:
- Code Academy (FREE)
- Khan Academy (FREE)
- Coursera (FREE)
- Code School ($, but some free, I did some courses and they seem good)
- Treehouse ($, heard from a non-programmer friend that it is good)
- Udemy ($, but some free, heard from a co-worker that it's good)
There is always books! Personally I like books, and pretty much anything you get from O'Reilly or APress will be good. The great thing about books is that a good book will start with the basics and build you up. They don't usually leave out important things and have been tech review (and reviewed by the great users of Amazon.com!) Here are 3 O'Reilly books I looked up on Amazon that have good reviews:
I've written an article before on building a team of people you can lean on if you need help and also mentioned that Scott Hanselman says you need a "Life's Board of Directors". When you're starting out, a developer friend can be worth their weight in gold if you get stuck, need advice on which technologies to learn, or just want someone to shoot the (developer) shit with.
Go to code camps and meetups
If you live anywhere near a city, chances are there is some sort of free code camp happening regularly, along with meetup groups that happen weekly! For example, the Boston Code Camp (I live an hour from Boston and go when I can).
Nothing in your area? Start one.
Follow websites, blogs and people on Twitter
A great way to learn about what is out there is to find other vocal programmers and see what they're talking about.
- Go to the Programming Sub-Reddit and Hacker News (Just be wary of the comments)
- Use feedly to follow their blogs.
- Find a few key people on Twitter to get a pulse on what's new/hot/interesting.
Some very awesome female developers named Sara Chipps and Vanessa Hurst that co-founded an organization called Girl Develop It, whose mission is as follows:
"Girl Develop It is an international organization, that exists to provide affordable and accessible programs to women who want to learn software development through mentorship and hands-on instruction."
While they do charge for their classes (Maybe they have free ones too?), having hands-on workshops with support in a comfortable learning environment is probably invaluable. I think that I have heard of some other organizations catered towards women like Black Girls Code.
So what do YOU, John Bubriski, think I should do?
All websites run on these techs, and you need to a solid understanding to be most effective. Even if you want to go into mobile app development, knowing these techs can help you. You'll need a website to support your app, right?
Learn Git for source control
Any programming job will probably require that you use some source control. There are still a lot of companies on older SCCS' (Source Code Control Systems), but Git is trending up and is here to stay if you ask me. If you can learn Git, you can learn another SCCS system if needed.
Learn a server-side language
It is tricky to recommend a single language. So check out a few and pick whatever feels right:
Learn about databases and SQL.
Every interesting app or website is driven by a database. Databases store information. SQL let's you store and retrieve information from the database.
If you picked this language above:
- PHP - Ususally coupled with MySQL. Most cheap hosting accounts come with both pre-installed and the PHPMyAdmin tool.
- C# - Usually coupled with SQL Server.
- Python/Ruby - Ask around, I don't know!
Don't stop learning
The more you know the more efficient you can be.
If something feels harder than it should be, it probably is
I've seen people waste tons of time doing something the hard way. If they just took a few minutes to Google for a better solution, they would probably find one and save a ton of time.
I would love to hear feedback about what people think about this article since it is a little different from my typical how-to post.