YOUR FEEDBACK
johnpetersen wrote: Great post. You hit some good points, and hopefully me sending this post. It wil...
Cloud Computing Conference
November 19-21 San Jose, CA
Register Today and SAVE !..


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP LINKS YOU MUST CLICK ON


Components and Architecture
Components and Architecture

Juval Löwy is a Microsoft "Software Legend" and RD, and architect for IDesign, a consulting and architectural services company. In an exclusive interview with .NET Developer's Journal editor-in-chief Derek Ferguson, Löwy discusses the need for an inherently extensible architecture, the importance of a commitment to quality, and the bright future of .NET.

-Interviewed by Derek Ferguson, editor-in-chief of .NETDJ

.NETDJ: Juval, I know that you are a Microsoft RD - what does that mean?
JL:
An RD is a Regional Director. I don't work for Microsoft, I work with Microsoft. Specifically, I am RD for Silicon Valley, which means that I keep Microsoft educated about the industry, the industry educated about Microsoft, and even sometimes Microsoft educated about Microsoft.

One way I do this is by participating in the strategic design review sessions for future generations of .NET. I also do this through a different channel by sitting on the .NET advisory council, which is a collection of customers that Microsoft consults to find out what people think about the direction of .NET.

.NETDJ: What about your interactions with the general public?
JL:
In terms of my interaction with the public, my most recent book - Programming .NET Components - was published by O'Reilly in April, and I have also published numerous articles. I was one of the founders of Bay.NET, the Silicon Valley .NET user group, and I am responsible for the monthly program. I speak at major developer conferences and I've been recognized by Microsoft as one of its "Software Legends," a title reserved for the top 10 or so experts in Microsoft technology.

.NETDJ: What do you do for a day job?
JL:
I was previously corporate architect for a large company. Now I am the principal architect and president of IDesign.

.NETDJ: What does IDesign do?
JL:
We provide high-end consulting and architectural services to client companies. Typically we consult on architecture for two days to a week, and also conduct some very intense training, including advanced topics.

.NETDJ: Your involvement in training is interesting - is that primarily focused on ensuring that the systems are properly maintained?
JL:
Well, besides technology (which we cover in the training), there are really two key factors involved in maintainability: commitment to quality and getting a good architect. A manager has to understand that you have to perform all the right steps: gathering the requirements, top-level design, design reviews, code reviews, testing, installation, and documentation. If a manager doesn't understand that you need to do all of those things - if the management mentality is just "code like hell" - nothing is going to help.

.NETDJ: When you say "commitment to quality" - what does "quality" really mean?
JL:
Quality is creating the most productive code you can. Because if you don't spend time debugging, then you spend more time adding features and you are much more productive. Quality means no defects - your components should be rock solid. If your atoms themselves are not stable, then because of the complexity at the system level, you will never be able to debug the system.

.NETDJ: What do you see as the number one obstacle to high quality, besides not having rock-solid components?
JL:
If we assume that you compose applications according to requirements, then faulty requirements require faulty behavior. I believe that 85% of all defects in mature organizations can be traced to defects in the requirements.

Of course, that's the kind of thing where a good architect can help minimize the effect of faulty requirements by designing extensible systems.

.NETDJ: How much of a demand do you see, then, for great architects?
JL:
Well, it is impossible for most organizations to hire a great architect. Only 1 in 10 good developers (meaning 1 in 100 of all developers) is even capable of being an architect. Architects in most companies are perceived as just super-smart developers, so no one is paying three times the developer rate for architects. With today's short budgets what we've found companies are doing (or trying to do) is saying "we can't keep chasing our tails to try to master every new technology or methodology. Instead we have a core competency - we have some domain knowledge that no one else has. This is what we'll focus on."

Now traditionally, you spend 5% of your time programming product features and everything else is programming the infrastructure, the glue, the plumbing, issues such as threading, remote calls, security - that's where if you make a mistake, you're doomed. Smart organizations recognize they need world-class architects, but they can't hire them. For one thing, they don't know where they are and for another, they can't pay them what they deserve, or retain them as architects, resisting the temptation to use them as developers once the design is over. So, instead, they are deciding to have their own small teams that understand the problem inside and out, and just getting somebody to come in and help with the architecture once every few years.

.NETDJ: What makes a world-class architect?
JL:
One thing is having critical thinking skills. Another is the ability to abstract. Finally, very important is the ability to understand priorities. You have to really understand the core - a good architect may not even care what the product actually does - the ability to abstract beyond the specifics of the current product is important.

The main reason for this is that we're seeing a shift in software life cycles in the industry. In the early '90s, everyone was trying to do waterfall development, ending with a complete product. It turns out that this model doesn't work too well in today's environment; it assumes that you know everything up front. It also assumes that the requirements are fixed and you understand the requirements.

Today, it is sometimes better to ship something first than to wait for your competitors to put you out of business. In addition, the rate of change of technology is accelerating; I wrote an article that suggested that the length of a technology generation (DOS to Windows, Windows to .NET, etc.) is about 6-7 years today, as opposed to 10-12 years a decade ago. Developers are constantly not good at what they do, because they need to keep relearning.

So, to get around this, you want to come up with an architecture that is inherently extensibleScomposed of a set of interacting components. The system can be extended by combining the components differently or by adding new components. You focus on creating the right set of building blocks, and then you just add new features as you go along. It requires a great deal of abstraction because the individual components by themselves cannot be mapped directly to features, and are often general-purpose components that could be used in other products. The product is basically just a model for how to put the components together.

It's really a lot like Agile Development.

.NETDJ: Does that mean that Extreme Programming (XP) is best for creating .NET systems?
JL:
Pick the process that works for you! If you are doing .NET, you should really be using something component oriented, though. XP is for priests, not the real world. Most developers and organizations can't apply everything that XP says you must do. The Component-Oriented Development process is my choice.

.NETDJ: What's that?
JL:
It is a process that I defined myself, actually. The basic premise is that because you're using components, this affects every key process area. If you have multiple developers creating infrastructure, for example, how do you track progress and quality? How do you do version management? I took every key area and adjusted it to the fact that you are using components. I invested enough time to come up with a unique model for this, which I have applied successfully myself, and which I help my customers adopt.

.NETDJ: Getting back to what makes a world-class architect, are technical skills or people skills more important for an architect?
JL:
Being an architect requires having good technical skills and good personal skills. You have to understand the requirements and then be able to sell them to management and developers. For example, if the board asks you "Is your proposal the best architecture?", then you have to be a bit of a salesman to convince them that your plan is definitely the best - even though there may be other possibilities out there that you don't know about.

This requires being a bit of an extrovert, really. I mean, when you present a design to management and other developers, you are kind of standing naked in front of them - your design is very much an expression of your own personality and thinking. A good architect can not only do that, but will enjoy doing it! The best thing that can happen to an architect is to be told that he is wrong and then be given an opportunity to improve the design.

.NETDJ: When you talk about presenting a design to management and defending it, I'm thinking strictly in terms of really big projects. Is that correct?
JL:
Well, what do you mean by "big projects" - code size or team size? Let's assume that the size of the team and the size of the code are analogous. I don't think that there should necessarily be a difference in the way that you architect your solution. I think that the real determining factor is the intended life cycle of your application. What are your plans for it? Is it something that you plan on maintaining for many years or is it something where you just need to be first to market, regardless? The bigger the size, the more likely it is that you are going to push maintainability, to get a longer return on the larger investment. Large applications tend to be written for a longer life span. Smaller applications tend to have more of a rapid application development life cycle.

.NETDJ: How does all of this tie in to .NET?
JL:
.NET is a clean slate - Microsoft did a lot of soul-searching about the issues that developers are facing and they took the best of all worlds and combined them in a very consistent manner. When you have this level of maturity in a development platform, it's not a hodgepodge of organically evolved APIs - it's all very consistent. I like the fact that many of the things that I had to do manually in COM are taken care of for me in .NET.

.NETDJ: Does that make .NET the best choice for building enterprise applications?
JL:
.NET gives you all of the tools you need to create great software - but it doesn't force you to use them. For example, it supports the separation of interfaces from implementation, but it doesn't enforce this.

COM, on the other hand, was all about interfaces. However, most developers have a hard time dealing with interfaces. So .NET really is the best all-around platform for letting programmers code at their appropriate levels of expertise. I call the CLR the "Common Skills Runtime"!

.NETDJ: Where do you see the greatest interest in .NET today?
JL:
I see interest in .NET coming from anywhere people used to use the old Microsoft DNA technologies. Everywhere that this is currently in use, people are moving to .NET when they begin new projects.

.NETDJ: When do you think .NET will reach "critical mass" and everyone will be using it?
JL:
.NET will reach critical mass whenever the economy turns the corner!

.NETDJ: Interesting! Do you think that the depressed tech economy has helped or hindered .NET's adoption, then?
JL:
In general, it is much better to introduce a new technology in a down economy like this one. After all, who wants to change a wheel at 60 miles an hour? In a way, it has been a blessing in disguise, because everyone has been introduced to .NET during this period, when only a fraction are doing new projects. Now, when the economy picks up, everyone will be doing .NET!

.NETDJ: And do you think that Microsoft's new focus on "trustworthy computing" will be important to this?
JL:
Microsoft's bad rap for security is unwarranted really - just look at the number of alerts. Linux gets far more of them than Windows nowadays.

If you want absolute security, turn off your machine! Security is a compromise between usability and security. A highly secure system is very difficult to use. Microsoft traditionally opted to make technologies usable by the layman. You didn't need years of training and a PhD in order to use them.

However, by making them very easy to use, it also made it possible for laymen to deploy systems that were insecure. Does this mean that Windows is insecure? No, it just means that Microsoft Windows is ubiquitous - and therefore a much larger target than competing systems. I can configure a Windows box so that it is the most secure box in the world. It's all a matter of understanding the issues.

.NETDJ: So what exactly is "good programming?"
JL:
Good programming is whatever code gets the job done! You have to set your priorities. If your goal is to be first to market, then good programming is whatever gets the job done the quickest. But if you're designing a system to be maintained over a long time, you had better factor the interfaces really well.

About Derek Ferguson
Derek Ferguson is a noted technology expert and former Microsoft MVP.

LATEST ECLIPSE STORIES . . .
ILOG has announced ILOG JViews 8.5, the latest version of ILOG’s Java-based visualization suite, with new features that enhance the creation of Rich Internet Applications as well as desktop applications. ILOG JViews 8.5 adds support for the Eclipse platform including the new ILOG JVi...
"More than a half dozen conferences and events targeting Virtualization and Cloud Computing canceled in the past two months," said Fuat Kircaali, CEO of SYS-CON Media. "We predicted that this would be the outcome for many competing shows due to the current economic conditions," he adds...
The new LISA Eclipse Edition offers deep integration with many aspects of the platform, including the IDE, Source Control, Lifecycle Management, SWT interface elements, and other tools that operate inside of Eclipse. LISA test case documents can be stored and executed within the workfl...
There is much debate raging over whether cloud computing and grid computing are one and the same. In fact, there are many similarities and one key difference separating these burgeoning fields. Both cloud and grid propose an architecture that masks the complexity of managing thousands ...
XAware has announced its upgraded support for Eclipse 3.4. This enhancement gives developers and architects the ability to use the latest version of the Eclipse development environment as they create composite data services for service-oriented architecture (SOA), rich Internet applica...
On Monday October 20 in San Jose, California, the top Rich Internet Applications event of the Fall opens its doors: the 6th International AJAX World RIA Conference & Expo, with top industry keynotes from Microsoft's Silverlight supremo Scott Guthrie and Adobe's Chief Technology Officer...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

MOST READ THIS WEEK
ADS BY GOOGLE