Continuing with this series on my plans for MSDN Magazine, I’ll address here another question that I’m getting often these days.
While a few posts ago I talked about the mindsets on which my content strategy is to be based, it’s now time to talk a bit about the concrete stuff I’m envisioning, in order to turn my editorial line into something more tangible.
The magazine today is composed by certain regular sections, known as columns, and completed with features: extra articles not tied to any of those columns in particular. In practice, as one of my partners made me notice, columns are less regular than expected as they don’t appear on every issue each, but they actually alternate their occurrences.
In that sense, the idea of reformulating the column lineup has as goal to narrow the set of columns in something that covers the whole development scope, but it also is definite, predictable.
The current alternating column lineup comprises:
- CLR Inside Out
- Basic Instincts
- Data Points
- Office Space
- Cutting Edge
- Patterns in Practice
- The Polyglot Programmer
- Test Run
- Service Station
- Security Briefs
- Extreme ASP.NET
- Wicked Code
- Under the Table
- Team System
- Windows with C++
- Concurrent Affairs
- Going Places
- .NET Matters
- End Bracket
Regarding the thoughts above, what the reader may expect is some merge between columns of similar kind and perhaps the removal of certain columns whose frequency is beeing remarkably low. In that sense, it is not that we’ll stop publishing that kind of stuff forever but will do it as feature articles, not as regular columns.
What you are about to read now it’s not yet consolidated as I’m still working with different stakeholders in order to arrive at by consensus and cross-validation; ensuring that no gaps will remain unclosed in this content strategy and that the overall plan is realistic. Do you want to hear my early conclusion so far? Making this kind of project plans, dear reader, doesn’t differ that much from making software project plans! Indeed, one have to align expectations coming from different parts, with a particular perspective each. As I don’t want to leave you out of this debate, I’m publishing hear my thoughts in order to get your feedback. Don’t miss the chance and get involved. Be part of the magazine you want to get.
And the Winners Are…
… this is a tentative column lineup intending to cover all those aspects that must be present in professional application development. Let’s see:
- Application Design. (A little disclaimer first: not only this column lineup is not yet final but also column names would be also subject to rework). A division of labor like the one depicted in Fig. 1 is achievable thru different ways. You may define your layers, assigning namespaces to each, defining interfaces to be exposed between layers (usually lower layers expose interfaces to upper ones but not vice versa), and finally implementing those interfaces in concrete classes. Or you may take advantage of any application framework like Castle Project, Spring.NET, CSLA.NET or P&P’s Enterprise Library.
The purpose of this column is to keep you updated on strategies and tactics for application design and application architecture, as a way to help you achieve decoupled components that will be easier to evolve and extend.
We’ll complete this column coverage by explaining patterns and delivering lessons learned on library design.
Regarding the current column lineup, Patterns in Practice seems to be somewhat similar to the idea sketched in this bullet but perhaps this tentative section of the magazine will be a superset of that one. Cutting Edge, when emphasizing patterns usage seems also to be continued in this new column.
- Web Applications. This column would be a reincarnation of current Extreme ASP.NET and as long as I was checking the current one, it won’t vary too much. Perhaps a bit more emphasis on infrastructure aspects that a developer must take into account (IIS, session management for performance and scalability, etc.) but I didn’t have to review too much to find that such content has been being published, actually. Just want to remark that no matter what it happened, I’ll make sure that will happen in the future.
- Desktop Applications. In this section, the reader will find information pertaining to client-side deployable applications. In most cases in a fully capable workstation (desktop computer, notebook) but eventually we’ll consider in this category other devices like smartphones, embedded systems, etc.
Will cover here not only presentation layer patterns, techniques and technologies like WPF, Silverlight or Office applications, but also deployment considerations, coexistence with other applications, optimization techniques for footprint reduction, runtime resources, some basic infrastructure concepts for monitoring, virtualization, etc., with their related technologies (Windows operating system, App-V, Forefront, and so on).
I believe that there’s no correlated section today in the magazine. Perhaps a smaller portion of Foundations, particular regarding WPF, Wicked Code (that lastly was devoted to Silverlight, but that column doesn’t have any specific technology behind), and Office Space. I should include Going Places too.
- Distributed Applications. We could say that, today, between Service Station and a considerable part of Foundations devoted to WCF and WF, we are mostly covering aspects of distributed applications, service-orientation, etc. However, we must consider that distributed applications are not just made on .NET at every party. While our center of gravity will be in .NET, will consider special cases like, to mention one, Java interoperability, etc.
Regarding the mindset about infrastructure background, will also consider BizTalk Server and other products that cover several related aspects (business activity monitoring, etc.)
We’ll also discuss best practices for distributed applications like the coarse-grain pattern, asynchronism, concurrency, federated identities, etc.
For sure, as told, infrastructure matters. With the advent of codenamed Dublin application server, will highlight its features here, and how developers can take advantage of.
There’s one only case in distributed computing that I prefer to leave aside: Cloud Computing, which it seems that deserves its own column.
- Data. It will surely include current Data Points and Under the Table columns, but will also span to other data related topics like Business Intelligence. In professional development projects there are other stakeholders beside programmers, and regarding data in particular, there’s a guy called DBA who takes decision on database-access. As told when discussing mindsets of the next editorial line, we’ll take into account factors like conflicts of interest and other team-related issues.
- Core .NET. I foresee here a merge between CLR Inside Out, .NET Matters, Concurrent Affairs, The Polyglot Programmer, Basic Instincts and Windows with C++. With this column my intention is to focus on the runtime platform itself (to mention some, the garbage collector and parallel execution among others), and at the same time on its programming features, particularly those related with expressive power and programmer productivity (like the inclusion of anonymous types, lambda expressions, etc., which helped avoid lots of lines of code). Just anticipating the question “what about dynamic languages? will they be consider too?” my answer is “definitively.”
- Meta-Development. Remember the mindset “We, the People of the Project Team”. Consider the development process. Consider the development team and the broader team considering the project leader, security specialist, database-administrator, testers, users, IT Management, etc. Consider communication, conflict resolution between the parties, interests… Do also consider tools to make communication more efficient and the process in general more productive. Regarding this last, we’ll base this column in Visual Studio Team System but will also consider its numerous extensions (MS-owned and third-party ones). I don’t believe we have, in the current column lineup, a similar column today but there are lots of Visual Studio-related articles published as featured stuff (I mean, not as regular columns). However, a subset of this column has been coming for several years now. I’m talking about Test Run column. Testing is just one aspect in a broader, more complex software development lifecycle and we’ll keep this kind of stuff. We’ll complement it with the other SDLC aspects, though.
- Cloud Computing. As told before, this is actually a special case of distributed applications. However, the latest achievements on its field (several of those yet not launched but just announced) are keeping this topic as a brand new runtime paradigm. Windows Azure promises a programming model that won’t vary substantially from the current, on-premise-based delivery model. However, despite its well-known benefits in lowering IT costs, there still is certain reactive behavior in moving to the cloud. How to make compatible identities in the cloud and identities in the company domain directory server? How to deal with data stored outside and confidential information stored internally? (a survey showed as result that most of companies are not massively going to the cloud because of the issue of confidentiality). Will finally SQL Azure offer a programming model similar to traditional SQL Server programming or not? How about the development environment? … A lot of concerns around Cloud Computing so it won’t be a bad idea, at least for some while, to keep a column on it. This will include interoperability with other cloud platforms and development languages.
- Toolbox. It offers insightful information on third-party tools and gadgets. It has been out there for a long while but typically offering new stuff as long as the rest of the partner ecosystem keeps active and releasing new stuff. Let’s keep it, then.
- Cross-cutting Aspects. I’m not quite sure about whether it’s convenient to keep a separated column for cross-cutting aspects like security, performance, scalability, manageability, user experience, fault-tolerance and many others. All these aspects require a specific expertise and I’m sure that any matter expert on a given aspect xx any of these will tell me “you must definitively have a permanent column on aspect xx!!” And they all will probably be right. The point is that I can’t allow infinite permanent columns, otherwise the magazine would have infinite pages (it actually sounds nice, but keep in mind that the subscription price would also be infinite ). Since the year 2000 until these days we have a column called Security Briefs. It doesn’t appear every month but it has survived as possibly no other column in the magazine.
My thought, actually, is that cross-cutting concerns, as they are present at any layer, any tier in the diagram of Fig. 1, they all require different tactics depending on the context you are. For instance, in the presentation layer of a web tier, you must take care about potential cross-site scripting while in the database tier you must be concerned about SQL injection. Both kind of threats are similar in nature and their countermeasures are similar too. But while both strategies are analogous, their concrete tactics vary.
We could move to another aspect. Performance for instance. We may decide to implement caching for any inter-tier communication (client-side to server-side, data-access layer to database tier, etc) as a way to reduce response-time of those request whose response very with a rather low frequency. Like the security example, at an architectonic level the strategy sounds the same, but at a coding level, ASP.NET offers caching techniques that are others than the one offered by the Caching Application Block included in the Enterprise Library or the distributed, rollover features that will offer Project “Velocity”. Principles are the same in any case but some special tuning was made for each context.
For the reasons above exposed, I believe that it could make more sense to discuss cross-cutting aspects as part of the other columns. Or, eventually, as featured articles (articles outside regular columns). It’s perhaps too early to decide. The reader must be sure that, given the case that we don’t include this column, it won’t be a signal that we won’t cover cross-cutting aspects: it will be a signal that we’ll do embedded in the other columns and/or as featured articles. In any case, the online version of the magazine will group articles as a consequence of multi-tagging. That way, you’ll be able to retrieve cross-cutting concern articles as easily as pulling the articles of a given column.
So, I listed ten tentative columns. These are still preliminar and the idea of publishing there was to satisfy the anxiety about what plans I'm envisioning. It will require some reviews, reworks in order to be confirmed. That should happen in the next few weeks.
And, before finishing, what about the featured articles? What will they be on? In principle, they are intended to be based on the monthly theme (I’ll offer a post on upcoming themes soon). That may not be the case for every featured article but, if not, will be just the exception and probably because some of the columns will be also based on the monthly theme. I’ll cover all these in further detail soon.