As I think about how to write this article, I am leaning toward this just being really good life advice, so understand that some things will apply to things other than web development.
Web development is a hard job. It takes years to build the skills in order to even really begin contributing. You will be met with tons of failures, tons of hard problems to solve, tons of “why the hell doesn’t this work?”, but it also has tons of rewards, and moments of “this works and is so freaking awesome!”. It’s a wild ride.
What I want to focus on, is the person who may be thinking about web development or programming as a career. While web development is a certain part of the overall developer world, most of what I will cover will apply to any development/programming job.
So let’s talk about the journey. When starting out, you will learn the intro stuff, you may learn it fast, but then you will get into some nitty gritty. Let’s talk CSS as an example. It’s a deceptively tricky language. It seems so simple, you just declare properties on things and it’s displayed. But then you want to position things in complicated ways, and you may hack it with a float, or position absolute. But then you have to account for another element and before you know it, it’s tricky.
Then, in the web world, you have to mix the code your server side application creates and you have to code the front side of the application and make things work together. Things just got extra complicated. And if you want to be a full stack developer, you have to understand the server, all the settings that come with it.
Not too mention using Git, or whatever version control system, and before long you start to see that this is really hard. There is a ton to know and learn and it will take you years to gain competence, then if you want to master things, you still have a lot to do.
But right now, you are at the beginning of this journey. Think about why you want to do all this work. What are you going to get out of it? It’s a great career and I enjoy it, but your time is valuable.
This is where this applies to life in a bigger context.
You are trying to get started and let’s say you are young. You don’t have a ton of money, but you are interested in pursuing this crazy journey. What would I recommend?
Think of everything as an investment.
Time is extremely valuable.
Get a computer, a good one. Don’t go crazy and spend $5k or anything. For web dev, you don’t need crazy amounts of processing. So most computers out there can probably handle what you need. But a good one in terms of OS, reliability, and user-friendliness. Do research on these things and compare. The stores list processor speed, RAM, and hard drive space, but that’s not really what’s important. How usable is the computer? Remember, you will be using this computer a lot. Like 8-12 hours a day, probably more than five days a week.
I say 8-12 hours and probably more than five days a week, because most devs I know work on things on their own time. It’s not all work, we just enjoy building things.
Because you will spending so much time on it, this is where the investment idea comes in. If a computer/OS is easier to use, or things work more reliably; that saves you time. And the fact that we are talking $1,000 - $2,000 over the course of probably 3 years, the difference is small. If something is slow, or you spend hours figuring out how to get something to work on your computer...that’s hidden cost.
Good news, other than software, that’s pretty much the only tool you need.
Software & Code editors
Test out many code editors. Again, you will be spending tons of time in your editor. Like tons. Get to know it, learn the shortcuts, optimize your workflow. Also, buy it. Don’t pirate it.
This is something I feel strongly about. Other developers took time to build the tool you are using, their time is worth money. Most editors are under $100. So if you use it for a couple years, the monthly cost is practically nothing. And I would feel weird expecting other people to pay me for my code or to use it, yet stealing other people’s code to make my code. Why should anyone pay for your code?
Some suggestions, Sublime Text, PHPStorm, Atom (which is 100% free, so use a free one if you do not want to pay for one).
Alright, I am getting a little off my intended point behind this article. Let’s get back on track.
How do you learn this stuff?
There are great resources out there. Think of things like an investment. I am a big fan of Laracasts. It’s a $9/month subscription service that gives me access to ~800 tutorials, with more coming out every week.
The most important thing about that last sentence. It’s $9!!
Also, if you sign up for a year, you get a discount, if you follow the Twitter account, you can get a coupon. This can get your subscription cost to under $60. That’s $5 per month. Seriously, that’s the investment of a lifetime. Information and training for $5 a month. If you hesitate on that deal, you really need to rethink your investments.
But this applies to other training or even books. Obviously, don’t go buy every book or training available. Do some research, Google the author. You will find people you feel have a good knowledge base, ask them which books they have read. Then just buy them. And read them.
Let’s say the average book is ~$40. But if that book teaches you a technique or understanding that improves your code, which could save you hours in the span of a month. That’s a good investment.
A video game might be $40, so you could invest money in you or the video game. Movie tickets for a date probably $20, you could pick up a book or a training package.
Do not only spend money on training and books...go have fun people. The point is to be aware that everything should be considered an investment. Sometimes you invest in your short-lived happiness, like a movie, but saying books are expensive while buying a Starbucks every day...you could easily not have the coffee once or twice each week and afford the book.
The same applies to the personal projects or learning projects you work on. These things take time, build something that might have some potential of returning on your investment of time. Building something because it’s “just cool,” sometimes sure go ahead, but there isn’t enough time to build all the things you want to build, so you really need to evaluate what you invest your time in.
Investing isn’t only money...be aware that your time is just as much an investment.
Everything is an investment, think about your daily life and think about what you are investing your time and money in. Don’t get crazy, sometimes you just need to blow some money just because. Take trips. Whatever you enjoy doing.
Just remember that some things are an investment in yourself, and you should be investing in yourself often.