So you wanna be a software developer?

I've had several people ask me how to become a software developer. Software development is really one of the few careers left that offer a good work life balance and a compensation level you can thrive on. Caveat emptor: This is a mentally challenging job, where you must constantly learn and grow. This task should not be undertaken lightly, and expect months of frustration and trial and error.

This is an outline to becoming skilled enough to land a junior (entry level) .Net web developer position. This actually began as an email, but I figured let me put it up here so I could send off to friends who wanted to learn.

Databases

Databases store the data for your applications. Using an analogy, if you had an address book the data would be the names, addresses, and telephone numbers written down. The database would be the addressbook itself. There are jobs which are solely database related (database administrator, database analyst, etc).

SQL (structured query language) is the language of databases. Microsoft SQL Server Management Studio is the RDBMS (relational database management system) that we will use. There are several different RDBMS.

Guide to install SQL Server Management Studio - Installing SQL Server Management Studio RDBMS.

Database Fundamentals Video - Gives a basic primer on databases.

More hands on introduction to SQL video - Gives you a more in depth primer on databases within the SQL Server Management Studio framework.

Beginners Guide To SQL - Awesome blog post by Udemy, which gives a great introduction to SQL.

Learn SQL The Hard Way - Read this book. This book will give you a comprehensive understanding of the SQL language.

Coding

Front End

You need a front end for any project that you do. If we are using a car analogy, the front end is the body of the vehicle. When you go to a website, what you see is the front end. It is comprised of images, blocks of text, and is referred to as the user interface.

Beginner:
HTML + CSS

Advanced:
Javascript

Back End

You need a backend object oriented programming language. Using the car analogy, the backend programming language is the engine, even though you don't see it unless you pop open the hood it is the engine for your web application. I'm going to be straight forward, conceptually this can be difficult to grasp - I had a tough time with it at first. Keep at it and once it clicks, you've got it.

Channel9 C# Fundamentals For Absolute Beginners - EXCELLENT free video series which gives you a great run down of the C# language. You can work along with the videos.

Head First C# - Buy the book. I could assemble many free resources, but conceptually learning object oriented programming is much more difficult then everything else you have to learn. Pay the money, it's well worth it.

Pro C# 5.0 and the .Net 4.5 Framework - Do not read this book cover to cover. This is your reference book. If you need to learn something new, crack this open and it will teach you. I use this book and a chapter by chapter basis.

Putting it all together

You're going to have to build some stuff now.

There are tons of excellent guide projects available. Try these on for size..

StackOverflow - You have questions... Get them answered here. This is a critical tool in your arsenal, because once you know the basics you WILL hit snags. Crowd source your answers.

Google - Research, research, research. You can bet that you are not the first person to encounter the problem you're facing. Your job is to find the solution.

Nail your interview

All of this is for naught if you cannot earn an income off of all your intense study and preparation. Well, you're going to have to nail the interview.

What Great .Net Developers Ought To Know

Cracking the coding interview - Excellent book.

Become a Great Developer

Read these books and you will progress your knowledge and skillset. Do everything else first, but eventually come back to this and learn that much of being a great developer isn't even coding. It's asking the right questions, not building unnecessary features, prioritizing correctly, engaging with your team and comrades appropriately, etc.

Rework - More business then coding.

Code Complete 2

The Pragmatic Programmer: From Journeyman to Master

Don't Make Me Think: A Common Sense Approach to Web Usability