This article is a response to a blog post titled “Web Programming is Hard!” The author expresses her frustration at being denied interviews for web programming jobs because she comes from a desktop/embedded system development background.
Let me tell you a little story that may make you feel better about the difficulties of web programming. I work at a school, and about a decade back (before I was hired) they commissioned a programmer to build a customized student information system. You couldn’t meet a nicer guy, but he was an engineer who followed the money into Visual Basic development. He’s a smart guy, but originally not a programmer by trade or training.
About four years back they reached the limitations of that program. More people were using it over wireless, which caused the Access database on which the VB front-end relied to become corrupted. It began getting slower. His programming relied on a separate program that ran continuously on a server to calculate grades. On top of that, some of the VB 6 controls have nasty rendering issues on Vista and Windows 7. It was time for a rewrite.
The requirements set forth for this new application were, 1. It must be web-based, 2. It must use a full-fledged RDBMS (SQL Server was chosen), 3. It must have a parent module they can access from home. The programmer, having never developed a web application in his life, decided on a set of technologies he’d never used: C#, ASP.Net, Silverlight, and IIS.
It’s four years later and we don’t have a web application. The desktop application we do have is alpha at best, still doesn’t have all the features of the original, doesn’t have a parent module, and requires me to install about 5 libraries (requiring 2 reboots) before I can install it. The only requirement that was met was to use SQL Server, and we’re a little leary of that because he couldn’t make his program work without admin rights to our entire SQL Server. The only reason the project continues is because certain stakeholders feel too invested to throw in the towel.
This is the story of a perfectly intelligent man who bit off more than he could chew and failed to understand one simple idea: web applications run in a browser. Web development is different. As others have said, it’s not any more or less difficult than desktop development, but there is an entirely new set tools, requirements and obstacles that you need to understand going into it.
Even if you consider yourself an expert in other forms of programming my recommendation isstill to start with HTML. HTML is just markup and no logic (just like XML, it applies structure and meaning to data), so it’s generally easy to pick up.
Then learn CSS. You don’t have to become an amazing designer, but understand positioning, the box model, and font sizing, before you move on.
Once you have a good grasp of the client side, then pick a server-side tool, whether it be ASP.Net, PHP, Ruby or Java. Then start small. Even if you already know the language from a desktop development standpoint, write a program that outputs a “hello world” HTML page first. You can write the next Facebook tomorrow!