So are you ready to build your next Web App? Every developer (and even some hardcore app developers) has a dream to build the next killer app. If you are thinking of building one, do you know where to start? There are so many technologies to choose from. Making the right decision on which technology to use at the very beginning is critical to the success of your app.
Designing, developing, distributing and maintaining your app really depends on the selected technology, software architecture, and development methodology. How are you going to decide on the development speed, maintaining your codebase, and how about scaling and growing your app development cost-effectively? Having all these decisions made at the early stage of planning can put you in the position to focus more on developing your dream app and its potential killer features.
Try not to focus too much on solving a specific problem that has already been solved for you. Try to focus your research early on the following areas:
- Your preferred programming language (PHP, Django, ASP.Net, Python, Ruby on Rails)
- Software architecture and methodology / style (how you approach to integrate your modules / components using various APIs)
- Free codes / libraries that people have already written and are freely reusable
- Frameworks! Yes, frameworks do work and they help lay out the foundation of various components of your app – my favourite frameworks are CodeIgniter, Django (Python), Drupal (CMS-based), and PureMVC
The Front and Back of Web Apps
The frontend is user-centric where user input and interaction occur. The backend processes the inputs and routes interactions to their destinations and vice-versa. Basically the backend is where all of the heavy-lifting occurs.
What frontend technology is considered Web 2.0 you asked? HTML and CSS is probably the obvious answer for most of us. But what about proprietary Mr. Flash? How would Flex/AIR type apps hold up against browser-based apps? I’d go with the HTML/CSS route as it is the most supported technologies on many platforms (desktop and mobile). Over the last few years, CSS frameworks have appeared on the Web design scene and they are becoming quite popular. Why not start off your app with a useful CSS Framework and speed up your development. Here are my favorite CSS Frameworks:
- Blueprint: A CSS Framework
- 960 Grid System
- Less Framework 4
- BlueTrip CSS Framework
- 52 Framework
- Elements CSS Framework
- YUI Grids CSS
The backend of any web apps is responsible taking care of data processing – taking in user inputs and spit out visual data and feedback to the user. As mentioned previously, choosing a core programming language and framework that can help you avoid repetitiveness in your codes (following the DRY principle) and simplify code maintenance. You can go with PHP, JSP, .NET, Python – the classic and most-used language flavors in the industry. If you are on the cutting-edge why not start learning Ruby on Rails or Grails. They both exemplify “coding by convention” or “convention over configuration”.
Database / Storage
Most developers are quite familiar with traditional RDBMs (relational database management systems) such as MySQL and MS SQL. Many Web apps like Facebook and Twitter fundamentally utilize RDBMs to hold their user data and inputs. These data stores are already massively stretched and tested; they can only read/write so much data at any given transaction with the expense of processing speed. To handle large-scaled data such as a user’s photo albums, PDF files, and other large binary objects, you may want to consider going with NoSQL databases. NoSQL databases are great for audio/video streaming and serving pages with massive data. Some examples of NoSQL databases are Apache Cassandra (key-value store based), or Apache CouchDB (a document-oriented store). Remember, there are many frameworks that support many popular RDBMs. However, you may want to implement your own framework if you want to go with NoSQL databases as they are not yet widely-supported.
What’s New on the Horizon
There You Have It
So, I hope this will give you an overview or a initial plan if you consider starting up a web app. Remember to focus on your research on established technologies and don’t re-invent the wheel if you don’t have to. Take advantage of different protocols, libraries, and frameworks that are available to you. Check out some of the resources on the side that may help you get started. Once you get a hang of a particular technology, you will find yourself quite comfortably coding in its environment in no time.