The job market for software development is short on workers lately. When the Dot-com Bubble burst it had a chilling effect on the software development field. College students chose other majors and now there are not enough workers to fill the open positions. This situation has created a supply versus demand ratio that has boosted the salaries of those who are working as web developers. I had thought it was just a temporary phase and that college students would start to get back into the IT majors, but it has not happened yet. And despite offering very compelling starting salaries employers still cannot fill positions.
Last week I had three separate people ask me what they could do to get into web development. I am glad they asked because it is clearly a great time to get started while the job market is slanted heavily in the favor of new hires. I asked one of these people to send me a list of their questions so that I could respond here.
Q1: Is web development more like building a house (a slow process involving planning and development) or more like putting out fires (fast paced problem solving) or somewhere in-between?
A1: I would say that web development is a lot like building a house and the work can be hectic and also very well organized. It all depends on the project you are on and the people on your team. Many times you will be working on an existing website to either add new features or to completely rebuild it with more modern technology. This analogy reminds me of those shows on cable like Flip that House. Each time the new home owner looks into fixing up a house they start out with a budget and a plan and it all comes down to how well they carry out the plan and the people they have involved to do the work that determines how well they improve the property and get the return they wanted.
In the same way you can refresh a website with new features and when you set out to do that you will need to keep an eye on the budget and if you are trying to implement something new, like AJAX, you may want to either learn about it ahead of time or bring in someone who can get you through it smoothly so you can meet your deadline and stay within your budget. If you never installed cabinets or a new floor you may find that hiring a contractor helps. But you can also read some books and experiment a bit to see if you can pick it up yourself. The same is true for web development. Gradually you learn how to do everything you need to get done.
Q2: What kind of personality do you think makes for a good web developer?
A2: A good web developer has to be somewhat flexible to take on new challenges but at the same time a good developer also has to help steer the design process to ensure that you do not try to do the impossible. Web development is still an exciting field for many people and people tend to want to do something cool that they saw done on a very advanced website. It is alright to push yourself to your limits and try these new things but also keep in mind that you need to complete the job and make sure your employer is happy with the result. The best way to do so is to be up front with your manager and explain what is possible with the least amount of effort and what you can do with additional work. You want them to buy into what you are doing for them so they feel they were involved in the decisions. And maybe sometimes you want to do something advanced that you think will be a real benefit to the project. You should present your idea as best as you can and accept the decision your employer makes. If you cannot do what you like this time you can refine your idea and propose it another time. Employers like inventive developers who can work within their the employer's comfort zone.
Q3: I have a chance to train in a certificate program in a nearby college in classes for Java, database and XML. The classes confer a certificate. Do you think this type of program would help me land an entry-level position or would it just make me a very skilled amateur who can't get a job?
A3: I think any formal education that you can get that deepens your understanding of the topic and keeps you disciplined will be helpful, but it may not be necessary. I find that some topics are interesting enough for me to learn on my own while others do require a class just so I cover the topic completely. It depends on what you feel you can manage.
As for the certificate, you can ask the people at the user group if one would be useful. An old friend of mine got a certificate back in 1998 and it helped him out immensely, but he may have been one of the few. He is smart and a hard worker, so the certificate may have just got him the first interview which may be all you need to have a chance to prove yourself.
Q4: I can't afford to give up my day job, so I can't really intern at an office. Is it possible to get experience by interning in the evenings or at night? For example: volunteering to do web work for a non-profit agency?
A4: Internships are great if you can get into one, but you do not need to give up your day job to get into something that will build your experience. You can instead participate in various activities that will help you deepen your experience in web development. For starters you can find an open source project that interests you and volunteer to help out. You can find one of the core developers who will help you out as you learn. And when you have worked on the project a while you will have something you can include as a part of your portfolio of work. You can also get involved in one of the many online forums (Google Groups, ASP.NET Forums) and be sure to ask questions as well as answer them. You will learn a lot from this interaction. Sometimes you may answer a question and someone else will provide a different answer. You can learn from the different approach. Gradually you should feel more confident with what you can do and you will hopefully have a network of contacts who can help you going forward as you take the first job as a web developer.
Q5: Most web developer job descriptions require applicants to know many, many programming languages. Are there a set of 4-5 that you recommend as core requirements for landing an entry level job? (like: XHTML, Java, Perl and ...)
Q6: If I'm serious about this as a career, should I plan to eventually get a bachelors in computer science?
A6: I think it will help open doors for you if you do have a degree but it is not necessary from the start. Sometimes you can prove yourself on the job and that may be good enough. But you may read reports that people in this field who do have degrees have a higher average salary. I personally do not attribute that fact to employers automatically paying a premium to their employees who have degrees. It could simply be the fact that someone who made the time to get a 4 year degree also applies themselves to their job on a daily basis. So you may be able to get the same salary without a degree if you have a strong work ethic and positive attitude. And some employers do have education benefits so you could earn your degree and get paid to do it.
Q7: After I finish training (and let's say I get some internship experience somehow), how should I approach the obvious lack of stuff to put on my resume? Should I just be honest and say that I'm a career changer and I'm basically starting from scratch?
A7: Do everything you can to get something onto your resume. You can help with one or more open source projects that produce something that a potential employer will find impressive. In the interview be prepared to talk about what you contributed to the projects and how you made decisions as you did the work. It can take you a few years to learn everything you need to know to become a good developer and getting your hands on a real project will help you learn while also boosting your future chances with employers. I continue to stay active with open source projects and I find I keep learning through them.
Q8: For a novice, what should you highlight on your resume?
A8: I actually like to mix new developers with "aged" developers. I find developers who have been around the block a few times are not open to exploring ideas that they had once tried and determined were not worth exploring again. A new developer will always bring fresh ideas and a new approach so you can highlight that aspect of starting out with a new career. It will help to have several ideas that you can discuss in your interview. Trends in software development are always evolving and if you are active in an online forum you should have a sense of those trends and should have the interest and energy to look into what you can do that is an improvement to what the senior developers have been doing.
A junior developer also has a lower salary, so you can task them to take on some experimental projects. Tasking a senior developer to experimental projects may be too costly for a company to consider. By tasking a "low cost" developer to new technologies you can make progress in a new area while leveraging the senior developers on the critical applications. This does not mean that the senior developers do not get to try anything new, but they can limit their involvement while you work out the details. It is easier to deal with a junior developer spinning their wheels at a cost of $30/hour versus a senior developer at $70/hour. With those numbers you could put two junior developers on the new project and still be ahead. A senior developer may just pop in occasionally to help guide your progress.
Q9: If I get a job interview, what are two or three things I could emphasize during the interview that would help me get the job? (for example, I used to be a waiter and I know that restaurant managers tend to think highly of people who can emphasize that they are reliable and on time, they can "up-sell", and that they work well as a team member).
A9: A job in web development is made of much more than just working with technology. Just like your job as a waiter also includes a bit of salesmanship you also wear a few hats as a developer. One of the other major hats beyond just a developer is a business expert. The websites you work on may be for a certain industry such as health care, insurance, banking or online retail.
When you have some experience in the related industry it can help you on the job. My first big job was with a big corporation and my job was to maintain web applications that manage their financial systems. In college my classes happened to include some accounting and statistics. It applied directly to the work I was doing. I already knew the lingo and how everything beyond the technology was working. In fact, while I worked there we transitioned from one technology to another (Perl to Java) but the business knowledge stayed the same.
Keep in mind that business knowledge can be more valuable than technical knowledge. Making a web page fast is not as important as knowing that the page is showing valid information, for example. When you seek out employers you may want to focus on the ones that you understand already. Try to match your background to the business as much as possible. You will find that many times you will be in a meeting discussing a business process that has nothing to do with the technology and having the right background will be a major asset.
Q10: What is one thing that you DO like about your job and what is one thing that you DON'T like?
Now if you would like get a jump start in web development I strongly suggest ASP.NET because Microsoft technologies are already used by most companies and ASP.NET is by far the dominant web platform for .NET. There are some alternatives, but you can be assured that if you master the basics of ASP.NET that you will be able to work on any ASP.NET website. You can learn to do ASP.NET by watching several videos on the official ASP.NET website as well as dnrTV.com which covers a different topic with each video. You will learn a lot this way. And when you get stuck, just post a question in the ASP.NET forums. You will typically get your answer within a day if not a few hours. You may also find that someone else already had a similar problem and a solution is already waiting there for you.
To hunt out an open source project, go to CodePlex where you will find many projects related to ASP.NET. One of the hot new ones is BlogEngine.NET. You would learn a lot on that project. You can also download one of the many starter kits and experiment with your own website projects.
And to work with ASP.NET you can download Visual Web Developer Express.