A majority of the e-mails I receive ask the question "What should I focus on, technology-wise, to learn/master?" This is a very good question, however complicated the answer. The simplest answer is "It depends" (the mantra of good consultants everywhere). The more complicated answer is one that I'm still struggling with.
Recently a renowned Perl developer gave a really good answer in an interview, saying that the key is focusing on the practice of programming, rather than a specific technology.
Unfortunately, there's no real book out there that will tackle this, outside of the course books from high school or college Computer Sciences courses. The best way to learn programming is to start with CS classes of some sort (so you understand the fundamentals of memory, processing, etc), but it doesn't stop there. You will be forever honing your craft by practicing, researching, and collaborating.
|Do not let the hype and marketing machinery lead you away from your comfort zone, just because it's the latest or coolest or "popular" choice.|
It also helps to understand the system that you have to work on. When it comes to Web development, there are usually three different areas where you can program to create interactive Web applications, and with them, a spectrum of difficulty:
- Server-parsed Web pages: PHP, ASP, Mason, and JSP all offer a way to integrate a program within an HTML page. These are extremely easy to write, once you have a knack for the language that each technology supports. This "layer" can also integrate with server objects (such as Flash, Enterprise JavaBeans, .NET, C++ code, etc).
- CGI: These are executable programs that can be written in anything, just as long as the Web server can execute it. People mostly write these in Perl because it's faster to develop (no worries about compiling), but could be written in pretty much anything. These are a little more difficult to write (in that you have to output proper HTTP/HTML), but not rocket science, either.
- Web-server modules: These are extensions to the Web server and represent an entire Web application. If you're using Apache as your Web server, you can write modules in C or Perl. If you're using IIS, I believe the answer lies in COM/ISAPI (and thus, now .NET), which you can write in VB, C++, C#, and any other language supported by .NET (which now includes Perl, too). These are more difficult to write, as you have to worry about session management and program architecture (unlike CGI or server-parsed pages, this program, once invoked, runs as long as the Web server does -- so you have to worry about variable scoping, garbage collection and so on).
So getting back to the original point: Now that you know the system, you just have to pick what is best for you, given your work and projects. Perhaps some projects will require one and some another. You'll also come across folks that swear by just one, and you may also become one of those. The newer you are, the better it would be for you to start at the top, with server-parsed pages. This will introduce you to developing Web applications at the easiest level as well as practice with programming.
One thing I hope you've caught in my overview of Web development is that Perl is the VISA of development languages: It's everywhere you want to be! If I have to make a specific recommendation, it would be to learn Perl. With Perl, you can write server-parsed pages (with Mason), CGI programs, Apache Modules, and IIS Modules (with .NET). And with Perl support in .NET, you can write Windows applications and Web services in Perl, too. And you won't find a better community to surround yourself with, especially with site's such as the PerlMonks. From their charter:
Our attempt to make learning Perl as nonintimidating and easy to use as possible, A place for you and others to polish, improve, and showcase your Perl skills and A community which allows everyone to grow and learn from each other.
I encourage you to experiment with other technologies, too, but do not let the hype and marketing machinery lead you away from your comfort zone, just because it's the latest or coolest or "popular" choice. You have to choose the tool(s) that get the job done and meet (or beat) the expectations of the users.
- Pair.com: Interview with Damian Conway
- PHP: php.net, phpbuilder.com
- ASP: MSDN
- Mason: Mason home page
- JSP: Sun's JSP page
- Perl Community: PerlMonks, Perl.com, Perl.org, ActiveState
About the Author
Jason Purdy is chief technologist for Journalistic, Inc, a publishing company in Durham, NC. Jason has worked in the field of Web development for over six years, catching the revolution at its inception and working for both big multinational corporations such as IBM, Data General, and Trilogy, while also spending more than three years with two small start-ups, Stingray Software and AuctionRover.com. Jason earned a degree with majors in mathematical science and computer sciences, and a minor in chemistry, from the University of North Carolina (UNC) at Chapel Hill. While at UNC, Jason pioneered several concepts in the field of information dissemination and education over the Internet, such as producing the first online version of the UNC Daily Newspaper, creating the first version of online student elections, UNC Press's Web site, and co-founding a Java Special Interest Group.