Being a web developer means committing to a lifetime of learning. This is the type of career for people that are constantly curious about everything. If you hate constant change, then you will hate being a web developer. However, if you enjoy working on problems for hours or days at a time, then this might be the career for you.
If you have done any of the items below just for the hell of it, then you might love web development.
1) Created batch files to automate tasks.
2) Built a new computer.
3) Installed Linux.
4) Setup a home network.
5) Saved the source code of a web page and modified it, just to see how it works.
6) Spent an afternoon tweaking your operating system to make it faster.
You might be thinking, how are any of those things related to web development? You might be surprised to know that web development isn’t just about writing code. Sure, that is a large part of it. But, there are so many other skills you will need to be successful.
In a typical day a web developer could be involved in any of the following activities.
1) Meeting with clients, committees or other departments.
2) Collaborating with other developers.
3) Answering emails regarding software issues.
4) Fixing bugs in legacy applications you didn’t create.
5) Updating or building servers.
6) Creating backups of your applications or servers.
7) Building new web applications.
8) Creating or modifying databases.
9) Learning a new programming language or framework.
10) Automating tasks through Task Scheduler (Windows) or Cron (Linux).
With all the distractions you face as a developer it is amazing we can finish an application. Of course, that’s why most of us write code at night and on the weekends too. Just be prepared to do a whole lot of things you weren’t expecting.
Why do you want to be a web developer?
If you truly love technology you will more than likely do well in this career. However, if you just read that you can make a ton of money doing this, then stay away. You have to understand that if you do this just for the money then you will be miserable. I have been doing this for over 15 years and I still work a minimum of 10 hours a day. If you hate the idea of spending your free time learning new skills, then choose something else as a career.
A good developer will get a certain amount of joy out of creating applications that help people get stuff done. I love to fix problems that nobody else could figure out. You need some type of motivator other than piles of cash or you will hit a wall and burnout for sure. Your job as a developer is to fix problems and simplify work flow. Building applications that help other people is what you will be doing.
Do you have what it takes?
Does it bother you if I say most of your free time would be spent learning new stuff? Would it bother you to know that a language you learn today might be obsolete in under 5 years? Or that a the new JavaScript framework you have been learning for months isn’t in demand? Could you give up a weekend to finish an application to meet a deadline?
Write it and they will come
Not necessarily. I have spent months writing applications that either get scrapped or nobody uses. To avoid this you really need to get total buy in from the people requesting the application. It is a good sign if they are willing to meet with you over and over to discuss the details. Create some type of roadmap or design document and have a meeting before each step along the way.
Use the design document to protect yourself. If anyone stops participating in the process, point to the last step in the document and say “This is where we left off. Would you like to continue from here?”. You may already know that people like to blame anyone but themselves for failures. So with that in mind, don’t make it easy for anyone to blame you.
What you really need to learn
You might be surprised by my suggestion here. Most people will suggest learning HTML, CSS and JavaScript first. While that is a fine path to follow, you might be missing out on some fundamentals. If you are a beginner you might not fully understand how the internet works. You might not even understand how your computer works. Understanding some basics will help you in so many ways when you start writing code.
This might sound like a waste of time, but I would suggest learning some basic computer repair first. Then build a network of computers at home. Build your own web, mail and FTP server. Write some low level stuff like batch files or bash scripts. Play with different operating systems, such as Linux. Understand how web servers process your application.
I guarantee that time spent learning basic computer technologies will make you a more effective developer. You will spend less time researching things if you already have a basic understanding of what they are. Do you care what screen resolution is? Maybe not. But, you might if you are writing CSS media queries. Do you care what Active Directory is? No? Maybe you are building an application that authenticates against Active Directory so it would be helpful to understand how it functions.
Of course this method has its limits. You can’t know everything about everything right? However, you do want to have a broad general knowledge of how computing environments work. The best developers I know didn’t start out as developers, they evolved into it over time. Some came from a computer repair background or were network administrators.
So, my quick list of items to learn before writing a single line of code are this.
1) Computer repair basics – build and\or repair some old and new computers.
2) Networking basics – setup a home network to learn how routers work, understand what ports are.
3) How servers work – build your own web, mail and ftp server.
4) Create some batch files (Windows) or bash scripts (Linux).
After you have spent some time learning the items above, then start with the list below.
1) HTML
2) CSS
3) JavaScript
4) Accessing an API
5) Source Control – Git
6) Browser DevTools
7) SQL or MySQL
8) PHP or C#\ASP.Net
How much time does it take
The quick answer – the rest of your life. Don’t fall for the lies that all you need is a coding boot camp and you will be an instant developer. That might help, but businesses hire people to solve problems. Trying to take the quick route will only hurt you in the long run. Sure, you might luck out and get a job. However, you will quickly find out you are under prepared. It will take you years to get really good at this.
What do employers expect of you?
In a nutshell – everything. The amount of expectations are relative to the size of the IT department of the company. If you are working for a small to mid sized company expect to do a lot more. If you are hired as a developer then the expectation is that you know everything about computers. If you work for a large company then jobs are usually segmented fairly well. Read through some job ads on Indeed or Dice and you will start to see what I mean.
Taking advantage of you
Over the years I have even been put into situations where my skills were offered to friends of management. What would you say if you were asked to build a “free” website for a friend of your boss? Or a new client for the company needs help with their servers, and your services were offered. You really have to be ready for this “abuse of power”.
Conclusion
I know the idea of creating web applications can be exciting. But, seeing everything I have over the years I would like to suggest that you ease into this career. Maybe treat programming as a hobby first. Learn some computer basics as outlined above. Then try to get a help desk position. Working help desk will get you used to fixing problems for people.
Then continue to build your programming skills. Start to build a portfolio of applications you are proud of.
Believe me, you will start to see problems you can fix with your programming skills. Being able to quickly take a real world problem and fix it with a new web application is the skill you need to develop. Once this starts to feel natural then I would start looking for a developer position.
This is definitely the slow path, but in the end you will be glad you took it slow.