views:

367

answers:

5

Let me set the stage here. I'm a very junior developer who's recently made the transition from Network Admin who does some WinForms for his employer to a full-time development position working on an ASP.NET product that will be transitioning to Silverlight. I have precious little web development experiences. Some basic understanding of HTML and ASP.NET. I have no JavaScript experience and have very minimal understanding of CSS.

My wife has asked me to develop a website for the local chapter of Junior Women's Club to which she belongs. There are a few goals meant to be acclomplished by the site.

  1. Create a real web presence for the chapter. Currently they have only a single page on the local town website.
  2. Provide a PR platform for the chapter. Here are some of the community services we provide, here are some upcoming events, etc...
  3. Help drive membership. They're a small chapter and want to use the site as a mechanism to help increase membership, especially amongst younger women.
  4. Act as an application for members to track basic information (e.g. list of members, etc...)

I have a few goals for myself on this project

  1. Learn Silverlight (at least at a basic level).
  2. Improve my knowledge of HTML.
  3. Improve my knowledge of CSS.
  4. Provide a reasonably searchable (from Google, et al.) site.

So, here are the basic high-level architectures (without consideration of DB, etc...) that come to mind for me.

  1. Host an entire silverlight app in an HTML or ASPX page and buid the entire site in Silverlight. - This option strikes me as at best, less than optimal for building a searchable web presence.

  2. Build an ASP.NET site with a master page to manage overall look & feel and host Some Silverlight controls (Menu in header, rich control for photo album, controls for managing data, etc...) in appropriate locations. - This strikes me as easiest to maintain overall look & feel while still maintaining some searchability.

  3. Build a primarily HTML site, using CSS as the primary mechanism to manage look & feel and host appropriate Silverlight controls where I want a rich interaction (as #2 above). - This strikes me as the most searchable option, but probably most difficult for me given my current skillset.

I realize that there are other options for architecture and want to hear those suggestions, but please keep in mind that I have an upcoming Silverlight project at work and want to use this in part as a vehicle to learn that technology, which means that an all HTML, CSS, JavaScript/JQuery options doesn't really provide that for me.

I'd also like hear what you all say regarding good resources (paid or free) to learn CSS and any aditional technologies I'd need to learn based on the choice made.

Thanks for your patience with the long post.

---Added later For Clarity (I hope)---

I should add that I'm willing to re-write this at a later time for better performance and to learn more things, but in order to get this site going in a month or less (in my spare time), I'd like to limit the number of new things I need to learn. I'd LOVE to have the time to learn JavaScript, MVC, maybe a DotNetNuke framework, but from the perspective of a very junior developer and even MORE junior web developer, it's too much all at once. Baby steps first, and preferably baby steps that will help me in my day-to-day job, since I have plenty of learning to do there too.

+3  A: 

I recommend having a look at ASP.NET MVC (stackoverflow is built with it). Although it's currently in beta, it's very stable and you can use it on your live site.

It's "much closer to the metal" than ASP.NET which, in my opinion, is great when you want to learn HTML and CSS as these are exactly what you'll be working in. It's a bit like learning photography - get a manual camera and learn the fundamentals so that you understand what's going on.

Mike Scott
+6  A: 

Here's the thing, HTML/CSS/Javascript are the languages of the web. Microsoft does provide abstractions above that with things like webforms and asp.net AJAX, but if you ever want to seriously be a web developer you still need to know what is going on "behind the scenes", even if you use webforms until the day you die.

For resources, what I always recommend is HTML-dog, I find the tutorials are well written and succinct. The official ASP.net site has a ton of content (including screencasts) to help you learn the various technologies that are .net specific

When it comes to architecture, the question is how far do you want to go? You could make a data-driven CMS style site with admin interfaces and a sql server backend. If you want to go that way, I would suggest either Linq2SQL or the fantastic SubSonic to generate up your data access layer and entity objects for you. You shouldn't need more then a two layer architecture for something that small, especially if you want to keep things simple, and those two things can generate your data layer for you.

As for silverlight, I actually went about it the other way and learned WPF first, so I can't help you out too much. The big thing to remember with things like silverlight or flash is that as cool as they are, they are still just boxes in the web page. You can use them to great effect, but there are very few people who don't cringe when they reallized they are at a "Flash site".

Matt Briggs
Steve Brouillard
+7  A: 

My advice:

Don't make a website from scratch. Use a content management system such as DotNetNuke or Drupal to do it. Find a provider that will host these platforms and learn it. Don't reinvent the wheel.

Dave Markle
I understand your point, but how will using this kind of frameworka. Help me learn the things I stated I want to learn?b. Help me improve the searchability of the site in question?I don't ask this question spuriously, I'm aware of the frameworks you mentioned, but am not familiar with them.
Steve Brouillard
IF you want to get the job done, you can learn after you deliver, don't make the organization, i.e. client, suffer your learning curve.Most base content management systems provide advanced inter-site searching, search engine optimizations, and great extensibility, which is where you will learn.
Tom Anderson
Check out http://www.communityserver.org for instance, it is built for this type of implementation.
Tom Anderson
Using DNN or Drupal won't alleviate your need to learn HTML and CSS. You will still be customizing the product with those technologies. But it does take the burden out of deployment, content management, security, etc...
Dave Markle
A learning process can be quite long, with lots of back-and-forth, restarts and false starts, so I would recommend a twofold approach: use something like DNN to get the site out there with all the features you mentioned, and then once everyone is happy go work on a homebrewed v2, with your own code.
rodbv
+1  A: 

There's this recommendation that is valid for anyone learning anything new: keep it simple. In the case of web development, I would certainly vote against Silverlight, for a number of reasons.

The first one you have already mentioned, it is very Google-unfriendly.

The second one is that it is not an ubiquitous plugin: lots of people don't have it yet, and lots of people feel (rightly) scared when they get to a site and see this thing asking them to download and install a plugin. It gets even worst when you're talking about Mac and Linux users, lots of them don't even know what is Silverlight (just try among your friends).

Another aspect is that, unless you have some very good design skills, or are planning to hire a designer, a Silverlight site has a big chance of looking ugly as hell. When you go for good old HTML you have tons of beautiful, free html and css templates out there, but that's not the case with Silverlight, AFAIK.

Finally, if you really want to learn web programming, the best is to start with the basics, HTML, CSS and Javascript. In the case of Javascript you can skip learning all the gritty details, and go for jQuery, it will be a great stepping stone. If you really want to play with Silverlight and XAML I would recommend adding some pzazz to the site after it's up and running, but not upfront.

For someone starting on web development, coming from the ASP.NET side, I would strongly recommend ASP.NET MVC, like the guy before me did: it is closer to real web development than webforms, and it promotes (though it doesn't guarantee) a more elegant architecture. I know that your goal #1 is to learn Silverlight, but I would hold on a bit and get the basics covered first.

Now, when it comes to the specific Junior Women's Club site you mentioned, I would go for a packaged solution like DNN first; then, once everyone is happy and dandy (and it will take a while, you'll get an infinite number of requests once it's available, from font colors to new features to administrative tasks) then you can start working on your own pace and in peace on a homebrew v2. Another nice thing about DNN is that it allows you to code your own custom modules, so you can do some web development (including Silverlight) in small pieces, instead of getting bogged down on a huge project at once.

rodbv
+1  A: 

Probably one of the best "what CMS?" questions I've read on SO.

Considering your IT background, I suspect that you're comfortable with Windows' manuals / instructions and getting a CMS up and running would probably be fairly quick. The sooner you get some content up the better, and leave the HTML/css for later. In fact, I'd say go out and find a free / plain template and master the functionality of the CMS. Understanding HTML/css is good, but understanding what the content is and how the CMS works is key.

Once you've got the site up and running, you can then focus on the HTML/css, if you're going to fail at either part of this, then the HTML/css is the part you can afford to pass off.

Steve Perks