Online Web Service - What is the best way to develop it?

I've been working with online services since the first day I joined Handisplay. Back then, I was working with classic ASP as the front end, while writing the back end code using Active X (in DLL format) written in C++, my favourite yet hard-to-master programming language. Since then, I've tried to work with different kind of programming languages and technologies: Java Servlet, JSP, SQL Server, MySQL, Linux C++, and now ASP.NET with C#.

Looking back since the first day that I stepped into the real world, there are a lot of things that I need to pick up on my own, of which I'm sure everyone would agree with me. What I have learned during my time in university was just basic fundamental, of which it was useful enough for me to expand on it. Though I've heard a lot of people saying that the university should teach certain programming languages, yet the reality doesn't seems to work that way. The reason is simple, as the technology is advancing in a considerably fast pace, it is not possible to teach the under graduates the things that's popular at that time because by the time the student graduate, they may find that what they have learned for the past i.e. 3 years have become obsolete. My CEO said this before that in MIT, the lecturers believe that the things that being taught will become obsolete after 4 years, and that's why instead of teaching the students on specific technology, they taught the students how to think and learn on their own, which I'd think that it's good.

So, back to the online web services. It seems that nowadays online services development has been very focused on using certain technologies - either you're using .NET Framework, Java, or any other that you could find. The thing is that those are platforms or tools that you could use for development. It is pointless to say that I know how to use several programming languages but couldn't produce a useful peace of work. The most important thing is the idea, and the implementation steps that involved. All these will have to come with some thoughts and analysis.

I.e. I want to create an online service that would allow users to convert their documents from 1 format to another format. I have to begin to think of the idea on how to implement this:
  1. Is it going to be solely web based? Obviously yes.
  2. Am I expecting a lot of incoming traffic? Obviously yes.
  3. Budget for the development - either I have to go for open source or for the proprietary software.
  4. Hardware - server and the quantity of servers that I needed.
  5. Security - how secure it has to be? Honestly I'm not really an expert in this field, so as long as I put in some considerable amount of security features, that would be fine for me.
  6. Scalability - will I be anticipating any expansion in the future? Hopefully yes.
  7. Reusability - will the things that I've developed able to be ported to any new platform or upgrade to a later version without any major problem? Hopefully not.
After giving some thoughts to the above, then come the stage of development where we will have to apply for whatever we have learned in school/university/college:
  1. Come out with the idea on how the logical/process should be done. This idea can be put down into flow chart, or whatever prefered draft. Note that although there are softwares out there that could let you draft your idea into UML (User Modeling Language), which gives you better understanding on how it should work, but I'd find that it is not always the case when it comes to something innovative/creative.
  2. Draft the user interface, of which in this example, it would be the website. Note that it is not just simple UI design, but it's also about dealing with user's behaviour as well. Especially if the website has text boxes and buttons because users may have inputted unwanted value, or even accidentally click the button before inputting anything.
  3. Study the available software and platforms that could be used to develop the idea. Note that it is more important to work with something that we familiar with. It is not such a bad idea though to try to use new things, since the Internet nowadays has a lot of information that we could find. One thing that we need to keep in mind though, is that whether the platform that we're using is capable to handle upgrade without breaking anything. I used to work with Gentoo Linux, and although it is very liteweight, but I have to pay for the price when it comes to upgrading it because it does break my online system, and I have to recomply to the new upgrade by making sure that the components needed by my online system are meeting the requirements.
That's it for now. One last thing that I'd say, is that sometimes the world around us would provide us with some idea on how to develop our online system. I.e. people are taking number in the bank and would wait for their turn to be served. Doesn't it sounds familiar with something that we learned in Computer Science?

END

Comments

Popular posts from this blog

Yahoo! Messenger voice call & video call disabled, why?

Sport's Injuries - Treatment for bruises

Web Development: Disable, Validate, & Enable Buttons