Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been a server-side programmer for most of my career and have only recently started spending more time on web development. I am amazed at the number of things I need to master in order to write a decent web application. Just to list down a few tools/technologies I need to learn,

  • Server side programming language (Java/JSP, ASP, PHP, Ruby or something else)

  • A decent web framework (for any medium to big size application).

  • HTML & CSS

  • Javascript

  • Javascript library (JQuery/ExtJS etc. primarily for AJAX). Good to know even if not necessary.

  • At least a basic knowledge of web design - layouts, colors, fonts etc.

  • A good understanding of web security.

  • A good understanding of Performance/scalability issues.

  • Testing, browser compatibility issues etc.

The list goes on.

So, my question to seasoned web developers is - How do you guys manage to learn and keep yourself updated on so many things? While developing a web application, how do you handle the complexities involved in these areas and yet manage to write an application that is well designed, user friendly, secure, performant and scalable.

As a web developer, does one have to be a jack of all trades or should one specialize in one or two areas and leave the rest to other members of the team ?

share|improve this question
    
New things are difficult at first. Don't let that dereail you. realize that you won't be able to compete with seasoned, experienced devs and just do your best. Expand your skills over time as necessary. All these tools change so fast anyways you have to be a lifelong learner to survive in dev. That, or get "lucky" programming in assem. for 20 years. –  P.Brian.Mackey Jan 6 '11 at 19:45
add comment

6 Answers

How do you guys manage to learn and keep yourself updated on so many things?

Tip 1. Keep an eye open on all the things that are happening out there. Listen to what people are talking about, check things, read articles and blogs, bookmark what is important, learn, experiment, stay naturally curious about everything.

Tip 2. Absolutely have fun in the process.

Tip 3. As somebody pointed out on SO once, the things you have listed relate to the collective knowledge of many developers. Don't expect to know it all in perfection, it's too much for one single mind to handle. Take what you need and know where to find the rest.

As a web developer, does one have to be a jack of all trades or should one specialize

It is better to be well versed in different areas. What is special about web development is that it suddenly unites all aspects of the product development in one single place in single hands. You inevitably have to be aware of lots of stuff in order to make things tick. But seriously, it is so much joy to have your fingers everywhere!

share|improve this answer
add comment

Server side programming language (Java/JSP, ASP, PHP, Ruby or something else)

Use a framework. Django, for example.

A decent web framework (for any medium to big size application).

Not "medium to big". Use a framework for everything.

HTML & CSS

It is what it is. Learn it.

Javascript

Use libraries and frameworks as much as possible. Write less, reuse more.

Javascript library (JQuery/ExtJS etc. primarily for AJAX). Good to know even if not necessary.

Correct. Use a library.

Or.

Use FLEX.

At least a basic knowledge of web design - layouts, colors, fonts etc.

Copy existing sites.

A good understanding of web security.

Read www.owasp.org carefully. And. Use a framework that does this.

A good understanding of Performance/scalability issues.

Use Apache. Use a framework that handles this. Read Schlossnagle's Scalable Internet Architectures.

Testing, browser compatibility issues etc.

Frameworks. Libraries.

There's a trick to this. Use as many libraries and frameworks as you can. The web has been around for years.

Stand on the shoulders of giants. Please. You don't need to reinvent all of this.

share|improve this answer
    
True, you shouldn't re-invent all of it as a seasoned developer familiar with all the frameworks and tools. But, busting out all these tools as a new guy only increases the barrier to entry. He should be doing basic javascript and such as a newbie to decrease this barrier. But, since the OP asked how a "seasoned dev" does things I can't ping a -1 for this. –  P.Brian.Mackey Jan 6 '11 at 19:38
add comment

There are basics you have to know - HTML, CSS, semantic markup, what HTTP does and how to make good use of it.

Then you look at what you need for this project, whatever the current project is. Probably that is going to involve starting with an existing platform or CMS and customising it, sometimes entirely bespoke work but more often not. Sometimes there will be requirements related to where and how it is hosted that will guide you to the right platform, other times the functionality you want will guide the hosting that you can use. You learn what you need as you need it. It's a little slow as a way of working but it ends up being the way most of us got good at what we do- project by project learning what we needed to know.

Obviously, the more you work in the company of more experienced web developers, the quicker you can learn from them, but on the whole most of us picked up these skills piecewise over time.

share|improve this answer
add comment

You don't always have a team, at least in my case. So being a "jack of all trades" is helpful.

But you don't have to/won't know everything, so just be good at searching Google.

You'll build up the skills as you need them.

share|improve this answer
    
Yes, it seemed so difficult in the beginning. –  Rice Flour Cookies Sep 23 '11 at 14:19
add comment

I try to know enough about all of the current technologies so that I can know when they should be applied. For example, I'm primarily an ASP.NET developer, but I know enough to Ruby on Rails to figure out if it is better suited for a particular problem.

The technologies I'm actually using I try to know in and out. If there is a particular feature in ASP.NET, I want to know it in detail and know when I should and when I shouldn't apply it. Same goes for JQuery, CSS, and everything else I use.

In order to keep up to date I listen to podcasts, subscribe to RSS feeds, peruse StackOverflow, and attend developer events.

share|improve this answer
add comment

Start off the easy way with either .NET or JEE/JSF. No need to do your first project out the hard way. Save that complexity for when you really need it.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.