21

Possible Duplicate:
What should a developer know before building a public web site?

Let's say you got a new intern, who's a third-year CS student. He has firm knowledge of the basics, has some experience with C/Java from the courses he took and a lot of desire to learn more.

What would you teach him in order to become a good web developer?

Based on the answers here, I'm updating the list:

  • HTML/CSS and the importance of writing semantic markup
  • Javascript, some JS framework (jQuery), JSON
  • Basics of Git/Subversion (whatever you use)
  • The language we use (Ruby, Python, PHP, C#, whatever)
  • Databases: SQL, No-SQL (either quick introduction or more in-depth, in case it is being used in our company)
  • Introduction the web framework we use (Rails, Django, ASP.NET MVC...)
  • MVC - what/why/who
  • HTTP Protocol and RESTful web services - how to consume them and how to create one
  • Security (XSS, CSRF, SQL Injection, etc.)
  • Importance of web standards, cross-browser compatability

What's on your list?

This is a community wiki questions, so you're more than welcome to edit and add your stuff to the list.

12

I would add:

  1. Databases, SQL, more SQL
  2. Some rudimentary design methodologies (basic patterns, etc.)
  3. OOD/P to some degree (or at least make sure he knows how to work in an OO environment)
  4. Good coding and development practices
  5. Agile development, TDD etc.
  6. Most important (from my POV as a project manager): team work.
9

A good web developer also needs to know about security pitfalls: XSS, CSRF, SQL Injection, etc., and how to avoid them using the framework of their choice.

7

You are missing 60% of web development time: messing around with IE6 hacks in your CSS.

4

It really depends on what area of web development he will focus on and if he'll be working for someone or on his own. If he's going to become a jack-of-all trades, I'd also suggest teaching him:

  • The basic principles of good design
  • Typography
  • How to use Photoshop/Fireworks and translate that into code
  • How to create fast loading websites
  • Database design, usage, and integration
  • Copywriting and editing
  • Basic SEO and how he should structure the site as a result
  • Marketing for the site including social media and advertising
  • Marketing for him
  • Business skills
  • Cross-browser development
  • Common security issues and how to avoid them
  • How to use ajax techniques with his language of choice
  • Best practices for user interface design
3

What a web developer should know before building a public web site

There you will find an exhausve list.

2

I would replace "RESTful web services - how to consume them and how to create one" with "the HTTP protocol and XML processing".

1

I hand all new hires a copy of the Pragmatic Programmer and/or Code Complete.

I stress that maintainable code is our second biggest goal, and that despite it chafing sometimes, the biggest goal is shipping code. There's no better sort in commercial development.

I then put her on bugfixes for awhile, ask her to match the style of the code she's editing, and do a quick and friendly code review on a regular, scheduled basis.

Part of the assignment to bugfix is also "write down how long you said something would take, and then track how long it actually took." They get good at estimation much, much, much faster when it's presented this way, from day one. Estimation is an easy skill, if you learned it early.

In short, largely, new hires have or can pick up the technical skills really quickly. It's the process of building software they need some handholding with. If you're hiring someone who doesn't know HTML who wants to build websites for a living, you've already got a problem.

0

I think web developer should know how web server is working - basic knowledge of network programming (listen(), connect(), select()...) processes, threads, memory management...

0

In addition to your own list:

  • basic webserver administration (Apache)
  • SQL databases, because no dynamic website exists without it
0

A couple more that I'd add:

  • Web security such as using SSL as well as possibly introducing PCI or SOX compliance.
  • Internationalization - if he wants to do multi-lingual sites how to configure a browser to change languages.
  • CMS frameworks - Granted this may be part of those frameworks but I almost think it could merit its own category in a way.
  • Debugging in a web world - dealing with either server or client issues that may mean having a broad toolbox.

I would probably also check that the student has some understanding of the history of the web so that if someone mentioned Netscape to him that he wouldn't go, "What you talking about Willis?" sort of reaction.

A couple of other ideas:

  • Introduce mobile applications that may also use a web interface,e.g. how easy could a Blackberry or iPhone browse a site?
  • Rich Internet Application development - Flash or Silverlight if he wants to get more into graphics possibly.

I'm assuming familiarity with the SDLC and a few other ideas that should have been taught already.

0

Unit testing should be in there.

0

I?m going to come at this from a different angle; the technical skills are an essential foundation of being a good developer but they?ll only take someone so far. Without having some fundamental social and business skills, soft skills if you like, their potential will be prematurely capped.

Along with all the essential product and language skills mentioned here, I would propose that the following three skills are essential to being a good web developer:

  1. Learning how to prioritise work i.e. I have 10 features to build, what will deliver the most value early and minimise the risks of me failing
  2. Developing the ability to influence people whilst not having authority i.e. winning peers to your point of view on a particular method of working
  3. Being able to articulate the value of technology to your leaders i.e. I want to use X framework because it will deliver Y value

Being conscious that an intern has academic experience but quite likely no professional experience, I would be ensuring these skills are imparted through mentoring and training. They?re really foundational and will make them more effective in any role they have.

0

Should have knowledge in this areas of Web Application or Web Site Development.

  1. Security
  2. SEO
  3. Performance
  4. Productivity
  5. User experience
  6. Core Web technologies
0

He also should know about Web usability, web standards and information architecture.

0

Source-code control management, multiple environments and sandboxes (dev/test/prod) and, of course, memcached configuration and coding support.

0

That's a great start.

Here are some more ideas:

  1. unit testing
  2. files system permission aka don't chmod 777 all your files
  3. ORMs and how to avoid N+1 queries while using them
  4. database transactions and how to implement them using an ORM
  5. Developing for load balanced environments. Which server do user uploaded files go to? Which server do threads run on? What is a sticky session.
  6. deployment management tools like Capistrano
  7. Basics of database replication. Which queries need to go to the master and which reads can go to a slave.
  8. Caching - memcache, compiled HTML pages, reverse proxy
  9. Performance optimization - CSS sprites and minification
  10. Web analytics - event tracking and unique page names
  11. database schema versioning through hibernate or Rails migrations
  12. HTTP status codes - 301 vs. 302 redirect
  13. encryption of user passwords in database
  14. HTTP vs. HTTPS and vulnerability while transmitting passwords or other sensitive data
  15. Firewalls - don't expose Mysql port 3306 outside the firewall with no password
  16. SFTP/SSH - FTP sends passwords in cleartext so your source code can be easily compromised
  17. Email fundamentals - hostnames, spf records, headers so email's sent from an application aren't blocked as spam
  18. Browser caching - rename foo.css to foo.css?v=1 to avoid browse cache issues when it changes
-1

You are missing OOP concepts.