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.
What does this all mean? Application code? Database code? I thought I was writing a program! Sure, it's all code, but certain concepts have been established over the years that, when used, bring efficiencies and organization to the modern programmer. Learning these concepts and any future concepts will be key to keeping up with technology.
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)
This is a lot of reading but is important if you wish to develop your software in a timely manner. I've seen people design things completely wrong, causing them to have to rethink their entire projects simple because they had not researched enough about how things work and made false assumptions. Take the time to look into your technologies before you start designing. You may very well find shortcuts you never knew existed and will be certain to know exactly what the technology is capable of.
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 first project can be the most daunting. There is so much to learn and some of the simplest-seeming things can hold you up for hours and hours. It's also very easy to get sidetracked and start working on something completely different than you had started on. For this reason, I recommend making a project plan and getting involved in forums, blogs and friend networks so that you have people to talk to when you aren't sure what to do.
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.
Bookmark or Share this article:
Related Articles on Robert Green's DIY:
3 Comments
Post a comment here or discuss this and other topics in the forumsfamily tree orgniser
i want to develope web based application that orgnizes the family trees which must be portable ,the can anu user on any machine works on this software ...i need help how can i start ,? what i should use from programming languages ?
please help me ,
it ia my graduation project
ayat
I need to write a program to search books in a library?
Who took the book when and what is the price of it and when he took it and what else did he took .Are there all books .How many books are out and what are left?Everything about the person and About the book the full details in the database....
Do you have the full database?
So long as all the data you need is in your database, this should be an achievable project even for a beginner. If you ask a few specific questions, I'll be able to help you more. If you want to get in depth, this is a good discussion for the forums.
Post new comment