First let me start this post by saying I am truly grateful to be working in this field. Being a developer is pretty much the top of the food chain in terms of what you can do for a career. Let's dissect the pros and cons:
You get paid pretty great money. If you want a raise it's just learning one new skill away.
You get to work remote. I am blessed to be able to work 100% remote all of the time. Want to work at starbucks for the day? No problem. Want to work by the pool at your apartment complex? Just get the work done. What other profession pays so well and is so flexible?
You get mad job perks. Macbook Pro's, book allowances, conference tickets, ect. This is actually more standard than non standard for developers.
Programming is one of the only jobs I know where you get paid to learn every day! It doesn't matter if you are John Resig, the inventor of jQuery, or Jeffrey Way, the guru of all things web, every day you learn cool fun stuff, and you get paid to do so.
- You may get carpal tunnel at 65.
- Your spouse has to be understanding when you say 5 more minutes but that usually means about an hour.
- You are chronnically jacked up on caffeine.
Ok so enough of the preamble. What does it take to make it in this business and will I be successful?
What does it take?
People typically fall into 2 categories when they get starting in programming. The people who are curious and interested and the people who view it as a bunch of hoops, a chore. If you want to be the wheat and not the chaff you need to learn to foster a nerdy curiosity. To be a developer it only takes three things: interest, time, and dedication.
To be a developer it only takes three things: interest, time, and dedication.
Let's look at each of these items in detail.
Interest: What does this do.
Inversely, somone who doesn't foster a developer mentatlity instead says to themeselves "this is too much work", or "another freaking problem". Harnessing your natrural curiosity and looking at challenges like a game instead of a problem will be the first step to making you great.
Time: Waits for no one but must be invested by everyone.
I heard a metric, and it's a pretty common one floating around the net that says it takes about 10,000 hours for somone to be a professional in a craft. That's why it's essential that you look at the ability to have a career where you learn every day as a privelege and not a drawback. I don't know about you but if I had to learn something for 10,000 hours by the time I was done with it I would probably hate it. It's lucky as a programmer I don't have to study, I get to do it.
So what do you do with that time?
Videos, blogs, and books. Everybody learns better. As a young developer, your best friend will be videos and books. Now that im more seasoned, I only reach for a few books, instead I read framework documentation, API's, and use google to assimilate pieces that I need. As you grow as a developer you will more away from time intensive reading to more hands on types of learning. Building thigns for fun, test driving new libraries, ect.
Dedication: when the going gets tough, the tough get to debugging.
This is truly the most tedious, and character building part of our jobs. It's the point when your code doesnt work as expected. It can quickly go from being a challenge and game, to being a taunting nemesis that makes you want to drown your sorrows in Guinness. The longer you debug, the faster you will be able to do it over time. Also, your threshold for how quickly you thrown the towel in will naturally start to go down. You will start to stare are a problem until you beat it instead of until you're tired of it. When you have these three items down you will be well on your way.
So what do I learn first?
This is an intensely personal choice that each developer must make. For me, I want something with lots of potential for future job choices, something with progressive language growth, something that benefits me as a developer, and lastly something that I can build things in quickly. The dev world falls into two categories: front end and back end. Front end deals with the presentation of the app / site. The look and feel. What a user sees. The backend deals with making it actually do something. Grabbing data behind the scences, sending and email or SMS. Things like that.
With these criteria in mind there are a few prerequisites that all devs have to be at least nominal in:
Frontend: The absolute requirements.
HTML: This is the bones of your site. Its' skeleton if you will. It doesn't give your app personality but it does give it structure.
CSS: if HTML is the bones, then CSS is the skin. It gives it it's look, its feel. It controls colors, placement of elements, sizing of things, margin and padding, and so on.
Backend: Server Side
Knowing a server side language is a must. You only really have to have one though. The main ones in use today are:
- C# / .NET or ASP.NET
So the takeaway from this is simple. To be a great dev, it just takes time, dedication, and interest, all of which in equal measure. With all of the time and dedication you put in though, don't forget to take time to have a life and recharge. Happy Coding.