Sunday, June 24, 2012

Including a Web API in knockout (going from hard coded to dynamic) (Part 1)

Technologies

ASP.NET MVC 4.0 Release candidate, Web API, Knockout.js, C#

Goal

Make a web architecture that separates the API from the UI and will move toward mobile.  Use the technologies listed above, together.  Move toward using Upshot.js, Entity Framework, and Knockout mapping if they help.

Background

In my last post I got Knockout working in MVC 4.0.  I’m happy with that but the way the sample was created that I was following, it was hard-coding the JSON on the client:
$(function () {

    var data = 
        [
            { Id: 1, Name: "Ball Handling" },
            { Id: 2, Name: "Passing" },
            { Id: 3, Name: "Shooting" },
            { Id: 4, Name: "Rebounding" },
            { Id: 5, Name: "Transition" },
            { Id: 6, Name: "Defense" },
            { Id: 7, Name: "Team Offense" },
            { Id: 8, Name: "Team Defense" }
        ];

    var viewModel = {

        tags: ko.observableArray(data),
        tagToAdd: ko.observable(""),

        //behaviors
        addTag: function () {
            this.tags.push({ Name: this.tagToAdd() });
            this.tagToAdd("");
        }

    };

    ko.applyBindings(viewModel);

});

Since I want to have a dynamic application that has a database and a web API, I need to make sure that I can get data from my server.  And I don’t know how to do that.  So here’s how!

What I want to do is replace the block where var data = “bla bla bla” with var data = data from my web API.  But first I need a web API.  Well, good thing, I already created a new Web API project in Visual Studio, so if I’m smart enough, I should just be able to call it………

wr1b1zhf

Getting it done, the steps


My first question is how does the UI “see” the API?  In particular, what’s the API’s address if Visual Studio has a dynamic server name like localhost:30983445. 

I ran into this page about single page web apps and thought to myself that maybe I had been doing it wrong.  Maybe I want to create a single-page web application and all of this wiring exists!?

So I started learning more about SPA (Single Page Applications) by watching this video with Steve Sanderson.  It’s an architecture.

So I went to my Visual Studio to find the SPA template and it was not there.  So I did some searching and found on this forum this, "Alright folks.. I found the answer. Single page templates have been withdrawn from MVC4 RC release and will not be available in the final release too. The team have identified that there are incompatibilities and they would like to work on it further before its released."  Son of a!!!!!!!!!

The page also gave instructions on how to hack around it so I started doing that.

I installed the Single Page Application Nuget Package (details on this page) into my non-Web API project.

It seems to have done it’s job.  I noticed it uninstalled some knockout stuff.  I hope that’s not an issue:
Successfully uninstalled 'jQuery 1.6.2'.
Successfully uninstalled 'knockoutjs 2.0.0'.

I was psyched to download a demo SPA app from Bart Jolling but it didn’t run.  I figured it had to do with the move from Beta to release candidate.  So I kept watching the video.

At 21 minutes, 40 seconds in the video, Steve says that Web API URLs have  a /API prefix.  So maybe this is the answer to my question.  I go and test this a little.

I started thinking that the place I need to implement my knockout is in my Web API project.  It turns out the the Web API projects can be both the web API and client.  I don’t know how good this practice is but it gets me past this current scenario so I move all of my modifications from the other project into my Web API project to see if I’m at least on the same, stable ground there.

I add the scripts that I think I have to have to _Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/themes/base/css", "~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    <script type="text/javascript" src="http://github.com/downloads/SteveSanderson/knockout/jquery.tmpl.js"></script>
    <script type="text/javascript" src="~/Scripts/knockout-2.1.0.js"></script>
    <script type="text/javascript" src="~/Scripts/knockout.mapping-latest.js"></script>
    @RenderSection("scripts", required: false)
</body>
</html>

I went into the Index.cshtml page and tried to paste my same code but it was angry.  So I started to think maybe it would work if the more robust Mobile Template was the main project and it had the Web API stuff embedded in it.  This is seeming more plausible: from that project I get this option:

5xo2ppkf

So I decided to try to solve my project within the Mobile template to make it have a web API inside of it.  My goal was to only prove that I could get anything from my web API so I just pasted in the stuff from the default ValuesController that comes out of the box in the Web API template:
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    public void Post(string value)
    {
    }

    // PUT api/values/5
    public void Put(int id, string value)
    {
    }

    // DELETE api/values/5
    public void Delete(int id)
    {
    }
}

Now I needed to test if I would be able call /api/values/get/5 and have it return “values”.  (or even if that URL existed).  At this point I deleted the API project since I was no longer planning to use it and wanted a clean solution and no noise.  So I was very stoked to see this:

image

It’s returning XML from my Web API within my Mobile App.  It’s looking good.

Continued in next post….(I ran out of space on this Blogger site!!!!!!!!! WTH).

Saturday, June 23, 2012

Scenario 1: Getting MVC 4.0 Release Candidate working with Knockout.js

Goal

To prove that I can make MVC 4.0 work with Knockout.js

Workflow

  1. Create the projects in Visual Studio 2010.
  2. Followed this guy’s steps for installing Knockoutjs using Nuget.  His instructions weren’t very complete, so I’m providing more detailed info here.

The _Layout.cshtml contents that worked for me are as follows.  Note the order of the scripts at the bottom:

        </div>

@Scripts.Render("~/bundles/jquery", "~/bundles/jquerymobile")
<script type="text/javascript" src="http://github.com/downloads/SteveSanderson/knockout/jquery.tmpl.js"></script>
<script type="text/javascript" src="~/Scripts/knockout-2.1.0.js"></script>
@RenderSection("scripts", required: false)
</body>
</html>

I put the codeFile.js reference into the scripts section so it renders last.


@{
ViewBag.Title = "Test Page";
}

@section scripts
{
<script src="../../Scripts/codeFile.js" type="text/javascript"></script>
}


<div id="tagsList" class="box">
<div class="box-head">

After that, I got it to run (woo hoo, neat!):


asdf


Lessons learned



  • Use sections for scripts on the Razor pages

  • Use Nuget to get packages

  • Be clear in writing your stuff.  The guy that published his article was fast and it helped but it wasn’t very clear so I toiled too much. 

Next steps



  • Tweak this guy’s code so it works with my app / domain.

To do’s



  • Haven’t yet verified that I have knockout.mapping working

Other stuff I did and learned during this post



  • Checked out JSFiddle, which is pretty interesting.
  • Added Sharper Photo to Live Writer.
  • Downloaded and installed PreCode for pasting code in my blog in Live Writer. 
  • I found that Syntax Highlighter for Windows Live Writer sucks. 
  • Sharper Photo plug in for Live Writer sucks.  I’m downloading Clipboard Live now and hope it’s better.

Starting a new, fun project

I'm going to be building a new web and mobile app using Microsoft technologies as the core.  I'm excited about it.  My architecture is as follows:

  • ASP.NET MVC 4.0
  • Web API middle-tier
  • knockout.js
  • SQL Server
  • LINQ to SQL
I think this is the right architecture for me.  I'm excited.  


I'm also excited about the coming of Windows 8 and related apps.  I think that I'm in a good place skills-wise to really contribute as Windows 8 shows power in the market.


Now that Silverlight is further out of the picture and MVC seems so.  Here's an article on the changes coming from a developer perspective given the coming of Windows 8 and the going of Windows Phone 7.


I'm going to update my blog as I learn new things on this development project.


Another thought I'm having is that I'm going to build my web API with a tendency toward building the model on the server site, incrementally, rather than trying to post a big blob once my user's done creating something.  This might be bad architecture but I don't know another way.

Monday, June 04, 2012

Work styles: Disruptive, collaborative, or both?

Pick your poison.  But why not do both in harmony?
Our work styles can be seen as disruptive (creating major change without regard to the current situation), collaborative (partnering deeply with peers to get things done), or a mixture of both.

Disruptive.  The disruptive style is cool and exciting.  It's about innovation and major change.  When I was in 8th Grade, when asked what I wanted to do when I grew up, I told my teacher, Mrs. Moore, that I wanted to either be a heavy equipment operator or a brain surgeon.  She laughed and asked me if I realized as she did that those two fields were markedly different.  I did not and I responded, "I really want to change things dramatically."  I suppose both on macro (bulldozer) and micro (brain) scales.  This still holds true to me.

Collaborative.  The collaborative work style is a really critical, key and important one that I have had to learn over the years.  As an aggressive person who wants to change things drastically I've learned that I have to collaborate and partner with others to get things done.  Leading without followers is not possible.  Sometimes I have to take the back seat and let others drive.

Having both of these capabilities as a disruptive, innovative person and a collaborative person provides balance and synergy between two forces.  Both are good for change but together they provide a pace that is realistic,  sustainable, and powerful.

Three categories of spending: preferred, emergency, unnecessary

Money and spending are part of our lives every day.  Having new ways to think about money and how we spend it can really help us set budgets, spend, earn, and save wisely.
Figuring out how to manage your money is an ongoing battle but having simple processes to follow to help you think effectively about money can really help.  Three categories of money are Emergency (those funds you need when things aren't well), Unnecessary (frivolous uses of funds), and Preferred (how you'd rather spend your money).

Preferred.  In the Preferred category we are spending our money on things we prefer that add value to our lives.  These are the things we are proud of, need, and make us more whole as people.  They are our investments into ourselves and those around us that we are happy to make.

Emergency.  In the Emergency category we need to spend money on things that came up unexpectedly like car repairs, job loss, or fixes of any kind.  This is a "risk pool" of funds that we need to have to feel safe when things go wrong. Many of us do not have a big enough emergency pool but we're working to build it.

Unnecessary.  Finally, the Unnecessary category of money is what we don't need to spend.  We shouldn't be allocating funds to this category but we probably do all of the time (expensive meals, drinking too much, unnecessary services). Many of us probably have a larger-than-we'd-like set of things in this category and we need to analyze and consider using this category less and the other two more.

Through the proper categorization and consideration of the way we use funds, we can get to a budget and set of categories and thought processes that we prefer about money.  Good luck.

We'll get you the technology, people and processes you need for your objectives

EfficiTrends seeks to be your personal and extremely knowledgeable concierge for your journey, whatever it might be.
"We'll get you the technology, people and processes you need for your objectives."  Everyone struggles with one or more parts of this equation.  Let's try to further understand the various parts of this and how I and people like me can help you with your project, whatever it might be.

A) "We'll ..."  (Who we are).  We are EfficiTrends.  We are a consulting group.  We help people and businesses become more effective at achieving their goals.  We are a small but growing team of free-thinking, creative, experienced professionals who can help people of many walks get things done.

B)  "We'll get you the ..." (Service delivery method).  Our service is fast, collaborative, and proactive.  We try to anticipate your needs before you have them.  We go into our networks, experience, and knowledge base to get you the stuff you need for your objectives.  We are very aggressive at identifying and acquiring the stuff you need to be successful.  We bring this valuable stuff to you, whatever it might be.

C) "We'll get you the technology ..."  Technology is a key, core part of the EfficiTrends business.  We live and breathe technology and believe that it can and will have a very positive affect on your lives, those of your customers, and staff.  We are advocates of technology but do not only run from that perspective.  Hence:

D)  "We'll get you the technology, people ..."  Sometimes technology isn't enough and we need to bring in people and subject matter experts to support the technology purchase decision or dialog.  Our people will help you become more comfortable with your situation, whatever it might be and get you through the change curve required.

E)  "We'll get you the technology, people, and processes ..."  Processes are all about value.  They're about sustainability.  Whether these processes are thought processes or business processes, we want you to have them because they are valuable and measurable.

F) "We'll get you the technology, people, and processes you ..."  (The customer).  Our customers are a huge part of our service offering.  They're everything, in fact!  Without you, we wouldn't be here and we do everything possible to keep you engaged and driving the dialog.

G)  "We'll get you the technology, people, and processes you need for your objectives."  Your objectives can be hard to nail down.  Sometimes they're completely obvious and transparent like "I need a car to pick me up at my house located at 4834 Elm Street in Seattle on June 5, 2012 at 8 AM PST."  But even then that could have some gaps in it.  What kind of car?  Where is the car going to?  How much gas is needed in the tank?  Do you have any special needs?  EfficiTrends is excellent at analysis of all kinds from data to requirements to business process.  We look deep into you and your business to understand the opportunities that are lying within and beneath.

EfficiTrends will get you the technology, people, and processes you need for your objectives.  What are your objectives and how can we help you today?

Thursday, May 10, 2012

Two types of workflow: software and human system

There are two sides to workflow: software workflow and human interaction systems (aka business processes).  Understanding both of these helps us understand our systems overall.  We need to be expert at both to really understand what's going on at all in today's complex systems and organizations.
There are two main types of workflows in our lives: software workflows and human system workflows.  Software workflows are the experiences we have on our devices (computer, laptop, smartphone, etc.).  Human workflows are a view of our organizations that are about the overall mix of people, artifacts, inputs, processes, roles, and outputs.  The latter is the more abstract and grand view, while the former is critically important to helping us understand the actual human workflows that exist today and will tomorrow because the software workflows are constantly and rapidly innovating and changing.

Software workflows are very fun to define, create, implement and realize.  Making software is a thrilling and fun experience.  Adding a set of systems or softwares together into an information systems happens frequently and creates greater value to human workflows.

Human workflows are abstract views of our organizations and systems and first focus on the actual people in terms of their roles, what artifacts they create and pass around, what processes and tasks they perform, how they measure their work, how they define flow, and a variety of other things.  Human workflows are critical to know and understand for organizations to be focused on the customer, value, efficiency and sales.

Overall, between these two methods of workflow definition, we can understand our organizations and their related complexities.  There are tools out there like Configuration Management Databases and Windows Workflow Foundation to map the software workflows and IDS Scheer ARIS to map the human interaction workflows.  Together we can use these information systems to store data about our organizations and get  better information out about what is going on as analysts and decision makers.

Friday, April 27, 2012

Technology, then people, then process

Some people say process leads technology but I think it's usually technology that leads most peoples' decisions because it's so shiny. 

There's an order to getting things done with technology that should be followed to be successful and not spend too much or buy the wrong thing.  What we ultimately want in life and business is processes or flows that serve us in efficient, effective, fun, valuable, and entertaining ways.  To get these flows (ideal experiences), though, we have to follow a very structured process and invest in technology and experts.  The process starts with technology identification and selection, then leads to people and experts, and then finishes with you (hopefully) getting the processes that you want.

Technology.  The technology selection part is fun.  My mom's looking to get an iPad soon and she's excited about that.  Looking at technologies is fun and we can learn a lot by studying them but we have to first know our goals and criteria.  We can and should build our ideal process requirements in this phase.

Then people.  The people part of the process can also be fun and enlightening.  This phase is about bringing in experts or geniuses to support you in learning and achieving your goals and objective processes.  You'll find that many of the geniuses out there have a vested interest in *their* technologies or solutions and are not necessarily customer advocates.  True business analysts, managers, and customer advocates inquire with the customer then select only those technologies and suppliers that can meet their long-term, strategic needs.

Then process.  The process part is also fun and where the rubber starts to meet the road.  In this phase, it is about putting the technologies and people you bought into a practice and flow and making it work for you for your objectives whatever they might have been.

In review, working with technology is fun but we have to make sure we surround ourselves with advocates for us who help us get the technologies we need to achieve our process objectives.

Saturday, April 21, 2012

Adjust your dreams to align with reality and what's possible (focus on next steps)

Take one step at a time and focus on the water.
Maybe it's good, maybe it's not.  To dive in or not?
Dwelling--or really spending much time at all--on analyzing the way things are or why they are the way they are is kind of a messed up, useless waste of time but apparently we have to do it as humans.  I'd rather spend my time imagining the future and figuring out what I need to do to get there.

Focusing on where we want to go and figuring out how to get there is a really important and necessary thing for us to be happy.  We have to take one step at a time and crawl, then walk, then run there.  We want to imagine ourselves warping into the future, to the place where we'd rather be.  But it takes time to get there in reality and our imaginations are way faster than time and real-world processes are.

We need to make things happen in reality through our actions and by externalizing our vision to other people and the world around us.  This takes time and keeps us grounded in the now and thinking about what steps are required to execute next.  We have to keep our pace and sense of urgency high (by developing new, more complete and current visions) to get to the future fast enough or it could be gone by the time we get there. 

So be flexible in your vision and let it change because hopefully it will only get better or more realistic as you take the steps to getting there.  Don't just be a dreamer, be an adjuster of dreams to align with reality.

See communications and delivery as separate but a part of the same customer-centric whole

It's all part of the same thing,
we just don't know the difference sometimes
but we have to create and define it.
Most projects are tough because there are two main and competing parts to them: doing the work (adding value) and communicating about the work (selling).  I wrote about these two things yesterday.  When we're in roles like project manager or business analyst, we have to do both and can't focus on just one or we'll fail. 

One time at Microsoft I focused exclusively on delivering the value and failed because I didn't spend enough time on communications and change aspects with the customer (I had no time or willingness to, either, so serves her right...). 

On the flip side, dealing exclusively on with the selling aspects is the same as analysis paralysis and we shouldn't just want to sit there and talk about it all day: that's not the goal either.  So there must be some kind of balance between these two things.

I think we're lucky: Scrum makes communications a daily occurrence through standups and has a standard process and roles for communications.  Scrum fixes the time of communications and gives most of  the time to the development team to do their work.  In the meanwhile, management and planning activities happen in parallel. 

In Scrum there's a clear and defined way of communicating and this is necessary.  Many new projects don't have this structure and need to get it as soon as they can.  So, in summary, we need to have the role of delivery, the role of sales, and then a defined and clear relationship between them.  Get it!!

Friday, April 20, 2012

Don't just do it, teach it

Teaching others how to do what we
know can be extremely satisfying
and gratifying.  And kind.
A lot of us go through our days and lives doing what we do best but don't take the time to show others how we do it or how they could do it.  We probably think they don't care but I bet they do.  I bet they would like to learn and understand our crafts. 

If we're truly passionate about what we do, then we should want to teach and show others how to do it.  Let's make it a collective point today to set aside some time with someone we like or care about to show them how we do what we do.  Really sell them on it.  Try to convince them that the thing that we do is the thing that they should do, too.  But listen, too, and maybe the thing that you independently do you can do together. 

A learning model for professional services organizations

It sure would be nice to have a manual.
It shouldn't be that hard for our groups to make one.
I'm sure many of us would say that our organizations do not provide us with sufficient training for us to be truly great at our jobs.  They also don't provide us enough knowledge-sharing and partering abilities with our peers. 

I just recently started a job that had next to no training provided to me.  Without it, I had to go find people and resources on my own to give myself even a small clue of what I needed to do.  And even then I didn't have enough information and it made it way more complicated than it needed to be.
While there, though, some colleagues and I built a model that provided us the training we knew we all needed.  We saw training being delivered in three levels: A) our roles B) our accounts and finally C) our projects. 

Role level.  We agreed that by first focusing on our roles, we would be able to help each other become excellent at what we do, individually.

Account level.  We next decided to focus on our customers and accounts.  We felt that the politics and preferences of our customers mattered a great deal and that there was a big need for teammates to be trained on accounts.

Project level.  The final thing we knew we'd need to focus on was our projects.  We agreed that our projects should be the simple part of this.  We all know what we have to deliver and fit in, so the training here really should be minimal.

By training and accumulating knowledge at these three levels a professional services organization can learn, continuously improve, and deliver the maximum values to its customers.

Software suppliers as a service

We need to shape our organizations wisely and can't have
too many crazy cooks in the kitchen.  We need to create
the role of the master chef for our enterprises.
I've been brought into a few situations recently to help companies where the software they bought was not performing as they had expected it to.  They thought it was going to be great based on what the vendor had told them but when it came down to business and reality, it wasn't doing the job.

There's a problem in industry today and it's probably always been there.  I think our organizations went a little bit crazy in implementing tools and technologies but never thought about the big picture, the architecture, processes, or operations that would support the organization in the long term.

Our organizations have to become more lean and agile but they also have to partner very wisely.  Rather than implementing tool after tool, they have to question the process and way by which they are doing this.  Are they doing it in a controlled way?  Are they doing it in a sustainable and continuously improving way?

There are a lot of tools and vendors out there and they all might be pretty good but organizations need a single service that helps them contain and control technology acquisition costs and partners.  Let's not run amuck and buy a bunch of tools without control or process.  Thanks.

Think of services instead of projects

Hitting the drum once is fun and nice and all (and important)
but playing a sweet drum solo is really what you prefer.
Projects are a convenient way to think about things: they have a beginning, middle, and an end.  How cute.  But the truth is, though, that we shouldn't want to think about the end because this means no pay and no relationship!  I'm not talking about death or anything that serious here, I'm talking about the end of our projects when the value has been delivered and the relationship with the customers and project team is over.  What I'm trying to get at here is that we should rather think in terms of long term and strategic (at the program and account level) than at the project level. 

All this said, we really can't have long-term and strategic without projects and immediate value delivery mechanisms.  The truth is that most value is and can be delivered through projects but we have to learn and enact ways to do projects continuously and forever for our customers.  This takes teams to do. 

Let's start imagining things that are built to last and repeat forever rather than one and done.  Forget the old-school ways.

Do two things: add value and sell

Doing two things, even doing one, is hard sometimes.
But it's required.
As contributors to the world I believe we have to do two very basic things to be effective and successful.  Some of us are good at none of these, some are good at just one, and there are a few (possibly lucky?) others out there who can do both.  Those two things are 1) adding value and 2) selling.

Adding value is about doing things that make peoples' lives and businesses richer.  In order to add value we have to know our audience, know our customer, and know ourselves, then choose to do something that is both reasonably interesting and unique to make a difference.  Adding value can be a very high bar and our audiences can be very picky: they don't always laugh, care, or buy.

Selling is all about the spit and polish we put on the value.  Selling is the sizzle on the steak.  Selling is having the guts and courage to do what we think we need to do and doing it.  Selling is about being steadfast, dominating, persistent and controlling.  We don't want to overdo it on selling but we can't add enough value.

Selling and adding value are required to be successful in life and business and for many of us it is a daily struggle to do both...or even just one.

Choice is a powerful thing

Judges.  They are all around us and we are also one.
We might like to think that we can affect, influence, and even control all of the stuff around us--and we can to a large part--but sometimes we can't have as much control and influence as we'd ultimately prefer.

Decisions start and stop all things.  Decisions can come from within us or outside of us.  In this way, there are two competing forces: us and them.  Everything boils down to decisions and it is decisions that are the things that are affecting and creating the workflows, processes, and policies that surround us.  Decisions are the things that ultimately set our course of action in life.

When a leader or person in a powerful position above us or in relation to our project makes a decision, all things are put into motion and dependent upon that decision or opinion.  As project managers we have to be very aware of the decisions and opinions being made around us and make our own decisions of how we'd like to react given them. 

There are several ways we can decide to treat these decisions and opinions being made around us: A) we can work in compliance and agreement with them, B) we can work around or be ignorant to them, or C) we can directly against and in combat of that decision. 

Working in compliance and agreement of the decisions is the preferred--don't rock the boat--way of doing things.  It's the easiest and probably the most effective.

Working around or ignoring decisions is another form of compliance but it is a bit more subversive.  It is passive-aggressive to know but not necessary heed the decision.

The third type of behavior in relationship with respect to a decision is total war against that decision.  When we get into this mode, we do not agree with the decision and will do everything in our power to fight or change it.

We all want control and on a day by day basis we make our own decisions about the decisions and opinions that are taking place around us and set our own path in the maze.

Only make the sausage if they'll pay for it

It doesn't really matter how you make the sausage.
But the sausage had better be good and the customer
had better be willing to pay for it.  Regardless, don't start
making it until you are confident you'll get paid for it.
Sometimes it's really nice in projects to be given the opportunity of an "open" contract but it will frequently lead to disputes if you're not careful about managing customer expectations and the budget.  If you're not a professional project manager, you should not dabble with T&M contracts because you will get burned by hard-nosed customers that demand quality for their money (and they should).

It would be nice to bill people and see if they pay or not but you have to make sure when you're doing this that you're also able to defend your price and value for what you're billing.  This means that you have to have excellent metrics and measurements of the value you're delivering and a justification for that value (the business case and justification, ie the argument *for* the price).

Whether you're managing projects on a fixed basis (even Agile is fixed since it locks scope for an iteration) or on a T&M, more loosey-goosey basis, you have to be careful.  No matter how you're making the sausage, make sure that the customer gets it, is willing to pay, and likes you enough to fork the money over.  Otherwise, you might as well not start.

Unscrew screwed situations

Don't just be any tool, be a screwdriver.  Be the one that can drive
change in one direction or another and try to make sure
it's positive change that people want.
I'm frequently brought into organizations to unscrew screwed situations.  What I do is to figure out what's going on (the situation), try to talk to all parties and sides (get info), look at all of the pieces and parts and systems (analyze), and then look at the market and objectives and fact and make decisions and recommendations and plans to help steer the organization(s) into a clearer light (lead).

Doing this is an art and science, and a risky, difficult one at that.  To do it successfully, you have to be really careful of the people and goals and get everyone thinking and looking in the same direction.  Have you have to identify key bottlenecks and remove them one by one until you can see out.  Communicating effectively up during this time is also difficult, yet critically important.

Dive into organizations and find out where they are most screwed up.  Be the change that is required to correct the problem and point it into the direction that you believe.

Name the project

Even kids know how to tell us what to do.
In organizations we become followers.
But don't.  Be perceptive and share it.
Between all the clutter and crap of organizations there is a project somewhere.  You are the person that has to identify and name these projects.  Without you, there are no projects, just chaos and disorder.  Get good at finding, naming, and talking about projects and what they are.  Get good at telling people about them, getting them excited about them and helping them understand how they can help the project succeed.  Don't be martyr or fall guy for the project but continue to represent and be clear with people on it and the way forward, to a better place.

It can't be undone

Stack 'em too high and it all could topple but it sure is fun stacking
and each time we learn something new about our techniques.
In business and our personal relationships we frequently have to make tough calls and take risks.  We should be proud of the risks we take and prepare ourselves to deal with the consequences.  As we prepare to make a big decision or take a big risk, we have to think through the consequences and potential backlash of an action.  Thinking and behaving this way is *the* way in my opinion.  It's my goal to take risks and be prepared to deal with all that comes.  This makes life fun.  Dive in!

Name your price

An agreement on price lies somewhere but
make sure you're not compromising too much!!
If you ever find yourself in a situation where you need to name your price, I feel for you.  Sometimes it can be fun to name your price and drive a hard bargain but most of us are uncomfortable with this.  As American's we're typically not really barterers, but as business people we really have to be.  Maybe you've experienced this, too, where in business you have no choice but to talk about and deal with issues relating to price.  I guess my only tip is to buck up, be strong, and don't be afraid to drive a hard bargain.  You'll win some and you'll lose some but be fair, too.

Saturday, March 31, 2012

Who to invoke

It's way more interesting for us to do something than for me to do something.  The collective is a way more interesting voice.  In writing I can choose to write as myself: "I did this, I do that, I think this, I thought that."  I can also choose to write as the collective: "We do this, we do that." or I can write speaking to you directly: "You think that."  I haven't yet figured out which voice or command I prefer.  Does it really matter even?

Bosses failing and who the hell's God anyways?

You don't want your bosses or organization to fail.  It's no good.  Sometimes (always) we're put into organizations where we can't control the outcome.  Arguably, unless we're on top of our organizations, we have almost no control.  We might be able to control our system or process or area but if we're not controlling the whole thing (and what would the whole thing even be?!), the organization (and us with it) might be failing.

Managing context and our situation to the best of our ability is critical and sometimes we have almost no choice but to do this.  We have the option to influence and partner with the people above us but that might not be enough sometimes.  Probably the best thing we can do is to control our own organizations and try to lead more of them.  But even then, there's probably no organization without a context unless that's God.  It's definitely not you or anything you can think of!!

No ends

Pretend that it (and life) never ends.
Because it probably doesn't!!!
Yes, things can end but they also repeat and start again.  We can stop what we're doing for a moment and reflect.  We can pause and digest the world around us.  Our ability to connect with a larger, spiritual power, is easy awesome and probably never ending unless we choose to let it end.  Let's decide to never let it end because that's a lot more fun and interesting.  Be positive all the time.

My audience and what I'm best at. Setting goals.

What I really want to do is to help other people sell.  I want to be a sales and marketing coach.  I want to help people to deliver exactly what they say they will through motivation and the right systems and processes, methods and means.

I feel like I can best accomplish this by working with consulting firms who sell technology because that's what I do and have been doing for so many years.

I'm good at technology and changing organizations and it's what I do best.  I want to help other people and organizations do the same and I want to do it in a very public way.

I can influence other companies to follow my lead and do what I do or what I recommend doing.  I want to lead and coach and influence others through my intelligence and ability to create results and spread the word about the good that I'm doing and the influence that I'm having.

It's probably a tall order but it's what I want to do.

Front-office and back-office folks: and getting to trust

Creating the right perception is tricky and risky.
First you have to know and trust yourself.
Getting to trust with your customers and the public takes a long time and it might even be impossible at the aggregate.

Life and selling are processes; they're complicated.

In life we have to choose between those people we rely on and trust to deliver for us (the back-office people) and those people we choose to sell for us (our sales or front-office people).

I've stated in previous posts today that I need to grow my team of sales people and advocates.  I need personal advocates who can help me sell my value and what I offer.  I also need people to help me deliver what I can deliver, but I think I need fewer of these people.

In all, I need to trust myself before I need to trust others.  But if I can get to a place where I trust myself then I can surely get to a place where I can trust others and hopefully one where others will also trust and advocate me.

Pick your audience: High vs. low volume selling

Be selective with who you're targeting.
Don't expect to have 100% return or acceptance.
Make sure you're backed by people and your logic is on point.
It sure would be great to be able to convince everyone of our ideas.  But we won't.  So don't try.

It sure would be nice to sell very large quantities of things to very large audiences.  But it's hard.

We have to start small and gain confidence and we also need to be able to convince very small sets of people that what we're doing has value.  We need very small sets of people surrounding us who support us in our global endeavors.

Sometimes we might need feedback from very large audiences to know if we're having an impact: we need to get the aggregate score and start stacking points or cash.

Instead of feeling like we have to convince everyone of things or win every battle, we might want to realize that our audience is a niche and is not everyone.

Stop tilting at windmills.   Stop trying to convince everyone of our ways and your intelligence.

Only some people will really get it and get you.  The others don't matter.

To hear, accept, and implement feedback

Don't be deaf to the world around you.
This is hard.  We're all very sensitive by nature to input and feedback but we have to let our guard down and figure out how to act right according to the world.  We have to be willing to accept and listen to feedback but we shouldn't also be total chameleons.  We have to realize what is real and adjust accordingly.  We also have to be willing to say no or to tell people to shut up.  It's a hard process.

Failing happens

No matter how well we plan and try to control the outcomes, things will change and happen that we haven't anticipated and we have to adjust.  Being able to adjust is probably even more critical than being able to plan.

Being really structured and rigorous in our expectations is bad news if it prevents us from reacting when things happen or change.  Don't over-do your planning or over-set your expectations but do have and set expectations.

When your expectations aren't met rapidly go back to planning and adjusting mode and figure out how to respond to the situation at hand.  Blink.  Add this to your mental model for next time and continuously improve always and forever.

There's a pattern to process improvement and it's really confusing

Action and inaction.  Balance.  Really?
All organizations have to improve their processes or they will fail and die.  Organizations will cease to exist if they do not react to and respond to their environment.  Organizations must continue to learn from their experiences and figure out how to act more efficiently and effectively during their next challenge.

Organizations must constantly adjust.  Organizations must also spend time relaxing and contemplating.

Organizations do not always have to be doing things.  For organizations, being idle is entirely fine until it is time for them to act.

Part of the adjustment process for organizations, though, is the contemplation of that change.

Process improvement cannot be total because we must also act, which can be seen as a fault or failure.

As organizations and individuals, we must balance reacting and contemplating.  If we don't we'll die.

How I write blog posts: alphabetically

I use a pretty simple process to write blog posts.
It works for me.  Find your way.
I'd like to share with you the overall method that I use to write blog posts.

I have a technique and a standard.  First, I have to think of the ideas.  For me, that part is really easy but it has taken practice for me to think of what I think will be interesting.  Of course, these ideas can happen at any time so I use Remember the Milk on my smartphone to keep a list of blog post ideas as they come up: when I think of a new idea, I simply record it in my RTM "blog post ideas" list.

When I have the time and interest to write posts, I open up my RTM list and take the one from the top (they're listed in alphabetical order).  I take the top post idea and if I think that it still sounds interesting, I head into my blog application (Blogger) and start writing a post on that topic.

If, during the writing process, I find that the topic is boring or difficult to make a point from, I delete or archive it and move onto the next one.  If, on the other hand, I can make good points from the topic in what I feel to be a semi-compelling way, then I go ahead and keep writing the post.

After I've written the overall post, I go back through the post and read what I've written to make sure that it's interesting and compelling.  Oftentimes, upon re-reading the post, I will completely change the purpose of it to better align with what I'm thinking.  In this way the process is very agile.

After I've written the text that I'm happy with, I go find an image using Google Images and embed it.  I give the image a caption (this is a fairly new practice for me but I enjoy it) that I think is interesting.  I add Labels (tags) to my blog post so that it is more search engine optimized and readjust the title if necessary.  Then I publish it.

I might announce it but sometimes I do not.  For me, blogging is more of a personal and private thing but I like the idea that people might read what I'm writing.

Frankly, I'm still afraid to share my writing with too broad of an audience but I do share it sometimes with all of my FaceBook friends, which is obviously very public.  Most of the feedback that I've had on my blog has been positive but I still don't have that many followers to really know what people think.  I could really use more feedback!  I'd really like to have a much bigger audience, but at the same time it makes it a lot easier and a lot less stressful for me when I think that fewer people are watching.

I hope that you, too, can find a way to write blog posts of your own.  I find it to be a very fun and helpful, introspective process.  Also, I get to learn every single time that I write a post.  With every word.

Why processes?

Sometimes the thing and the thing behind the thing
are equally compelling.
Processes are weird.  I don't even know what they are or understand them.  Merriam-Webster defines process as "something going on".  But so what?  What the heck does that mean?!

We can parse this word a little further and think about what a 'thought process' might be.  It would be something going on in someone's head which makes slightly more sense.  I think therefore I am.  I think therefore I have thought processes or things in my head.  That makes some degree of sense.  But again, so what?

I have argued in the past that a process is 'anything that takes time'.  I'm not sure what this means but I still like the idea.

They say that systems are collections of processes which makes things even more confusing to me. 

Purpose and intention (the reasons behind processes) are far more interesting to me than processes.  But studying processes helps us understand why things might be.

Everything is better on a team

We are not alone until we think of ourselves as such.
Selling as an individual sucks.  Marketing yourself sucks.  Being the main person who is delivering the thing sucks.  Teams are way better than individuals most times and this is true in almost all contexts.

When it comes to sales and selling the same holds true.  I like to sell by myself but I do not love it.  What I love is the idea that I can sell as part of a team and system, rather than as an individual. 

We need to find ways to take ourselves as individuals out of the picture and figure out how we can grow teams around ourselves who love and support us in our efforts and interests. 

We need to get excellent at having others help us.  The more we can define a process and system for growing, selling, and success, the better off we all will be.

Find God, you might as well

Find balance and control. 
Have obsessions but don't let them
rule your life.  Find God: you might as well.
We probably all have obsessions and favorite topics but we need to make sure that we're monitor and controlling these things and keeping them in check.  We never need or want our obsession(s)--or anything for that matter--to rule our lives.

If we do choose to have obsessions (or are forced to by whatever means or compulsions), however, we should make sure that they are positive ones.  My obsessions, for example, of communicating, thinking, writing and speaking are what they are but I have to learn how to control and monitor them.

I can't see too big of a problem with the obsessions I have but I know I have to keep them in check. 

It's probably far better to have passions than obsessions but for those of us who do have obsessions (whatever they might be), we need to be very careful and make sure that we're monitoring them and ensuring that they do not turn into compulsions or become overly consuming thought processes in our lives that prevent us from succeeding in achieving other outside influences or forces.

Finding balance in our lives is hard and we need to ease up on our own minds and thought processes sometimes.  Find God, you might as well.

Withholding is competing

Silence is competing.

The teacher and the student

A big part of being humble is being able to listen and learn.  Yet a big part of being a big person is to be able to teach and coach and lead.  Finding a balance between these modes and finding more situations where we can teach and coach and listen and learn all of the time is hard.  Find more opportunities to do all of these things at once.

Make sure it's sustainable but don't be boring


Doing things that are fun and cool and creative and off the wall are interesting but they're not everything and sometimes they're not sustainable at all.  We shouldn't expect that all of our practices are sustainable but we need to makes sure that the bulk of the core ones are.  In this way we have to have great values and focus.

We have to make sure that the core and essential set of our practices are sustainable but we don't want to get caught up in only doing the mundane.  Finding this balance is hard.

It's great to be different: decide to be different

Painting outside of the lines is way more fun.
But there are lines.  Damn reality sucks!!!!!
Be different every chance you get.  Do not comply, do not follow the rules but recognize that they are all around us and sometimes we have to follow them. 

We can't be 100% creative all of the time but we sure can and should wish this.  We can make creativity and non-compliance everything if we want. 

A huge part of our lives is to comply with and follow the rules.  This sucks but we know that in large part we have to fit into the systems we're given or we'll find ourselves dead, injured, or in jail. 

But it's way more fun, cool, and interesting for us to paint outside of the lines and say that we just don't give a shit.

Getting to creativity through structure

In order to be truly creative we have to be on solid ground.
We have to have our lives very well organized if we want to be as creative as we possibly can be for an extended period. 

I want to be creative forever but I know that for me to be able to get there I have to buckle down now and get serious.  I have to create structures and foundations in my life that help provide me the time, place, and space to be creative.

Creativity cannot fully flourish without the appropriate structure and foundation. 

We don't want to be overly regimented in our ways but without structure and a solid foot-hold on life and reality, we won't be able to be our truest, most creative selves.

Obsessed with sales and selling

We're not always good at what we want to be good at.
I really want to sell.  All of the time.  I can't not sell.  I want to do it every moment.  But I think I suck at it.

The hero and the goat

Being humble is everything.  If we are humble
we will not fall as far.
Sometimes we're put into situations where we have to be the hero.  We may not want to be the hero but maybe we have to be for the situation at hand to succeed. 

I've been thrust into situations before where I had to be the hero in consulting roles and it typically turns out very poorly and sucks. 

One time on a Microsoft project I had to do the work and lead the project, so I was wearing too many hats and it wasn't fun at all.  I might have delivered an okay product in the end but the process sucked and I wasn't happy at all: I didn't set expectations wisely and suffered greatly for it. 

The goal in work and life should be to have fun and be successful but in a balanced we: we don't want to ebb and flow so greatly.  There will be times when we actually get to be the hero for a while but that can soon be replaced by the goat if we're not careful.  We can rapidly and agressively fall from the top of the mountain if we're not careful or humble about our place. 

We should always feel like we're on top of the mountain even when we're not and be humble about our place regardless of what it is.

Consulting is business development: grow two teams

As the main producer,
surround yourself with sales people and delivery people./
Grow two teams.
As a consultant and project manager I realize more and more that one of the primary and fundamental roles is in performing as a sales person.  But I can't do this alone, I need to create and grow a professional and highly capable sales and marketing team.

A big (and probably the biggest) part of consulting is making sure that you get the job done and make the customer happy.  As a consulting sales person this should be easy because you can always blame the delivery folks that the thing went wrong.  But when you're also on the hook for the thing that actually comes out the other end you'd better be really careful.

As a delivery and sales person you have to make sure that you're winning and influencing all of the time: both on the sales and customer side and an the internal delivery side.  It's hard a lot of the time to wear both of these hats but what it means is that you need to build up two teams as the lead consultant: the sales and account management people who support you as well as the delivery people who support you. 

In consulting you are in the middle in a major way.  You have to build up teams above and below you that support you and create cushion and padding so you can comfortably deliver the end product and deflect attacks from difficult customers and the market with very high expectations.

Build systems for yourself and others and win

Do things that work for yourself and for others.
Two birds, one stone.  Lead.
A big skill is in building systems that work for ourselves and for others.  It's fine and dandy to do things that work for us but it's far more critical and interesting to build systems that work for us and others!

When we can build things that work for us and others we're winning, we're selling, we're growing and building teams.  Do this every day.

Selling up and selling down

Convincing others to do things for us is a great talent, skill, and art.
Make sure you're doing this to subordinates and superiors.
Forever I have wanted to make cool and creative things.  I have wanted to engineer creative solutions to problems and get rich doing so based on how creative I have been and how hard I have worked.  But I have discovered that the real skill in life and business is to be that social person who can and does get things done through other people through creative means.  I'm not saying that you can't create and be creative, but you have to create through others by way of inspiration and leadership: you have to grow big teams.

My dad gave me the idea when I was young that I am creative and smart.  I probably am.  But I have learned through the years that I have to be very humble as well and recognize that there are powerful people above and around me. 

As someone who does not have so much money that I can pay others to do everything for me, then I have to inspire them to want to do it themselves.  If I can lead in this way, then I am being successful with those below me.

But this is also true for those above me: the rich and famous and successful of the world.  I do not consider myself to be one of them but I have to do so: I have to rub elbows and act as if I'm one of them...but I have to be humble, too.

Sales works up and sales works down.  Make sure that you're selling up and selling down but learn to sell up because this is where the really big opportunities lie!!!!!!!!!!!!!!!

Achieving breakthroughs all the time

Sometimes we have breakthroughs and
it changes everything but what we want is
to have breakthroughs all the time and
for it to only confirm what we expected.
Every once in a while we get lucky and have a breakthrough: something significantly changes in our life and it's major.  This could mean that we win the lottery, we start a new relationship, we get to a new place in a relationship, or we develop a new mental model that gives us peace of mind.  We want breakthroughs all of the time and more often but how do we get them? 

We get breakthroughs by setting our expectations extremely low.  If we have exceedingly low or no expectations about having breakthroughs, then we will achieve them far more often: it's all relative.  If we have really high expectations and are frequently wanting and hoping for and expecting breakthroughs then we will probably never get them: we don't deserve them.

So set your expectations really low and do not expect breakthroughs.  If you do this, yet are prepared for breakthroughs when they do come then perhaps you can get, have, and enjoy them all the time!

Thursday, March 22, 2012

Be the chief framer

Continue framing and flexing the thing.
Don't get burdened and bogged down
with too many details.  Keep changing.
I want to be the chief framer of things.  This means that I want to be holding the thought process that it is the thought process of record, the one followed by the team.  In this way, I want to lead and be the guy.

I want to be able to suggest what is needed and continue to shape and frame the solution as it changes over time.  I want to guide and shape things so that the optimal solution can come out the other end.  I want to be agile and flexible, responsive.

Things change in projects all of the time but with proper framing and an ability to reflect and change, we can continue to be good and create win-win solutions with our collaborators.

Changing agendas

Sometimes our agenda and their agendas
are not aligned.  Make sure you detect
at the start of the meeting that this is the case
and redirect the meeting accordingly.
It's nice to have an agenda and bring it to a meeting but it's quite possible and sometimes likely that the meeting agenda and objective will change.  There's a good practice called 'resetting' when you state what you had planned for the meeting agenda and ask the attendees if anything has changed to make sure that everyone's still on the same page before starting.  If things have changed, then the facilitator can decide to focus on those new issues, cancel the meeting, postpone it or hold it as it was originally specified.

Main point here is that we have to be able to change when people have changed and adjust accordingly.  Although we may have agendas in or meetings and need and want to get things done, we still have to be very flexible and dynamic in dealing with people and their constantly-changing needs, moods, and desires.

Wednesday, March 21, 2012

How much power we actually have as project managers

Being on top of the mountain feels good, but
there's still sky and heavens above and plenty
of places to fall and hurt yourself below.
Don't forget your true, humble place.
Being the boss is fun.  But its rare.  Sometimes we might think we're the boss but very frequently we are not.  Being a customer is probably the closest we can come to being a boss: "the customer is always right".  I would really like to achieve this level of control on my projects where the buck stops at my desk and what I say goes. But this rarely works.

We should shrink our organizations.  We should centralize more decision-making authority and shrink our work cycles.  But this doesn't often work because sometimes we really do require input and authorization on projects from a very large collection of stakeholders.

So it might be true that "my requirements are what I say they are" but at the aggregate and at the project manager's level, they are rolling up and what the project manager says or thinks really doesn't fly.  The project manager really is just a facilitator and adviser to a larger, far more political, process.

So be careful project managers, although you may feel like you may have god-like powers and feel in control, you're still reporting to your board and you're still accountable to your customers, stakeholders, and stockholders.  Tread lightly and don't abuse the power.

Create workflows to create documents

Documents suck.  People don't want them
but they are a typical and critical part
of business oftentimes.  Let's change this.
The goal is not producing documents, its managing workflow.  One consequence of a process may be that it creates documents but in an efficient system, the goal is to manage knowledge and creating small, reusable components of things that you can use again, thus reducing cost and improving quality.

Documents are concrete artifacts that are typically a composition of several other smaller things.  For example, a document could include some background, a schedule, and some tables of data.  Web based content management systems do a good job of separating content from presentation but today's document-based systems very infrequently do this.  For this reason there is a lot of waste in project work.  Documents get started, get re-purposed, and the knowledge base expands but not in an organized or analyzable way.  Things get really messy in project.

But it is possible for us to know our document types and figure out what kinds of things we have to produce for our customers.  Once we do this we can figure out the elemental parts of these documents and have those parts created through efficient workflows.  Just like the web publishes pages our consulting companies should be publishing documents that are compiled automatically through our data, systems, and knowledge.  Writing net-new things is required to extend the existing database but this is a good thing.

So knowledge workers of the world, please think of how you can shorten the overall workflow of your document-creation streams and look to partner with an organization like mine who can take your project data and present it to your customers in a low-cost and very-high-impact way.

Teams can grow without increasing in count

Grow, baby, grow.
(Just don't necessarily multiply, please.)
Growth is a funny thing.  It can happen in your mind or in the physical world.  Growth can be seen as in increase in a population: it can be seen as an increase or improvement in anything.

I made the point to a colleague yesterday that our team can grow even if we don't add people to it.  It sounded profound to me and he agreed.

What I meant by this was that the thing that matters more than anything that our team (regardless of its size or members) grows and learns and improves.  It would be nice if it grew in terms of count and influence but that is not my current need or expectation.  I am trying to do just the basic things and make sure we have a plan and are tracking.

Team-building is difficult but can be extremely fun and rewarding.  Growing in any way positive is a great goal but we have to remember that we have to control growth as well.

Control is a challenging part of growth.  You don't want to grow too fast because it is painful.  You don't want to grow uncontrollably because it is scary.  You want to grow 'just enough' so that you are meeting your objectives and doing the right things.  You want to fit and be the right size within your environment.  You don't want to get too big and consume too many resources: this is not sustainable.

So next time you consider growing a team, or anything for that matter, consider that you might already have enough and that it is internal reflection, collaboration, and communication between the existing organism that needs to grow.

Listening and advising as the key skills of consulting

Things will go in your ear that you don't want to hear sometimes.
But you will hear them.  You don't have to listen to them,
you just have to figure out how to react to what you hear: be calm.
There are three main skills in consulting: listening, giving and taking advice.

Listening is hard sometimes when there's so many things going on in your head.  Combine that with stupid or annoying speakers and it's hard to keep your mouth shut sometimes!

Try to quiet yourself and let yourself listen to what is being said: drink it all in and relax; breathe, contemplate responses but do not engage.  Let others finish their thoughts and points before you offer anything more, if you offer anything more; sometimes silence is far more powerful than words.

Accepting advice also requires that you listen and it also requires a great deal of patience and trust.  It is impossible to take advice if you can't listen.

Giving advice is easy.  Anyone can give advice.  But not everyone can give good advice.  There are a lot of people out there seeking advice.  Some of us are even paying great sums for advice and help from others.

Being a leader requires that we listen, give and take advice.  Balance these skills and be excellent.

Two views of Microsoft SharePoint

SharePoint can be viewed in two main ways: as a host of things and as a data collection mechanism.  I prefer to view it as the latter because I find that it is far more interesting and compelling that way.

Back in 2001 when SharePoint first came out, I was building web apps for Siemens and they wanted to use SharePoint.  I soon found out that SharePoint was great and offered value beyond the tools I could build.  I would still write custom apps and tools without SharePoint but SharePoint really took off within Siemens as a great data collection mechanism.  The Team Sites feature and all of the lists and modules and such really is the core of SharePoint.

SharePoint has come a very long ways since its early beginnings and added Records Management, Web Parts, Dashboards, and a lot of Business Intelligence features.

Yet some people see SharePoint today as a surface and host for things regardless of its complexity and value.  They see it as a container that doesn't do much.  I don't see it as this at all and am confused by people who think of it in this way.

So get a clue people, it's a database and a holding tank of data and other things; it's a framework.