6 Tools To Be An Effective Web Developer
Over the last few years Rails has helped Ruby’s popularity explode. One of the biggest reasons for this is the time that Rails can save you. By working within a well defined framework a lot of development decisions are simplified and it is easier to be more organized. Throw in some great tools like ORM, Unit Testing, Mocking, and more and you have a powerhouse of developer efficiency and quality.
There has always been and probably always will be feuds over what is the best platform but what I want to show you is that those arguments are mostly irrelevant. Regardless of what platform you choose to develop on there are most of the same tools available in one form or another. The common components, for me anyway, that help me produce high quality code faster and is easier to maintain are a good IDE, easy to use unit testing and mocking frameworks, an ORM, a MVC framework, and a good JavaScript library.
I am a .Net developer by trade and a PHP developer sometimes by choice. I enjoy both environments for different reasons. I am going to talk about each of these components in a bit of detail and explain why I think they are important and then at the end of the article I will provide a list of each of these components for various languages (.Net, Java, PHP, Python, and Ruby). I have decided to only list free or open source tools because they are easy for someone to try out and we all like to save a few bucks.
The Integrated Development Environment (IDE)
To me this is the prime essential. Sure you can program in Notepad and compile with the command line but it will likely take longer and it will require more discipline to stay organized. With a good IDE you have easy project management (all you files grouped together with tabbed browsing), syntax highlighting, compilation (if applicable), and auto complete.
IDE are continuously getting more and more sophisticated and plugins allow for lots more functionality like svn and git management in the IDE.
For me my favorite IDE is Visual Studio. There are some other great programs out there like NetBeans and Eclipse but for whatever reason I have become partial to Visual Studio.
Unit Testing And Mocking
These two items go hand in hand. No application is complete without proper testing. There are plenty of people on both sides of the fence when it comes to testing. I know, I was a skeptic for a along time. It just felt weird to spend time writing code to test the real code I was going to write. Finally I just decided to give it a try and it has changed the way I program. When you are focusing on how to test your code you just write cleaner code and it’s nice to have a quick way to know if the change you just made broke anything.
Object Relational Mapper
If you have ever used an ORM you know that it can save you a huge amount of time. One of the concerns I had before jumping to an ORM was performance. I wanted to know if using an ORM would make my application slower but I was asking the wrong question. I should have been asking whether or not the small performance hit was worth the huge time savings. The answer to that is a definite YES! Rarely in an application will the ORM be the source of poor performance and if it is it can be refactored to improve or you can use straight SQL if need be.
It all comes down to not worrying about performance issues before you have any. Yes it is important to keep performance in mind but using an ORM shouldn’t be anything to worry about.
MVC Framework
MVC has become very popular thanks in part to Rails and it’s revolution in the way we do Web Development. The key component to it’s popularity is that it separates the different concerns of your application into seperate pieces. This separation allows easier testing, better design, and makes your application more maintainable overall.
JavaScript Library
It seems there is a JavaScript library for just about everything these days. I remember not too long ago there were that many and JavaScript use hadn’t exploded yet. A JavaScript library is important to your productivity. The library shouldn’t compensate for poor JavaScript skills, you need a solid foundation, but should compliment a good understanding of it. The library will take care of browser compatibility issues and low level operations letting you focus on getting the job done.
ASP.Net
IDE: Visual Studio 2008 Express
Unit Testing: NUnit
Mocking: Rhino Mocks
ORM: NHibernate
MVC: ASP.NET MVC
JavaScript: jQuery
Java
IDE: NetBeans
Unit Testing: JUnit
Mocking: EasyMock
ORM: Hibernate
MVC: Struts
JavaScript: jQuery
PHP
IDE: PHPEclipse
Unit Testing: PHPUnit
Mocking: PHPMock
ORM: Propel
MVC: Symfony
JavaScript: jQuery
Python
IDE: PyDev
Unit Testing: PyUnit
Mocking: PythonMock
ORM: SQLObject
MVC: Django
JavaScript: jQuery
Ruby
IDE: RadRails
Unit Testing: Test::Unit
Mocking: Mocha
ORM: Sequel
MVC: Rails
JavaScript: jQuery
Be sure to grab the RSS feed, get updates by email, or follow me on Twitter to stay up to date and not miss any posts.
RSS ?
20 comments on this post
Thanks for the useful post. One other framework to consider as a solid alternative to Symfony on the PHP side of things is CakePHP. A bit more lightweight and flexible than Symfony in my personal experience, although both are very similar in many ways.
I would add to the List Grails http://www.grails.org
Its an open source MVC framework that works behind the scenes with Hibernate and Spring.Just look at the site to see…
Thanks for the summary! This is very useful to get started in any language. I myself use Aptana Studio for PHP and am satisfied with it. But of course Visual Studio is needed for ASP.NET stuff.
Perl:
IDE: Komodo, Padre, Eclipse + EPIC and etc.
Unit Testing: Test::More
Mocking: Test::MockObject
ORM: DBIx::Class
MVC: Catalyst
Javascript: jQuery, Prototype
Some of your choices are more than questionable:
Java
IDE: Eclipse (as it has way more web stuff than Netbeans)
Unit Testing: Hudson with JUnit, EMMA and will give you the continous build and test coverage that you need.
Mocking: Fitness, don’t mock, do!
ORM: Don’t do it, go with Spring JDBCTemplate and avoid the ORM mess when things go wrong. Remember data is sacred.
MVC: Spring MVC
JavaScript: Don’t do it, for Java on the client side we have JAVAFX now, with HTML and CSS, you may even have a W3C compliant web site one day. With JS you always have a mess.
My suggestions on PHP:
IDE: Zend Studio
Unit Testing: Simple Test
ORM: Doctrine
MVC: Codeigniter (more by it’s performance)
JavaScript: jQuery
Nice post! For PHP MVC, I’d like to recommend CakePHP. The community is great and the framework has saved me tons of time and headache.
Also, can you recommend a PHP IDE that supports PHP, HTML, CSS, and Javascript syntax highlighting? Does PHPEclipse do that?
Why not ASP.NET with ECO + …
Look at http://www.capableobjects.com/
Uhm, I personally use Vim + Doctrine + Zend Framework + Dojo…
Yii, seems to be a nice alternative for PHP5:
http://www.phpframeworks.com/
Don’t forget resharper when talking asp.net
Too narrow, IMO. Different work requires different solutions. I would never use ASP.Net MVC for a LOB application of any marginal size of larger. Experience will guide that. I’ve used WCSF/MVP to some success. Don’t assume Webforms and Viewstate go hand in hand… Webforms can be made to be *very* efficient if you know the tools and methods - like anything else listed.
Get to know your tools in depth and there is usually no arguments against them. Still - to date, for a LOB app of any size, I fall to WCSF or MVP over MVC any day. (Until such time as the controls necessary for this type of development are readily available and *standard*)
My opinion - which varies daily.
Server scripting language framework and javascript framework combination really a nice revolution to walk with those in this modern web age
For .NET stuff I use:
Unit testing: xUnit
Mocking: Moq
I found both of these tool reduce friction in comparison to the other tools I have tried for that job.
IDE: EMACS
Unit Testing: RSpec
ORM: DataMapper
MVC: Rails/Sinatra/Wee
JavaScript: Dojo
.NET
IDE: Visual Studio 2008 (Pro or express)
Unit Testing: None
ORM: LinQ
MVC: Planning to ASP.NET MVC
JavaScript: JQuery
PHP
IDE : Aptana (a PHP IDE that supports PHP, HTML, CSS, and Javascript syntax highlighting and Code Hints!!!)
Also I keep in my toolbox aggiorno (http://www.aggiorno.com) it’s a plugin for visual studio that adds pattern based find and replace in markup( u can even add wilcards and variables ) always handy for batch changes.
And also using more and more now its their features to fix my markup to validate to XHTML, it not only shows me the errors it fixes them.
Worth the look.
2 Trackback(s)