views:

934

answers:

24

A good friend just sent me the following email

My father is putting together a proposal for a local college to start a center of innovation and technology. As part of that, he’s proposing they teach web design and web development. My question is in your opinion what are the “industry standard” tools for both web design and web development. I think I have a good handle on the web design (html, flash, photoshop, dreamweaver), but I want your take and need some guidance on web development (.net, ajax, visual C++, rubyonrails). Thoughts?

I was able to instruct him on what tools are predominant on the Microsoft Stack (Visual Studio + Expression Studio), but I'm not exactly sure what people writing in ruby on rails, or python, or PHP, etc., are using.

I'm asking this here because:

  1. Who better to ask than developers
  2. Those looking to get started in these languages might find these tools very useful.

So those of you who use these stacks, what type of tools do you use for your development?

Summary

Database

Source Control

Editors

IDEs

Frameworks

Debugging

+2  A: 

I use TextMate for Rails, PHP and Python development and I love it.

After seeing other answers I feel like I should elaborate. I use MySQL currently as my primary database and Apache for a web server. When coding in PHP I prefer to use CodeIgniter rather than "vanilla" php.

However, most importantly I use SVN which you should use from the start (or any versioning tool), SVN lets me keep track of all the different versions of my code. So, for example if I break something which was working in revision 10, I can go back to revision 10 see what I changed and fix it, etc.

benofsky
+10  A: 
  • svn or a modern dvcs (git, mercurial or bazaar)
  • Generally not an IDE. Instead, TextMate on Mac, Notepad++ on Windows, or the one true editor (emacs or vim) on Linux.
  • MySQL and SQL in general is worth understanding as a separate item.
Kevin Peterson
"the one true editor (emacs or vim)" <- He, he
Ionuț G. Stan
+1  A: 

I mostly work with PHP. I regularly use:

Coding Environment: Netbeans, vim

Framework: Zend Framework (sometimes Code Igniter)

Troubleshooting and Profiling: xdebug, webgrind (or kcachegrind)

Database: MySQL

Server: Apache

Shell: bash

Reference: php.net, (and sometimes StackOverflow!)

Version Control: subversion, Vault (not by choice)

gaoshan88
+1  A: 

Zend Framework MySQL Eclipse as an IDE (or Aptana Studio specifically)

Ben Rice
+1  A: 
  • XDebug for debugging
  • phpUnderControl for agile tools
Ólafur Waage
+1  A: 

emacs with the menubar disabled FTW, keeps the mind sharp, and once your muscle memory is tuned, your productivity should skyrocket.....maybe

eclipse + aptana can be a good thing too, i just wish I could figure out how to make it let me just edit a damn file without declaring a workspace and project etc...

Tom Willis
+1  A: 

I use Eclipse PDT (IDE) and Notepad++ (editor) for development. They fill each other out imo.

Kdiff3 for comparing files.

Subversion for version control at work. But git/mercury could be better, especially for a school situation.

On windows I use WinGrep to search for files with some content (usefull even if you dont know regex). (And on linux i use grep.)

For database I use MySQL at work. But I used PostgreSQL at my previous work site, and it is better.

For a school situation you could probably use xdebug at the web server(s) to display errors with stack traces on the web page. You can also view the script profile with a gui and debug interactively (works with eclipse and notepad++).

OIS
A: 

I like aptana so far

Jas Panesar
A: 

Source Control: Git (and I love github.com)

Editors: TextMate (Mac) , E-TextEditor (Windows, and soon on Linux)

IDEs: I hate IDEs, specially those Eclipse based ones like Aptana, but if your're an IDE guy or your project/company requires one NetBeans is the best.

Frameworks: Using Rails most of the time (in love with Ruby). soon looking at Django

P.S. I can't live without Firebug.

Allen Bargi
+1  A: 

I'd add pylons to the Frameworks section under python. and sqlite to the database section - if mainly for development purposes.

oh yeah, and ngrep is awesome.


home/me$ ngrep -q -tt -W byline tcp and port 80

something like that will let you peek at everything going over the port in real time. incredibly useful when you are working on a non-standard or incomplete or modified protocol (e.g. STOMP) or in situations where you need confirm exactly what you are sending, or if you are just curious!

blackkettle
A: 

For web designers don't forget Photoshop, Dreamweaver and Flash.

JonnyBoats
A: 

FTP Client! You will save your class hours of frustration if you can find them a good (free) FTP program. There are many free FTP clients, but they usually suffer from some of these problems:

  • Poor interface design makes it tedious to upload/download multiple specific files to/from nested folders.
  • Unoptimized single-threaded transfer takes several minutes to upload hundreds of files, even when their combined size is only 50KB.
  • Bad FTP programs (or incorrect configuration of them) can erase line endings uploading from mac to linux, which corrupts your code.
  • Poor (or complete lack of) support for SFTP and storing private SSH key files.

Unfortunately I can't really recommend any because I use my own suite of shell scripts (developed several years ago when I couldn't find a good client myself!).

too much php
FileZilla is a good choice (http://filezilla-project.org/)
Jason Miesionczek
A: 

When push comes to shove (or even pull) then I use Wireshark, because sometimes you really really need to know what's going on!

Joel
A: 

I use Aptana/RadRails for my Ruby on Rails IDE. It's good.

Recently I've been using its debugger more, and it's saved me a fair amount of time.

Sai Emrys
A: 

Database MySQL, CouchDB, SQLite

Source Control Git

Editor TextAdept, E, vim

Frameworks CakePHP, Ramaze

Debugging Error messages? :(

Justin Poliey
+1  A: 

Ruby on Rails actually has an implicit default stack. This is mostly defined by what the contributing community use, and some components have shifted over time, but there is surprisingly little divergence on some items compared to other communities, which is probably both a good and a bad thing. It's definitely helpful for learners, though.

  • Programming language: Ruby, for both application development and system administration
  • Version control system: Git
  • Application framework: Ruby on Rails (obviously)
  • Deployment system: Capistrano
  • SQL database: MySQL
  • Web server: Currently Apache with Passenger, though older alternatives are still in common use
  • Server OS: A Linux distribution (Ubuntu is probably the most popular)

Many professional Rails developers uses Mac OS X desktops, and TextMate as the text editor. Most of the remainder use Linux (again, often Ubuntu), and a variety of text editors. Developing for Rails on Windows is currently a bit problematic, and not something that many developers do by choice.

IDEs don't have much take up ATM, but Netbeans is a strong choice. One benefit of using Netbeans for teaching is that you can get a complete Rails development stack in a single installation. Another is that it runs well on Windows.

Stuart Ellis
I agree with this view. But I think there is more latitude in the choice of database. Rails is configured to use SQLite by default. I imagine SQLite could be the easiest database for beginners to work with in terms of configuration. And it would be especially helpful on multi-user systems if you want users to be able to set up their own databases. MySQL and PostgreSQL generally require admin priveleges to create databases.
Jesse Hallett
I probably should have mentioned SQLite, but it seems to be used as a convenience for development, and not in production (although I've heard that it should be OK for read applications), and some developer Rails distributions don't use it at all (and bundle MySQL).
Stuart Ellis
Rails works great with Postgresql as well.
Wayne Conrad
A: 

Well, "Industry Standard" is somewhat difficult to nail down. It all depends on the person. However, I think in general, there are a number of things that you should commit yourself to.

  1. PHP, SQL Database of some sort, HTML, XML, CSS
  2. A lightweight approach to editing. For example, Textmate, or E-text Editor, not Dreamweaver (you should never get comfortable with a program that completes everything for you, because you need to learn for yourself).
  3. Photoshop basics (or even Gimp, but I don't recommend that), and Illustrator basics. Also, basic knowledge of Pictorial elements (differences between GIF, jpeg, etc)

Those are just my opinions on the matter. Feel free to disagree. I also use either Wordpress, and/or Code Igniter for just about everything I do.

lucha libre
A: 

Netbeans with the jVi plugin. My biggest productivity boost I've ever had.

phillc
A: 

The most important tool for Ruby work is RubyGems. Ideally users should be able to install gems themselves. RubyGems can be configured to install gems in the user's home directory instead of system wide, which could work well on multi-user machines.

Of course a good text editor, revision control, and Firebug in Firefox or Dragonfly in Opera are also essential.

Jesse Hallett
A: 

When working in Flash/Flex, i've found De Monster Debugger to be extremely handy. Allows you to view your swf files in real time, and you can trace any object, and even call methods of objects.

Jason Miesionczek
+1  A: 

Working on large, complex PHP applications can be overwhelming. We have a new Eclipse plugin for that: nWire for PHP.

nWire for PHP is an innovative Eclipse plugin (works with Eclipse PDT & Zend Studio 7) which accelerates PHP development by helping developers navigate through their code and better understand the architecture of their application. nWire offers unique tools for real time code visualization, navigation and search.

zvikico
A: 

I'm going to guess that it is web development that your father wants to teach. One thing that slows down the learning of web development is also having to learn how to configure infrastructure (e.g. web server, database, application server, etc) and deploy applications. These activities take a surprising amount of time, and interrupt the flow of learning.

The following application stack will drastically reduce the time spent configuring and deploying infrastructure:

  • Application Stack: Ruby On Rails with the SQLite Database (because it requires no config). Ruby on Rails lets you develop very quickly on your local machine. Rails installs quickly, and there is no database or web server configuration required for your test environment.
  • Version Control: git - git lets you learn the basics of version control without needing to configure a git server. Very little configuration needed to get going with git.
  • Deployment Platform: heroku.com. Deploying to heroku is a matter of running "git push heroku master" from your command line. Once you do that, Heroku.com has scripts that compile your code into an application "slug" and start up the application server and connect it to your PostgreSQL database. (If you are using "vanilla" ActiveRecord data manipulations, you'll see no differences between using SQLite locally and PostgreSQL on Heroku). Heroku is free for small applications, small traffic, and small databases. i.e. Your dad's school doesn't have to cough up cash for deployment servers. Heroku also gives a unique domain to every heroku application that is visible on the internet, and if you validate your account with a credit card, you can point your own domains to your heroku application. Check out http://docs.heroku.com/quickstart for more information.

The key here is that not having to worry about configuration and deployment leaves students with much more mental capacity to concentrate on software design.

Jay Godse
A: 
  • Ruby on Rails
  • MacVim
  • Git
  • Chrome has Webkit web development inspector for web debugging
  • MySQL/SQLite (you might want to look into MongoDB)
Karmen Blake
A: 

Cart before the horse. Introduce tools if only absolutely necessary. The goal should be to teach programming and protocols. Throwing in tools is sure to confuse and overwhelm students.

Based on the question, I'm not sure your father has the experience to design a web development program. We are talking about students' futures here.

rick