As I've mentioned before, I'm not entirely new to development. I've been developing desktop applications for the past several years. Although I'd had a small amount of exposure to web development before, I'd never done anything in-depth enough to be familiar with the foundational complexities of developing fully-functional web applications. Now that I'm three weeks into a high-intensity academy for training in front-end web development, I thought I'd share my impressions so far of how it compares to desktop development.
Yeah... There's a lot going on there. Bare with me as I take you through this tangled "web" of technologies (see what I did there?). I'll embolden and italicize the key terms to give a better visual representation of the complexity.
To create the structure of your web page, you'll need to utilize HTML. Then you'll want to add some stylistic formatting to the page to make it visually appealing - this is where CSS comes in. Then you'll find out that CSS is a convoluted and seemingly incomplete mess, so you'll utilize Sass to bring order to the madness. If you want to take your Sass to the next level, you can take advantage of the Bourbon mixin library. Since a web application is completely useless if it's not dynamic, you'll need to throw in plenty of JavaScript. To spice up your HTML document manipulation, you'll use jQuery, a feature-rich JavaScript library. Then there's the seemingly endless array of other JavaScript libraries/frameworks - Underscore, Backbone, Ember, Moment, etc. You'll need something to manage all of these packages and serve up your page, such as Grunt, which will utilize a package.json file. And of course, the tool used to manage these tools is installed by another tool called the Node.js Package Manager which is used to manage packages such as Grunt (did I use the word "tool" yet??).
I think you get the idea. And the plethora of acronyms is making my head hurt, so I'll stop there. Honestly, one of the most challenging things so far has been simply understanding the tools available, which ones are the most useful, and how to connect them all up. Not to mention, the toolset changes all the time. People are releasing new libraries, finding new and better ways to accomplish previously tedious tasks, etc. There's no doubt that it's going to be a lifelong undertaking to stay competitive in the wonderful world of web - and I couldn't be more excited about it.
IT'S VERY DIFFERENT!
Obviously, there's a little more to it than that but it's really just been a huge eye-opener every day to be introduced to more and more tools that are used to develop an application. In my experience with desktop applications, you generally stick to a small handful of technologies on any given project.
For example, to create a fully-functional desktop application, you need nothing more than, say, C#. If you decide that you need to persist some data, you can get a database involved, such as Microsoft SQL Server. Yep, that's usually about as organizationally complicated as it gets and, at this point, you would have potentially created some enterprise level software using nothing but those two tools. If you need to call out to a web service, maybe you get some XML involved. If you need to interface with an application in the Microsoft Office suite, maybe you get some COM involved. But again, none of these are necessary.
And then there's web development. Although it is true that you could publish a web page with nothing more than an HTML document, I'm going to focus on what I'd call meaningful development. If you throw in some CSS, you're getting closer to meaningful development but you might still be somewhere in the neighborhood of the Space Jam website - a 1996 gem of web wonderment. If you actually want to start making true web applications, please refer to the below screenshot for some of what's going to be involved:
For example, to create a fully-functional desktop application, you need nothing more than, say, C#. If you decide that you need to persist some data, you can get a database involved, such as Microsoft SQL Server. Yep, that's usually about as organizationally complicated as it gets and, at this point, you would have potentially created some enterprise level software using nothing but those two tools. If you need to call out to a web service, maybe you get some XML involved. If you need to interface with an application in the Microsoft Office suite, maybe you get some COM involved. But again, none of these are necessary.
And then there's web development. Although it is true that you could publish a web page with nothing more than an HTML document, I'm going to focus on what I'd call meaningful development. If you throw in some CSS, you're getting closer to meaningful development but you might still be somewhere in the neighborhood of the Space Jam website - a 1996 gem of web wonderment. If you actually want to start making true web applications, please refer to the below screenshot for some of what's going to be involved:
Yeah... There's a lot going on there. Bare with me as I take you through this tangled "web" of technologies (see what I did there?). I'll embolden and italicize the key terms to give a better visual representation of the complexity.
To create the structure of your web page, you'll need to utilize HTML. Then you'll want to add some stylistic formatting to the page to make it visually appealing - this is where CSS comes in. Then you'll find out that CSS is a convoluted and seemingly incomplete mess, so you'll utilize Sass to bring order to the madness. If you want to take your Sass to the next level, you can take advantage of the Bourbon mixin library. Since a web application is completely useless if it's not dynamic, you'll need to throw in plenty of JavaScript. To spice up your HTML document manipulation, you'll use jQuery, a feature-rich JavaScript library. Then there's the seemingly endless array of other JavaScript libraries/frameworks - Underscore, Backbone, Ember, Moment, etc. You'll need something to manage all of these packages and serve up your page, such as Grunt, which will utilize a package.json file. And of course, the tool used to manage these tools is installed by another tool called the Node.js Package Manager which is used to manage packages such as Grunt (did I use the word "tool" yet??).
I think you get the idea. And the plethora of acronyms is making my head hurt, so I'll stop there. Honestly, one of the most challenging things so far has been simply understanding the tools available, which ones are the most useful, and how to connect them all up. Not to mention, the toolset changes all the time. People are releasing new libraries, finding new and better ways to accomplish previously tedious tasks, etc. There's no doubt that it's going to be a lifelong undertaking to stay competitive in the wonderful world of web - and I couldn't be more excited about it.
My head just exploded.....Looks like you found your development mojo again :)
ReplyDeleteHaha, I hear ya. Definitely, it's been a blast so far.
Delete