When it comes to your business and your online exposure, you want your audience to clearly understand the message you are providing to them. However, the burden of this falls on your shoulders. You must take it upon yourself to understand your audience and cater the message to them. With good user experience at the forefront, we want the user to easily get the information they are looking for. Regardless of the type of site or application you have, your online success hinges on your visitor’s experience while browsing it. So let’s take a look at the basics of a clear message and why you should take it seriously.

Maximum Effectiveness

What should your primary message be? Well, what does your company do? Why does this site exist? As part of your online content strategy you should always be focused on the two types of users, New and Returning. To avoid a negative user experience, new visitors need to quickly understand what the company does and what the purpose is for the site. With returning visitors, you also want a positive user experience as well, but it requires a bit more work. Makes sense right, okay stay with me.

Don’t let me throw you for a loop, but these two types are nearly the same. While technically a first time visitor is still a first time visitor, once they have gathered what you do and why the site exists they now transition into a visitor that is looking for additional content. Whether it be a news article, your latest widget for sale, or a video tutorial, they are looking for something. There is a reason they are here on your site. Something made them use a search engine that pulled up results with your company, or they have a need and followed an advert, email link, or the URL from your business card. No matter the reason, they are now warm blooded, content thirsty individuals and you need to give them what they want so you can get a lead, or make the sale, and/or convert the “visitor” into a customer.

Understanding Your Visitors

Where do they come from? How do they get here? Why do they come here? Three basic questions you need to be able to answer. Why you say? That’s a deeper question than you may realize, but let’s take each basic question one at a time:

Where do they come from?

Humor me and assume many of your users live in California while you’re based in Florida. If that’s the case, then your user needs to know that cool new widget you just launched can be ordered right there on your site, so there’s no need to look for a local retailer. How would you even know that you need to effectively communicate that message to them if you don’t know they are in California?

How do they get here?

Suppose a lot of your site traffic comes from visitors that followed a call to action on a successful email campaign. Those users would probably expect to see some sort of content related to the ad they had seen. This would help make their experience positive because their expectations were met. And since they are coming from an email campaign, many visitors will likely be coming from a mobile device such as an iPhone or iPad. Speed and performance will be an important variable for effective communication. Ante up and make sure you have a fully responsive site that provides all content to all users on all devices with speed and crispness.

Why do they come here?

Let’s say you provide an online service in a highly competitive industry, like file sharing. You have to compete with some big boys: dropBox, MediaFire, GoogleDrive, RapidShare to name a few. Well, what do you provide to your customers that your competitors do not? Lower price, better security, pay-as-you-go? All extremely useful information, and you need to communicate that. Why are they coming to your company instead of one of your similar competitors? Do you know? You should.

Parting Thoughts

Everyone communicates messages on their site with content pieces like Headlines, Subheads, Pictures, Captions, and Video, but not everyone uses them to create a unified message. Without getting too deep into the topic of Content Strategy, I want you to understand the importance of it and how a good strategy benefits your business.

You must have a plan for your website. You must have a direction. Wouldn’t you agree that when you sit down with your design team/firm to brainstorm a new advert campaign, that you have a direction you want this campaign to go? Same with your site. You want to make it easy for users to give you their money. They will gladly hand it over if they you make them happy –and you make them happy by providing the content they are looking for. And if you understand your visitor like you should, then you already know what they are looking for before they come looking for it. I guess you’d be a soothsayer, in a way.

Here at Mercury New Media we have been using the Orchard Content Management System (http://orchardproject.net) for many of the sites we are building. It allows for many areas of customization on the front-end and admin section of the site.

In this post we are going to specifically look at adding items to the Orchard Admin navigation. We have utilized custom navigation items for grouping links to new content types, links to pages with different reports (Kendo grids, SSRS) and links to different areas within the front-end site.

Note: For this demo I assume basic knowledge of setup and creation of a custom module.

To start out I have basic Orchard installation with the Default recipe. Here is the out-of-the-box Admin menu.
Orchard Menu

It has everything we need to manage our new Orchard site and users but lets say, for purposes of this demo, I want a new section in this navigation that links to different search engines (Bing, Google, Yahoo). I would like a main navigation item that links to a page that lists each of these sites as well as menu links to each of the search engines (see the simple mock-up below).
Search Engine List

Lets Get Started.

First things first – I created a custom module with Code Generation and enabled the module. In Visual Studio I set up a separate solution folder for the project.
Visual Studio View

In the screenshot above I have also already added the first file we will need, SearchEngineMenu.cs, in a folder named AdminMenu. This will be the code that displays the navigation items.

Note: You can keep all of your custom navigation in one file or put each group into separate files. This is more of personal or team preference and will also depend on how many custom menu items you will have.

The first bit of code we need to write is to have our class inherit Orchard’s INavigationProvider and implement the members.

 public class SearchEngineMenu : INavigationProvider
{
public Localizer T { get; set; }
public string MenuName
{
get { return "admin"; }
}

The Localizer property is used in globalizing strings on your site. The other property implemented is MenuName. This is the name of the menu we would like to add our custom navigation to, so we return the string “admin” for the Admin Menu.

Next we add the method GetNavigation which doesn’t return anything but takes a parameter with a type of NavigationBuilder. We call the class’s Add method here to add the top level navigation item. We pass in a Localized String for the display text, a string representing the position of where it should be located in the menu and an Action <NavigationItemBuilder> delegate.

 public void GetNavigation(NavigationBuilder builder)
{
builder.Add(T("Search Engines"), "5", item => item.Action("", ""));
}

New Orchard Menu Item

In the code, notice the empty strings being passed to Action – these are placeholders for an Action and Controller so you can have this link go to a custom controller in your module, an existing controller or, if you leave these as empty strings and chain .Url(“”) to the expression, you can link to an external site.

Here is my updated code for this navigation item as well as a screenshot of the new Controller, View and the page in the browser.

 public void GetNavigation(NavigationBuilder builder)
{
builder.Add(T("Search Engines"), "5", item => item.Action("SearchEngines", "Admin", new { Area = "CustomModule" }));
}

Code snippet

My new Admin page which has inherited the admin styles because of the attributes seen in the controller).
Orchard Menu for Search Engines

Now onto the second level navigation.

Remember that the Add method we called had an Action as a parameter? We can pass in a method here that returns void and has a parameter of the type NavigationItemBuilder and build out our menu there instead of trying to chain and build it in the Add method.

Take a look at the final code:

 public void GetNavigation(NavigationBuilder builder)
{
builder.Add(T("Search Engines"), "5", BuildMenu);
}
public void BuildMenu(NavigationItemBuilder menu)
{
menu.Add(T(""), "0", item => item.Action("SearchEngines", "Admin", new { area = "CustomModule" }));
menu.Add(T("Google"), "1", item => item.Action("", "").Url("http://www.google.com"));
menu.Add(T("Bing"), "2", item => item.Action("", "").Url("http://www.bing.com"));
menu.Add(T("Yahoo"), "3", item => item.Action("", "").Url("http://www.yahoo.com"));
}

In the new BuildMenu method the first menu item sets up the link for the main level item – here it is our custom page. The position strings here are based on the other items in this section of the menu.
New Expanded Orchard Menu

And there you have it, our own custom navigation group in the Admin. This is just the beginning of how you can extend and customize the admin menu in Orchard. Take some time to play around with it and dig into the Orchard code to see what else you can do!

Agile software development isn’t new anymore; the concept has been around for well more than a decade and has dramatically shifted the way software development is done. It has moved us from a wasteful industry filled with immense design documents, big releases, and uncertainty around eventual customer satisfaction to one where the customer’s increased visibility into the project allows the end result to be exactly what is needed without the waste of unwanted features or significant rework.

This post is not going to be a detailed description of what agile is; that information is generally available. Instead it will concentrate on how agile development affects everybody involved in a software project.

Customer

As a customer, you may not have thought about what working with an agile firm or development team means to you, but the difference between agile and more traditional methods can be significant:

  1. More chances to review the work. Agile gives you more frequent chances to review the work being done. Rather than having to wait until a large release is ready, you can see work as individual features are finished. This allows you to quickly detect when the team is going in a direction you are not happy with and to provide your feedback so that it can be incorporated into the remaining work.
  2. Get important features quickly. Since you will be responsible for approving and prioritizing the individual features to be included, you can be sure that the team spends its time working on the items that are most important to you.
  3. Fulfilled commitments. Agile development encourages the development team to commit to work and deliver on those commitments. Because the tasks set to the team are small and well defined, it is much easier for the team to be sure they are estimating the time they will take to complete correctly.
  4. Can require more work. Agile provides a lot of benefits to the customer, but the extent of these benefits is directly proportional to how involved you want to be in the process. If you want the development team to just handle it and show you the end product you will see fewer benefits than if you are engaged and participating in the process.

Team Members

Since agile is all about how you do your work, it shouldn’t come as a shock that it will feel very different than more traditional development management styles:

  1. Increased team cohesiveness. Agile makes you feel more connected to your coworkers. It becomes less about the individual’s accomplishments or failures and more about the team’s accomplishments or failures.
  2. Better direction. The team will be involved in planning their work and will have specific tasks to be completed. Reduced leniency for vague requirements means that you will know exactly what you should be working on.
  3. Better communication. Daily in-person meetings with your team mates insure that everyone is on the same page.
  4. Improved quality. Because agile development advocates practices such as pair programming and unit tests, you will have the tools necessary to be sure that you are producing a quality product.
  5. Increased accountability. Agile requires team members to feel accountable for their performance and the performance of their team. Without the drive to complete your commitments agile will not work.

Management  

The decision to follow an agile methodology often starts with you. You have read about all of the benefits to your customers and to the team, but what do you as a manager of software development projects get out of it:

  1. Improved visibility into project status. With agile development it can be easier to see when your team is struggling. Rather than massive project plans that you keep up manually, your team is responsible for reporting on their progress.
  2. Better communication. Daily meetings ensure that you know when your team hits a road block and allows you to react quickly to address the problem.
  3. Unexpected changes are easier to manage. When your customer changes their requirements or priorities mid-stream, it is easier to adapt. You can easily estimate the new tasks and substitute them for tasks that have not been started to allow your team to continue working on what the customer wants. In a more traditional setting, you would need to evaluate how the new request fits into the design documents that have been prepared and make appropriate modifications before the team can effectively continue their work.
  4. Be ready to adapt. You may read all the books and think you know exactly what you are getting into but there are always surprises. Agile is not a one size fits all arrangement and it can affect organizations very differently. The “rules” of agile development should be viewed as guidelines more than rules. If a piece of your chosen agile methodology isn’t working for your team, don’t be afraid to change it.