Development Tools and Hosting
When learning to code or develop software, people spend most of their time and energy on specific skills — how to write code in a particular language, how to apply architectural patterns, how to model data structures. Most coding tutorials focus almost exclusively on these topics. This is, of course, the core of good coding, but it often ignores an important aspect of being a successful software developer: development tools.
Every language has its own unique set of tools, in addition to development frameworks, libraries, modules, and other unique add-ons. Our list here is not intended to be comprehensive, but is meant to be a general guide to some of the more popularly used web development tools.
HTML / Code Editors
BlueFish — Open Source code editor with syntax highlighting for most popular web languages. Includes a number of advanced features that make it similar to an Integrated Development Environment (IDE).
Dreamweaver — One of the most popular desktop site builders and web authoring tools. Dreamweaver provides a complete suite of features for visually designing a web site without coding skills, and deploying to a web server.
KompoZer — A “web authoring” tool that combines file management, code editing, and WYSIWYG editing, allowing non-technical people to create clean, valid HTML documents.
RapidWeaver — A desktop web site builder and page authoring application, allowing non-technical people to build an entire website in a visual editor and then deploy it to the web without any coding skills.
SeaMonkey — An “all-in-one” application suite for web developers, this app combines a web browser, IRC client, email and feed reader, code editor, and various other web development tools. It uses Mozilla, which makes it a great tool for people who are already comfortable with FireFox.
Web Architect — Code editor especially designed for use with web languages like HTML and CSS. Includes code inspector, document validation,minification, and auto-complete. Provides quick previews into several popular web browser rendering engines, and can be configured to render to local web browsers as well.
Other Dev Tools
Zend Server — PHP application web server and deployment platofrm from Zend, the company behind the development framework of the same name. Boasts increased performance and shorter deployments cycles for PHP applications.
Drush — Command line interface and toolkit for administering and managing a Drupal installation.
FLVTool2 — Command line tool for editing and extracting meta data from FLV (Flash Video) files. Includes batch processing features.
FreeType — A software library that provides utilities for adding text to BMP images. Include batch processing and command line functionality, or can be included into a software application and used programatically.
FrontPage Extensions — Tool that integrates with Microsoft FrontPage. It allows FrontPage users to connect seamlessly with a web server for deployment and other management tasks.
MantisBT — Open Source bug tracker making it easier for development teams to communicate, collaborate, and track issues, bugs, and new features. Integration with mobile apps and email notifications keeps users connected at all times.
OpenVZ — Linux based virtualization and containerization tool. This can be used to set up Virtual Private Servers or application containers. Each VPS or container is a fully-functioning virtual machine with users, root access, and independent boot and shut-down operations.
Virtuozzo — Proprietary virtualization software used heavily by web hosting companies to provide VPS hosting plans and control panel support. Can also be used by developers in a dedicated server to create multiple parallel application environments, such as for development, testing, and production.
Visual Studio .NET — Graphical Integrated Development Environment for building, testing, and deploying .NET web and desktop applications.
WebDAV — Web-based Distributed Authoring and Versioning, a set of tools which extend the HTTP protocol to allow for collaborative editing of web documents and remote file management.
Windows Media — A video and audio player made by Microsoft, as well as an extended set of tools useful for media authoring and management. Integrates with IIS, Microsoft’s web server, and their other development tool sets.
More on Development Tools and Hosting
Don't real developers just need Emacs and star to guide them by? Like any endeavor, there will always be purists who will tell you that "real programmers" develop from scratch and proudly show you the Linux port they created on a Commodore 64 last summer.
But as impressive as such people are, everyone knows that computing is a collective enterprise, and progress is made fastest by building on what has come before. It simply makes no sense to reinvent tools -- except as a hobby.
Do tools and frameworks create inefficient code? Not really. Certainly, there are times to get down and dirty in code to remove a bottleneck. But most systems are designed to allow you to do just that. In general, tools for automating code generation are designed to be highly efficient.
Even when generated code is not as efficient as it would be if you wrote it from scratch, the gains to speed of coding and maintenance usually outweigh any efficiency loss. What's more, tools often allow you to do things you wouldn't be able to do without them.
What is a software framework? The software framework is an ill-defined term. But in general, it is a high-level abstraction that allows programmers to more efficiently create applications. For example, accessing a database with a server side scripting language involves doing the same things over and over.
A framework will not only hide those details from the programmer, but will do certain things by default, because those are the things the developers want to do in 99% of the cases.
Does a software framework constrain what I want to do? Not at all! Frameworks aren't straightjackets -- they allow you to change the default behavior of the system. Generally, it is possible to do anything with the framework that you could without, although in some cases it may be slightly harder.
But the point of the framework is that it is designed to do the kinds of things that you want to do. Otherwise: why are you using this particular framework?
Doesn't a framework create bloated code? It certainly can, because unused code is inserted as part of the framework. This isn't generally a problem with compiled code, where unused code can be stripped out.
Similarly, better-designed frameworks are coded with loose coupling, where individual components have little or no direct knowledge of other components -- limiting the need to load many dependencies just to use a single class or library.
What are some of the main frameworks for website development? Perhaps the most famous framework is Rails for the Ruby programming language. It is so dominant that "Ruby on Rails" is more what people think about than the programming language itself.
There are, however, many other frameworks for Ruby. In addition, there is the Zend Framework (ZF) for PHP, although there are many others and currently Laravel is the most widely used. Python similarly has many frameworks, the most popular being Django. There are similarly frameworks for Java and pretty much any other programming language that is used to create websites.
How can an editor improve software development? In the old days, all that editors did was allow the user to add and change text. But over time, it was seen that editors could do much more. The most basic thing is helping with a programming languages syntax.
Even the original vi editor had a little of that, allowing users to find corresponding curly bracket characters -- a great help when creating c programs. Now editors color code text differently depending upon its function: red for comments, blue for functions, and so on.
Editors can also act as command centers, allowing the coder to do a number of other tasks associated with development. These can include loading other necessary files, compiling or interpreting the code, and running or displaying the results. Taken to an extreme, an editor can become an integrated development environment (IDE).
What about IDEs for website development? There are a number of integrated development environments to build websites inside of. The biggest of these is Microsoft's Visual Studio .NET. But it is only for those who have based their websites on ASP. Of course, .NET is a big reason why people do that.
Necessarily, IDEs really depend upon what you are developing. PhCharm is used by a lot of Python developers. PhpStorm is popular for PHP development. Similarly, RubyMine for Ruby. There are lots of options.
What about debugging tools? Debugging can be particularly difficult with client-server applications that can depend upon dozens of components. As a result of this, there really is no complete solution. For example, there is Fiddler, which is a packet analyzer, which allows you to look at HTTP traffic.
A great musician can make music on a mediocre instrument. But a great instrument makes the music even better, and can even make a mediocre musician sound like a pro. So it is with software development tools. A genius might be able to get by with nothing but a text editor and a command line, the rest of us will have a much easier time if we just have the right tools. And the genius will at least have an easier time with some helpful utilities.
Hosting Frequently Asked Questions
Are there tools for developing flash?
The standard development environments for flash are Adobe Flash Professional and Adobe Flash Builder. TheAre there tools for developing flash?y are quite expensive, however. So free tools have appeared, most notably FlashDevelop.
Is bug tracking important?
If there is more than a single person working on a project, bug tracking in essential. Even when working alone, bug tracking is enormously helpful.
For traditional development Bugzilla is very popular. But for web development, Mantis Bug Tracker has become increasingly popular. There are many other options.
What is virtualization?
Virtualization is the process of creating virtual machines.
Virtual machines are used for a lot of different reasons, but our interest here is that they allow developers to create different runtime environments on a single machine.
OpenVZ is one such solution, but there are many dozens of them.
Are there any tools that will let me create beautiful websites without actual coding?
Sure! This is what Microsoft FrontPage was meant for. It has since been discontinued. But there are still things like Adobe Dreamweaver, KompoZer, and RapidWeaver. Even SeaMonkey has a component that does this.
How do I deal with images?
Image creation, analysis, and storage can be a big problem for website developers. Certainly, few developers can get away without some kind of basic image editor.
It can be something simple like Paint.NET or something much more feature-rich like Gimp or Adobe Photoshop.
Under most circumstances, these are all developers need. But sometimes specialized tools such as DeBabelizer and FreeType can be useful.
What other development tools are out there?
It seems endless. If you are facing a challenge in your development, someone has probably written a solution for it.
What's more, we haven't even touched on cloud computing and the endless varieties of tools there.
Nor have we discussed OpenStack and how it can be used to build your own distributed environments. It's a big, exciting world out there.