How to start writing software: web applications
Almost anyone can write little scripts to do simple tasks or write little code snippets that print hello world endlessly but to actually develop a really useful application requires a little more time and knowledge. I've put together a step-by-step guide for aspiring programmers to follow that should help fill in the gaps with their new programming venture.
In order to understand what technologies you need to learn, you need to have a type of application defined that you are looking to develop. There are many types, but the most common these days is the web application. For that reason, we will use web application technology as the example for all of the following lists and text.
A web application incorporates several different layers of technology, including but not limited to:
- Server-side application and database code
- Server-side 3rd party product integration code
- Server and client-side networking code
- Client-side 3rd party product integration code
- Client-side presentation code.
Application code typically is code that deals with the unique parts of your application. For example, if you're writing 2 web applications, 1 for a construction business and one for a grocery store, you will find many common parts between them including code to render pretty HTML, code to store files on your server, code to communicate with the database server and so on. The unique parts should be fairly obvious in this example. There are parts of code for the construction business that deal with construction industry concepts, terms and functionality that is unique to that industry whereas the grocery store application will have barcodes, food categories and all types of things you've taken for granted while walking through your local grocery store. There are more concepts here than I'm defining but for the most part, the unique parts of an application goes into the application code.
Database code can be one of two things: Stored Procedures or Datasource-layer code. Stored Procedures run on your database server using code that the server itself executes. If you were to run Microsoft SQL Server, your stored procedures would be written in a variation of Visual Basic and would be run by MS-SQL Server. Datasource-layer code is something different. It runs with your application and provides a way to access data in your database from multiple spots in your application without re-writing the same code over and over.
Networking code for web applications is very established and standard. HTTP is the protocol used, and it works by traveling over TCP/IP, which can go over wireless or ethernet and so forth all the way down the OSI. Networking code supports HTTP, AJAX, XML services and any other high-level networking that is done.
Often times one product will need to support another. For example, when writing an application that can work with audio, I won't want to write the low-level audio codecs myself so I'll integrate LAME with my product, which can encode MP3s. The code that's needed to work with LAME is called integration code.
Presentation code is anything that takes a set of data and formats it to look nice for the end user. There is generally lots of presentation code in the modern web application. It is what's responsible for generating nice HTML and putting things where they belong on screen.
Things to learn for developing a full-featured web application:
Understand fundamentally how computers work
- How code is executed using the CPU and RAM
- How the OS interacts with your code behind the scenes
- How networks work
- Where bottlenecks are
Read up thoroughly on all major concepts
- OS Architecture
- Procedural Languages
- OO Languages
- Interpreted Languages
- TCP/IP
- HTML/XML
- Client-Side scripting (javascript, dhtml)
- Back end technologies (SQL, XML, Developing proprietary formats)
Further reading for the technology you'll be using:
- Books
- Design Patterns
- Architecture
- Language
- Reference
- Forums & Blogs
- Specific Developer Forums & Blogs
- Technology Forums & Blogs
Your first project:
Determine what to develop
- Small goals make small and successful first projects
- Plan so that you have little parts that clearly work and show you progress
- Find something you're passionate about but is still small enough to be achievable
Creating a plan
- Make a project plan
- Outline the objective of the project
- List what it must have/do to be considered "successful" by you
- Design it on paper, ask yourself "Will this work?" and "Does this meet my requirements I listed?"
- Estimate how long it will take to do everything. Be realistic.
- Create milestones
- Milestones are markers along the project that indicate how far you've come.
- Make a few milestones so you can stay focused and enthusiastic about your project.
- Stick to your goals
- Did you say you'd have a book finished by next week? How's your 10 hours/week coding time you've dedicated coming? Stick to it! You'll never finish if you don't.
Getting help when you're stuck
- Ask someone for help immediately when you're stuck
- Little things can become very frustrating and discouraging.
- Ask friends
- Ask in developer forums
- Read more
Your next projects and beyond:
Keep learning and rereading past material
- Review conceptual books
- Subscribe to software development blogs
Stay open to new ways of doing things
- Understand new frameworks
- Understand new languages
- Review new APIs
After finishing your first project, your perspective should have shifted on the driving mechanisms behind most software you've used and also how much work really is required for a quality product. Hopefully this guide helped you get started or get through one of your first projects. If you're having problems, stick with it! Good things come to those who persevere.
Related Articles
How I became a professional software developer
Categories
How-To6 TrackBacks
Listed below are links to blogs that reference this entry: How to start writing software: web applications.
TrackBack URL for this entry: http://www.rbgrn.net/blog/mt/mt-tb.cgi/8
(code) Many people, in their quest for a new vocation, have asked me how I've managed to land a successful software development career without proper academic background or training. While I feel like I've known how to write software... Read More
If you have access to a password's hash and salt, if applicable, a brute force attempt to crack it is a guaranteed method if you have the CPU cycles available to compute it in a reasonable amount of time. ... Read More
Object Oriented (OO) languages are a staple of the development community, however many people continue to argue against them, citing that they are inefficient, useless, confusing and unnecessary. There are many real benefits to using OO even for ... Read More
Wikipedia defines polymorphism as "the ability of objects belonging to different types to respond to method calls of the same name, each one according to an appropriate type-specific behavior." There is nothing too fancy about polymorphism other ... Read More
Hibernate is an excellent tool which saves many projects from substantial amounts of code. Gone are the days of writing massive datasource layers full of obnoxious JDBC code. As gravy you also get simple query objects, caching, connection p... Read More
If you have a need to use the command pattern and want to have a standard interface but with type safe parameters, I have come up with a solution. This is one of the most interesting uses (or hacks) of... Read More



Leave a comment