The Four .NET Web Development Steps to Enlightenment

by Moridin8 22. June 2007 20:05

In my humble opinion Microsoft made a slight mistake with the way they implemented ASP.NET in 2005. They should have split their documentation into at least three areas and defined a path through them that over time introduced newer and lower-level concepts as projects become more complex – and that this path should be kept independent from the whole certification framework and made generally available for everyone.

These three general areas should have been split into something like as follows:

  1. Small sites that require only the highest level knowledge of ASP.NET – essentially this would be what come’s out of the box as most people new to ASP.NET understand it.
     
  2. Medium complexity/size sites that require some control customisation and a greater understanding of the underlying technology. You could say that this is the point you start to wonder if ‘.ascx’ is going to do everything you want and maybe you might be considering a Web Service or two. You also may start to wonder if the 2005 version of web projects is cutting the mustard. You also find that class libraries are starting to look attractive.
     
  3. Larger sites that maybe could be called ‘Enterprise’ or ‘distributed’ solutions. Here you would require a varying knowledge of the platforms and technologies from intermediate to exceptional. You instantly discover that the nice fuzzy world of ASP.NET isn’t that fuzzy after all and in fact can become a hindrance. You have to work more and more outside of the nice cosy ASP.NET world and ASP.NET simply becomes a thin layer façade over the real work underneath. You may also start praising Microsoft for caving in to the real world and releasing proper Web Application projects as part of VS2k5SP1.

It is not that any of the above isn’t possible to construct with everything that Microsoft makes available, merely that there does not seem to be an easy path through the possibilities for people and many developers new to the ASP.NET platform, while finding the initial transition easier than with the previous versions of .NET, find that there can be a very steep learning curve involved if anything more complex than the ASP.NET based controls is required.

One of the largest issues I encounter is related specifically to this learning curve, especially with individuals migrating from ASP, PHP or Coldfusion (although admittedly this is becoming less of an issue with PHP as many PHP developers are happily embracing the OOP paradigm as the language grows). Even though Microsoft’s marketing is proving successful with ASP.NET’s take up being faster that at any other time, Microsoft is making technical transitions potentially difficult DUE to with their marketing and high level fluffy features available in ASP.NET.

That’s the thing though, it *is* easy to create basic dynamic web sites with ASP.NET using many of the advanced drag-and-drop features of the IDE, so initially ASP.NET comes over in the most part as a breath of fresh air and in fact, Microsoft has excelled here. However, if you do need to create something a little more complex than the statistical majority represented by the smaller-site implementations, you have to start to scratch and look beneath that shiny veneer; this where many find that under the shiny exterior ASP.NET can actually be a complicated beast.

ASP.NET reeks of one aspect of the KISS (Keep It Simple Stupid) principle. In order to make ASP.NET easy to use for the masses they have had to stretch and contort everything. Most of it is exceptionally clever and ASP.NET is a wonderfully powerful reflection and JIT compiler engine. It’s because of this end-user KISS based design that Microsoft have inadvertently made the ASP.NET internals a bit complicated. Also because of this ‘ease of use’ angle Microsoft has completely ignored in many instances (except for the Singleton for example) the entire OOP design paradigm from MSDN and more specifically ASP.NET.

This is a huge travesty that is giving me the most cause for concern at the present moment.

Many well intentioned and possibly very skilled Web Developers are missing the point to .NET because of this. .NET is Object Oriented! Why the hell is Microsoft not telling people how to leverage this paradigm? Why are so many developers being left out in the cold in this manner with .NET?

It is because of this issue that I and no doubt many, many other developers/architects ‘in the know’ are finding that they are being employed to work on projects or teams that are suffering badly directly or indirectly because of a lack of knowledge in OOP, .NET and how computers really tick.

Because I don’t have time to do something about the situation described above, all I can do is give some general pointers…

So those four steps to ‘.NET Web Development’ enlightenment are in my opinion as follows:

  1. OOP
    • Learn the basic pillars of OOP, ‘Encapsulation’, ‘Inheritance’ and ‘Polymorphism’ using the .NET language of your choice.
    • Learn how to use the Gang of Four design OOP patterns with the .NET language of your choice
    • Learn to think in these patterns so that when you are presented with a problem, you can state to other developers and business analysts the names of these patterns and why you think they are useful.
       
  2. ASP.NET
    • Don’t use ASP.NET’s inbuilt tools simply for the sake of using them, they are sometimes too generalised and trying to be too many things for too many reasons.
    • Never use the newer Website projects in VS2k5 – Install SP1 and use real Web Application projects. Convert them if needed. Get away from the VS2k5 website!
    • Keep UI logic and Business logic separate. Don’t be afraid to use class library projects.
    • Use Web Control library projects instead of ASCX’s if appropriate, especially if the controls are to be re-useable for other projects.
       
  3. Learn how your computer works; learn how .NET makes your computer work.
    • If you don’t know:
      • Why a string comparison is slower than an integer comparison
      • That ASP.NET isn’t just a request/response based environment
      • Why the Dispose/Finalize methods are so important and how the GC works
      • How your computers memory and general IO works

        And you are not interested in finding out, then to be quite blunt - stick to small websites!
         
    • Learn why you should split Presentation from business logic and business logic from data logic. 
    • Get Lutz Roeder’s Reflector and don’t be scared to use it to view the internals of .NET. You may be surprised what you find and how it will improve your ability to leverage .NET.
       
  4. Be your own apprentice.
    1. Buy books and learn.
    2. Use gained knowledge and help others
    3. Goto point a - Repeat forever.

 

Tags: , , , , , , , , , , , , , ,

Articles

Web/Software Developer Differences?

by Moridin8 20. June 2007 20:03

** I have added this here as this is a subject that I discuss and work with often. 

The original post can be found on this thread: 

SitePoint - General Dev Issues/Difference between Web & Software Development . **

Originally Posted by Manpasand 
Is there any difference between web development and software development?
As part of my profession it has fallen on me once or twice to quantify the differences between the two roles, if any. I have written a white paper and a couple of advisories on this subject and if I could post them here, I would - contractual obligation and client confidentiality unfortunately forbids it. So I will attempt to the best of my ability to explain a few conclusions that a few focus groups made up of business representitives, developers and I managed to come up with.

This needs to be split into at least two areas of consideration:
  • Past and present situations.
  • Corporate and personal expectation and reality.


(and various others… but the above encapsulate most of it)

In the days of yore, developing interactive non-static web applications tended to be the province of C++ developers via the CGI standard of the HTTP protocol. This required an in-depth knowledge of communications and the servers OS. Later this progressed to Perl implementations which started to allow abstraction of the hardware layers from the implementation allowing greater productivity. However Perl as a language suffers somewhat from a geeky image and never really got the popular vote.

It wasn’t until PHP, ASP and their ilk that web development started to come to the masses. ASP (with VBScript/JScript) and PHP are both exceptionally well abstracted from the hardware and only require a superficial knowledge of the underlying systems to be productive. Due to this, pretty much anyone who could string together an if statement and understood basic algebra could start creating dynamic websites.

More recently this is beginning to change again. Websites are beginning to look and work like applications (SaaS is a good example of the future) and the distinctions between Web and Desktop applications are beginning to blur. Developers are being required to have more than a superficial understanding of the hardware and systems they are using and this is actually beginning to become a problem that business is starting to notice.

The cohorts out there are beginning to mostly polarise into around four factions.

  • Designers who became web developers who stick to their preferred technology (e.g. PHP/ASP) no matter where it takes them

    These individuals are usually those who are self employed or employed by smaller firms. Most of the larger corporations are beginning to ignore this group as many see PHP and ASP as inadequate.
     
  • Designers who became web developers going back to near pure design.
     
    This is by far the most common route for an ex-designer. These designers are quite sought after by the larger corporations as they at least understand development work, and can even work on client-side scripting.
     
  • Developers who became web developers who stick to their preferred technology no matter where it takes them
     
    This group is beginning more and more to be seen as specialists or more often as outmoded and unemployable. Most employments in this area now are becoming contracts or outsource roles (see point 1). Most developers who did this are widely (and possible erroneously?) considered to be individuals looking for an easy life in their day to day work.
     
  • Web developers or developers who became web developers going to near pure software development OR moving into SaaS, SOA and related technologies.
     
    This is by far the most common path for developers, although those coming from web development backgrounds are finding the path harder as they have to re-learn and work around mistaken perceptions generated from their PHP/ASP pasts. Those coming from a more non-web background but moved into the web arena are the best equipped and the most sought after.


In basic conclusion to the question


“…Is there a difference between a Web Developer
and a Software Developer?...”

In essence no, a software developer is a software developer, web or otherwise. However, if you consider ‘Web Development’ to be different from ‘Non-Web Development’ then historically yes, there is a difference, one that is beginning to blur.

A few years ago, Web Developers generally required less technical knowledge. Although the larger the system being developed, the more technical knowledge required, and coincidently this seemed to tie hand in hand with a scale that went like this:

The smaller a system, the more PHP, ASP and their ilk was used.
The larger a system, the less PHP, ASP and their ilk was used.

As applications got bigger, COM/COM+, Java and more recently .NET got used more, and this requires much more technical knowledge than that required to create a site using PHP, ASP and their ilk.

These days as ASP.NET and equivalents are taking their share of the web, higher skill levels are required if you want to go beyond the productivity basics supplied by their respective vendors.

As always there is the question of scale, with scale come’s complexity and that’s the basic truth of it.

Much of my work more recently has been to do with repair. It is an unfortunate trend that businesses and technical teams underestimate the cost and requirements of using the newer technologies and they can easily become out of their depth.

Teams who have happily worked for a decade with the script based technologies with a smattering of back-end components have been rudely shocked by the differences when attempting upgrades. Unfortunately there is also a growing number of developers who are amazing with the older web technologies that are beginning to flounder, and it’s a sorry thing to see – especially in the UK where training is a rare commodity.

As a personal view therefore I must say that yes, there is a difference and it costs business a lot money. Hopefully time will remove those differences.

- Matt 'Moridin' Warren

Tags: , , , , , , ,

Articles

A Perceived Problem with ‘Web Developers’ & A Possible Solution - Part 1

by Moridin8 22. May 2007 19:57

Part 1 includes: 

  1. A personal perspective on the Internet boom in the UK . 
  2. A statement of the perceived problem.

1. A Personal Perspective
I was just 18 when the internet started to take off, and despite my college (High-School in the USA) having several well equipped computer labs for the time, there was only one modem in the entire building – and it was in the library. The internet was slow and wholly unimpressive.

AmigaBy that point in my life I had already had commercial software released and I must admit, aside from a small passing interest my involvement with the Internet was small. Very small. At that point in my life I was coming to terms with the Commodore Amiga falling by the wayside and you would have been more likely to see me in the local pub on an evening rather than sitting at my obsolete machine. As a student, the last thing I could afford was a PC, and the Computer Labs – while open to me as a Computer Science student – didn’t allow you to do anything but MS-DOS based Turbo Pascal things or the use of M$ office. At this time I knew C inside out along with a good dose of MC68k assembler, and despite my protests they weren’t going to install VB, let alone C++ on their network.

Little changed at university, the extensive computer labs had intermittent and very slow internet access, I finally got to get my hands dirty with C++, although the OOP and design courses were dire. And web development at the institution was purely the province of Perl programmers. Java was a new thing and was only just beginning to pop it’s head over the parapet so it hadn’t yet made it into the course and M$ being M$, their software was no-where to be seen. This pretty much left developing for the internet a personal interest only pastime.

As such pretty much the first years of the internet hype revolution pretty much passed me by in a haze of a student social life mixed with subjects I already knew pretty much inside-out and trying hard to live on an excruciatingly low budget. Rent? Food? Or study materials? WOPR

I’m geek. I know it. I was programming computers when I was knee-high to a grasshopper. Ever since seeing that movie War Games that featured a computer called WOPR first reached the small screen, I wanted a computer.  Thankfully my youthful prayers were answered in the form of a hand-me-down Commodore Vic 20.  Remember those anyone?  And later after earning the cash doing a paper-round, a Commodore Amiga 500. 

In short I’m trying to say that I’m a computer enthusiast who is lucky enough to see work as a chance to flex the wings of my deep seated interest and hobby.  I suppose in a way I am one of the lucky ones. I was exposed to computers at a very low level from the outset and as such I know how they tick. 
Which is more than I can say for many of my industry peers around my age and younger.  Those with similar exposure to me have in my opinion a distinct advantage. 


2. A Statement of the Perceived Problem

Many of the developers in the UK in the first decade of their career (and some in their second) do not fully understand the technology they use.  This is not to say that everyone is in this position because I have worked (and indeed work) with individuals who are very good at what they do, but alas I have found them to be in the minority. 

They tend to be the ones that were like me, interested at an early age.  Or maybe they were thrown in at the deep end with an exceptionally technical project and managed to swim instead of sink, or those who found themselves in an environment where knowledge exchange from more experienced and knowledgeable team members was actively encouraged.  Unfortunately though, in the current UK political IT climate, many individuals are not fortunate enough to experience this. 

Another nail in coffin is the cost to business.  For an example in extremis, there are organisations out there (one I recently experienced) still NT4 entrenched and/or running creaky old legacy systems from the mid eighties, where forward thinking is actively discouraged and new technologies are seen with distinct and avid distrust.  After all, if it works, why fix it?  So there are many developers out there who haven’t had the opportunity to move on and out and those that finally pluck up the courage to move on are replaced with cheaper graduates, invariably creating a knowledge and experience deficit that can never seem to be resolved. 

Being a contractor for most of my career has given me a somewhat detached perspective to this.  Being interested as I am in the industry as a whole, being the sort of person who would rather learn a new innovation than play the latest and greatest computer game has allowed me to stay on top of the latest technologies.  It has also given me the chance to see many organisations of different sizes and shapes basically all repeating the same mistakes.  Undervaluing IT staff, and treating them as interchangeable assets, under funding area’s of business that the business relies on to do business and conversely allowing behemothic IT departments bully the rest of the business into what suites them and while this may sound wonderful, in practice these are the departments full of legacy equipment with a ‘path of least resistance’ philosophy.

Business is a big player in all of this.  But then, so are the employees.  It’s a sad and regrettable fact that too many people in the UK IT industry regard business funded training as the only way that they would consider learning something new.  In a climate of actively promised industry training that hardly ever materialises this is a horrible perspective to maintain.  Indeed several candidates I have interviewed in my career for roles have admitted when questioned that even though new technologies are readily available, they haven’t pursued them because their employers wouldn’t pay for it.  In my book that’s an instant disqualification!  But this attitude is rife!  So many are simply happy with the status quo and they sit comfortable in their own world doing their utmost to maintain it.

Non more so than with the role of ‘Web Developer’.

I and many of the individuals I have worked with in recent years are the left over’s from the internet boom years (yes, I am one of them).  We were employed in the high times or in the aftermath that still pervades straight out of university to create websites using ASP, PHP and scripting technologies of their ilk.  Knowledge of OOP wasn’t a requirement (most employers didn’t even know what it was!) nor about the underlying technologies in any great detail. 

My very first role in the industry was as an ‘ASP Developer’, and all my employer needed to know was that I had a vague knowledge of the 4 SQL statements, a basic understanding of VBScript and I could write some HTML.  The combination of these technologies even then was a massive step down for me, but I needed to eat so I took the role.  This decision was more out of desperation than I would have liked as there were few other IT roles at the time. So there I was spending my first year essentially being a drag and drop monkey programmer as my employer churned out one website after another and charging extortionate amounts.  I got to tinker with VB COM objects occasionally where a little extra performance was required, however this was very rare. 

When the dotcom bubble burst, so did my employer. My co-workers and I would turn up to work each day as requested and some weeks there was nothing to do. Slowly the staff slunk away either because there was no more work or they got made redundant. Eventually even one of the directors found another job. In the end it was just the MD and me – until the MD sold the remains of the company. Of the entire company only I was employed by the new owners, but only for a limited time. I hope as a small testament to my ability, although in reality being the newest junior programmer it was probably because I was the cheapest.

My story and the story of so many others, is not unique. Many have not moved on from the collapse. So many companies even now still only use ASP and PHP, though this is becoming less of an issue to some extent as Microsoft based companies are moving out into .NET and some of the others are choosing to head the way of Java. Microsoft being aware of this is seemingly attempting to further dumb-down ASP.NET under the guise of productivity in an attempt to make the transition easier, much to the chagrin of many a more skilled developer. The simple truth is that moving from the ASP/VB procedural "object aware" cludge paradigm to the ASP.NET OOP/Event driven paradigm is not an easy transition once you move below the superficial facade on the face of ASP.NET. I've been bought in almost too many times to count on projects going into the toilet because the development team did not understand what it was getting itself into and because the business didn't understand the true cost of the transition.

I am one of the lucky ones. I understood OOD and associated patterns early, even though I must admit the exact names of some of the more abstract GoF designs and those derived from them eluded me (come to think of it one or two of them still do until I need it...). I had had the opportunity in the earlier days of my life to play around with opcodes (MC68k assembler), Just In Time technologies and other abstract things such as event driven models (the Amiga had one great big event driven OS that multitasked better than XP does now!). Very, very few people have had that chance.

The problem is this, and it comes in several parts:

  • Lack of individual opportunity and motivation to improve
  • Lack of knowledge on the part of the developers and their employers
  • Lack of a willingness to really invest in the future

And in the UK specifically, one driving thing:

  • A saturated IT job market where loyalty is virtually non-existent and the employers just don't care.

 

[Here ends part 1]

Tags: , , , , , , , , , , ,

Articles

Powered by BlogEngine.NET 1.5.0.7

About Matt R.Warren

MeMy name is Matt and I am the current tenant of this small corner of the internet. I mostly architect, design and prototype applications that use .NET with C# and a little C++/CLI for Enterprise although I am aware of and enjoy fully embracing Java based solutions and alternatives such as Mono/Linux.  

I have worked on projects ranging from small tools to large distributed real-time Enterprise systems ranging from EPOS and real-time/JIT stock management systems, to distributed applications for National/International Utility, Healthcare, Insurance and Finance  in the private sector in both the USA and the EU.

My LinkedIn Profile (Opens new window/tab)

“Matt is one of the brightest people I've worked with. His in-depth knowledge of the .NET frameworks has been a tremendous benefit to nVISIA and our clients. His knowledge of software architecture in general allows him to architect systems for the best fit to his client's needs.” 
Dan Christopherson , Technical Director , nVISIA

“I had the distinct pleasure of working with Matt at nVisia. Matt's understanding of the Microsoft Technical space is outstanding. He is constantly working on improving his technical skills and rapidly masters any new technology that he encounters. He is an excellent teacher and a wonderful asset for any size team.” 
Jim Harnden , Senior Technical Architect , nVISIA

“Matt Warren is a very talented developer with great capacity for self study, investigation and adapts to new languages and frameworks with ease. He has an excellent grasp of software architecture and modern development principles. He has proven himself time and time again to be a hard worker and someone who can get the job done when you're in a tight spot.” 
Andrew Jump , Partner, C# Developer , Contegra

This website represents some of my spare time.  My small presence on the web between my family and my career.  I hope over time you find many useful things here.