Kevin Grohoske

Senior Software Engineer 
MCPD-WEB, MCPD-WIN, MCSD

Using Information Technology to Transform Business Processes

Monday, July 26, 2010 06:04 | posted by: Admin

Google Maps runs on your smartphone, Bing can give you turn-by-turn directions, and for less than $100 you can buy a small appliance that will triangulate with satellites in space and pinpoint your location on the earth within 3 feet. If you told me 20 years ago this would be possible so inexpensively, I’m not sure I would have believed you.

However, all of this amazing technological capability causes disruptions in how we perform common business tasks. Those who can best adapt to use these new found technologies will succeed, while those who continue doing business as usual will eventually fade. For those who say, “that’s the way we always done it, and we are successful,” I would point out that US automakers said the same while Charles Deming’s statistical methods for improving quality where being adopted and transforming the Japanese automakers.

Disruptive technologies, or game changing technologies, are all around us today. Online geospatial services, cell phone text messaging services, Twitter, Facebook, real-time weather services, smartphones are disrupting the previous norms of our society. Businesses that can embrace these technological advancements and find innovative and value-added services to their existing customers will thrive; those who do not will eventually fade.

While every business will encounter their own unique challenges to adapt their business processes, there are two major challenges facing business leaders when looking to adopt emerging technologies.

The first major decision is how to decide which of these game changing (or disruptive) technologies to adopt. With most of these technological changes emerging in the IT field and being an IT professional, I live with my face over the figurative fire hose daily. I am constantly bombarded with new hardware, software, services, methodologies, and toolsets that could potentially transform businesses. Yet sometimes I’ll sit back and scratch my head wondering what problem was trying to be solved with any given new technology. Adoption for the simple sake of adoption usually does not have any financial benefit. In this category, I would put Facebook static Fan Pages for companies. How many buying decisions do you really think are based off of a social sites static content? However, if somehow you created a viral marketing campaign that included Facebook and your marketing message was passed along from person to person through the social network, that would be a success.

The second challenge is how to transform business practices to adopt these disruptive technologies? This is more interesting a question to me because if requires forethought, imagination, and true leadership. To do this, you must have a long term strategy plan which you regularly review and constantly look for ways to evolve your business practices. The changes should be incrementally adopted and your organization should constantly evolve to embrace the new capabilities. I have worked at businesses that ignored strategy and only focused on the day-to-day struggle of keeping up with existing processes. Eventually, this resulted in greater costs, customer impact, and internal turmoil as the business had to renew their entire business model because the competition had found new innovative ways to add more value to the customer and reduce costs incrementally over time with the adoption of new technologies.

As information technology advancements continue to reduce costs, improve productivity, and increase customer value, as a business leader, you must always look to evolve your business processes and strategically adopt disruptive technologies. While in the short-run, it may or may not directly impact your bottom line, it will eventually be the difference between success and failure.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

The Six Steps of Rescuing a Project from the Clutches of Defeat

Tuesday, May 11, 2010 06:47 | posted by: Admin

If you’ve been around the software development field for any length of time you’ve experienced projects that have failed to meet the initial expectations of the customer either due to cost overruns, feature gaps, or simply poorly designed solution. While it is difficult being on the initial development team that is experiencing the mounting pressures and bruised egos, another particularly difficult role is that of the consultant who oftentimes is hired to be a White Knight and rescue the project from the clutches of failure.

It takes a special mixture of technical skills, ambition, and character to navigate the minefield that usually lies before them. While, to someone who has never been placed in this situation, this may appear to be an ideal position because the damage is already done, in reality the technical, political, and professional challenges are very difficult to overcome. While it is likely true that the ‘White Knight Consultant’ will be less responsible if the project eventually fails, the task of quickly identifying the roles of individuals involved, discovering the ‘actual’ business goals of the project, determining technical feasibility, identifying what parts of the solution are complete and/or missing, and finally how you are going to bind all this information into success for everyone involved is a challenge of the highest order. All the while, the consultant must be careful to avoid the political, professional, and financial landmines that will enviably be placed before them, intentionally or not.

The first step is to identify the roles of everyone involved. Job titles are not always enough to identify the role each person fills for a project. I’ve witnessed projects where a business owner with limited technical skills has designed the solution and then used contract labor to attempt to complete his grand vision. In other cases, I have seen business analysts play the role of project manager and solution architect. In either of these cases, the project has some very inherent challenges. Yet, initially, these roles must be identified and analyzed to determine the direct source of the business requirements.

To successfully identify the initial business requirements you ideally must have direct lines of communication with the project sponsor and additional key employees, specifically those with the business knowledge. If you do not have clear lines of communication then there is a high chance the project will continue to fail. If there are written business requirements, those should be reviewed with the project sponsor and the other key business team leaders. If the business requirements have not been documented then it would be advisable to sit with the technical team and extract the business requirements they had attempted to accomplish, document each requirement, and then review them with the project sponsor and key business leaders for viability. This serves two purposes; it allows you to specifically identify and document the scope of your effort and it facilitates gap analysis to determine what requirements were initially missed and which ones can be descoped from this effort entirely.

The next step is to determine the technical feasibility of the design. This requires both strong technical expertise and broad technical experience. Oftentimes, a White Knight Consultant will evaluate the project not based on its feasibility, but on their own personal preference to how it should be completed and this will not likely benefit the client in the short run (or long run if the project ultimately gets cancelled). If the project is over budget and off course, rewriting or redesigning large sections will not solve the primary issue. The good consultant should indentify what is useable in its current state, what needs to be reevaluated, and what is yet to accomplish.

The final analysis step is to review the time, money, and resources that you have available. All previous steps allowed you to understand the scope, thus now you can now compare the assets available against the effort. More often than not you will need to request additional time, money, and/or resources to successfully accomplish the scope of the project. You will be asked how much of each is needed to complete the project and this is usually very difficult to estimate for a number of reasons. Also notable, you must appreciate and communicate that the original estimates were developed with the luxury of time and now you are being asked to be more accurate in less time. Nine out of ten times you will be wrong, either in estimating to conservatively or to liberally. The art of estimating a challenge that lie somewhere determining the amount of fuel a rocket to travelling to mars and creating art on the head of a pin, thus it’s both an art and a skill.

The actual solution development effort in some ways is the easy part because you now have a somewhat fresh start, and are not obligated to initial assumptions. Optimism, even if tainted by lingering pessimism, will begin to breathe life back into the project. Team members will begin to see the light at the end of the tunnel and productivity will increase. However, the key is to keep the line of communication open throughout the process, keeping each key leader aware of the positive and negatives you encounter. Eventually the project will be completed and, if done correctly, will have solved the business requirements.

Playing the role of the White Knight Consultant is not always the easiest role, but when done correctly it will leave a lasting sense of pride and accomplishment.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

“Who Am and Why Am I Here?”

Wednesday, August 12, 2009 06:28 | posted by: kevin

Admiral James Stockdale, a true American military hero running for Vice President, used this line as deadpan joke in 1992.  It failed miserably and they went on to lose the election. Well I’m using it here to explain why my blog has been inactive as of late.

I am currently working on my MBA and working full-time. I will try to do better at updating the blog, but obviously my narcissistic blogging priorities have been lower on the list. I will do better!

Best regards,

Kevin

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

A first look at Visual Studio 2010 (VS2010)

Tuesday, June 16, 2009 06:24 | posted by: kevin

Microsoft’s marquee development tool is poised to make some great strides in making .NET developers even more productive than they are already today. Though it is still only Beta 1 and MS does not plan to release the tool until late 2010, there is a significant numbers of features that appeared to be production ready (along with a few that are currently promised for Beta 2).

Looking around

On first glance there is something different about the UI/UX. It may be that the graphics team is still cleaning up the look and feel or it could be that the IDE is written using WPF. Either way it definitely needs a bit of refinement in my opinion. On the bright side the new tool will support dual monitors.

If you into test driven development there is a whole new menu section dedicated to TDD. I haven’t had time to look at the particulars, but it is encouraging to see some MS effort in this space.

Extension Manager promises to be beneficial by providing sample project templates, directly from the IDE, that follow best practices guidelines.

Help is more helpful by linking to Sample Applications from MSDN directly.

Coding Is King

One of my favorite IDE shortcuts is the new “Generate Class From” context menu that allows you to write a declaration like below you can right click on the NewObject() and choose “Generate Class From”. This will create a new class file using the object name and create the stub for the class. Additionally you can right click on the Methods and generate the method stubs, including parameter types, for each method.

NewObject newObj = new NewObject();
newObj.FirstMethod();
string new str = newObject.SecondMethod(5);

Another feature that is long overdue and helps when working on very large projects is if you right click on a method declaration name or call you can choose to see the View Call Hierarchy, which allows you to see when the method is defined and all instances in the project where the method is called. Goodbye find in project searches to determine all of the locations a method is called.

Welcome to C# Optional and Named Parameters! If you done any VB development, you have long used optional parameters and perhaps even named parameters. Now they have been introduced in C#. They are structured a bit differently in C#, but are easy enough to use. You simply add a default value to the parameter in the method signature.

Optional Parameter Example -

// This Code:
public void ExampleMethod(int requiredInt){...}
public void ExampleMethod(int requiredInt, string optionalString)
{
//do something with optional string
ExampleMethod(requiredInt)
}
// Becomes:
public void ExampleMethod(int required, string optionalString=null){..}

I’m curious how many snobbish C# folks will switch from overloaded methods though. I know these people they don’t play nice and were hated on the playground.

Name Parameters go hand-in-hand with Optional Parameters in C# because you need to use named parameters to call methods with Optional Parameters. You cannot simply use the VB notation ExampleMethod(x, , y). Empty parameter clauses will error out so you dothe following when calling a method with optional parmeters. In your method signature all optional parms need to be defined last, just as in VB.

// method signature
public void ExampleMethod(int required, string optionalString=null, string optionalString2){..}
ExampleMethod(requiredInt: 4,){...}
// only optionalparams need to be named
ExampleMethod(4, optionalString2: "test"){...}
// OR all param's named which is legal and more readable
ExampleMethod(requiredInt:4, optionalString2: "test"){...}

There are a couple new Data Types also in C#:

  • BigInt, which is the equivalent to BigInt in JAVA, will be used for most commonly for encryption keys.
  • And dynamic…

Ah dynamic a regression of a data type that was not well received at my presentation. Dynamic is like object, in that it can hold any data type, but !!!! it can also be used to call any method or property on the object. Unlike all other things in C# dynamic is well… dynamic … or non-statically typed. In other words you do not need to know what type the object will hold, only how to use it. You will not get a compile error if you attempt to use a method or parmeter that is not available for the object, you will only get run-time errors when attempting to use the object improperly.  For example with dynamic all the following is legal:

dynamic d1 = 7;
dynamic d2 = <span style="color: maroon">"a string"</span>;
dynamic d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
//casting back:
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;

Yes, it will be abused (so don’t hire hacks). Yes, it will remain because it was created for Ruby, Python, and other dynamically typed languages. It will be very handy for Office API calls and late-binding!!!

Multi-targeting will extend from .NET Framework 2.0 to .NET Framework 4.0 (including Client Profile). 4.0 Framework Client profile will not be a web installation only and will now support 64-bit. It will also include new classes such as EntityFramework run-time, Extensibility Framework, Dynamic types, Parallel Programming (nope I haven’t mentioned that yet), and some support for WCF.

Another one of my favorite demo’s is the code snippets. If you get a chance find out more about these. I can see this improving development efforts and increasing productivity for software shops with internal coding standards.

Ok. I’ll stop for now… But there is plenty more!!!

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Why I’ve Never Taken A Facebook Quiz

Thursday, May 14, 2009 06:23 | posted by: kevin

Did you know your personal answers on FaceBook Quizes/Games/Applications can and are sold to advertisers? Including email address, name, address, relationship status, medical info, etc. Once you open a FB application the application’s developer has access to everything in your profile!!!

 

I begrudgingly joined FaceBook a few months back to find out about my upcoming year high school class reunion. I was quite surprised how much I liked using the site to keep up with extended family and connecting with old friends (even the ones I did not like so much back them - you know who you are).

After signing up I was inundated with invitations for beer, bowling, and hugs all through FaceBook, of course. But something in the back of my mind prevented me from running any of them. I couldn’t get past the ominous warning that states, “Allowing {application name} access will let it pull your profile information, photos, your friends’ info, and other content that it requires to work.“I kept saying whydo they need access to my information so I can go bowling or accept a free virtual beer.

Well now I am very glad I refrained even though I’m sure I could have gotten a 150+ IQ test result and immediately joined Mensa. PC World has a nice article that explains why I kept refusing to click through, even though I didn’t know why at the time. Fear of the unknown is sometimes good.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Debugging Classic ASP With Visual Studio 2008 SP1 and 3.5 Framework

Thursday, April 30, 2009 06:22 | posted by: kevin

As much as I’d like never to debug complicated classic ASP code again, the fact is it’s everywhere in the enterprise today. Here is one way that I have found to speed up the process of supporting classic ASP w/ VS 2008 SP1/3.5.

At the last User Group meeting, I presented the features in the VS08 SP1 and 3.5 Framework. One topic/feature was only lightly covered in the documentation, but really jumped out at me, was that with Visual Studio 2008 SP 1 and 3.5 Framework VS 2008 can debug classic ASP code (script). I tried to find more information online, but the details were hard to find.So after a bit of research and trial and error I am sharing what I learned with you!

Here’s How:

1. Allow Server Side Debugging inside IIS Manager for the web site.

IIS Manager Settings

2. Open the Web Site in VS 2008 IDE by File - Open - Web Site and browsing to the directory that the IIS’s web is pointed to.

Open Web Site

3. Accept FrameworkUpgrade Warning (if prompted).

Framework Upgrade Warning

4.  Configure Web Site Startup Properties to open correct website through IIS url (http://localhost/…)

Web Site Properties

5.  Run Web Site in Debug Mode (F5) and accept Web.Config warning.

Allow .NET Debugging

6. In VS 2008 IDE Debug Menu select Attach To Process and choose the dllhost.exe process

Attach to dllhost.exe process

7. Begin Debugging By Setting Breakpoints in the IDE.

Visual Studio 2008 Debugging

That’s is !!! Ok so what changes were made to the original process?

When you exit the it VS 08 will prompt you to save a solution file.

And… A web.config for the .NET Debugger will be created in the root of the web. You should remove it when you deploy to production.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Laws of Positive Leadership

Tuesday, April 14, 2009 06:21 | posted by: kevin

Great guideline from Toastmasters Intl.

  • Give more than you expect others to give.
  • Combine optimism and perseverance.
  • See everyone as a diamond in the rough.
  • Express appreciation; accept responsibility.
  • Keep your ego in check.
  • Show respect for the people around you.
  • Treat team members as family.
  • Be a source of inspiration.
  • Stress cooperation, not competition.
  • Maintain a sense of humor.

http://www.toastmasters.org/MainMenuCategories/FreeResources/QuestionsaboutLeadership/PositiveLeadership/LawsofPositiveLeadership.aspx

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Senior/Mid/Junior – How do you know the level?

Thursday, April 09, 2009 06:20 | posted by: kevin

Today I responded to an inquiry as how to judge whether an developer is a Senior/Mid/Junior level.

Here is my rule of thumb (with some commentary):

A senior requires little or no supervision, can work with the business teams independently, understands current technology and is looking ahead to new trends, and constantly creates personal growth opportunities, can lead and mentor other developers. (They make others more valuable as well as themselves)

A mid-level can do tasks independently but needs some guidance on architecture or direction. (Their value is the work they produce)

A junior requires task guidance and supervision. (Their value will begin 12-24 months down the road)

I think in our business we have too many seniors that do not the basic soft skills, are not current with technology, and get promoted because of time in the position and not necessarily what value they create for the organization. This is one reasons organizations are seeing their development maintenance cost continue to increase, but productivity flattening or even decreasing.

I think an ideal IT departments spread would be 20-70-10 (Senior/Mid/Junior) but most are top heavy with seniors that should be mid.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

On Tuesday I presented, “Getting the Most Out of SharePoint” at the Web Technologies Conference in Spanish Fort, AL, which was co-sponsored by Microsoft, The Gulf Coast Technology Conference, and Bit-Wizards.

Despite a few technical glitches and last minutes emergencies, the entire day went very well. I received a ton of very positive feedback about how the presentation had a good balance between technical and ‘C’ business type level content, which is great because that was the tightrope I was trying to walk. If you’ve never given a technical presentation, you can’t appreciate how difficult it can be to find the right balance.

During intermissions I had a great time mingling and telling old war, IT horror, and Cincinnati/Dayton stories with attendees. I hope we get to do more of these because SharePoint adoption is growing by leaps and bounds, but in the haste to implement too many people (IT and Business teams) are painting themselves in a corner or not getting the ROI they could, thus it becomes SharePoint’s fault.

I don’t think we’ve published our slide deck yet so below are highlights of my presentation:

SharePoint should become the hub of your business activity-

  • The built-in resources/features should be leveraged for all future Intranet applications.
  • Imagine productivity gains by not having to start from scratch security/reporting/search/workflow/forms when developing Line of Business (LOB) applications
  • If you dream it… it can be done.

Have A Plan -

  • It is not just an application you install and run with - that is the recipe for failure Business and IT Stake Holders should be involved Develop and communicate the following:
    • Governance Document
    • Business Requirements
    • Project Plan
    • Project Design
    • Branding Design
    • Training Plan

Integrate it with Existing Applications and Data Extend ROI by keeping existing business systems - 

  • Any line of business (LOB) application that .NET technologies can communicate with can be integrated with SharePoint
  • You can integrate existing web applications or use the underlying data in SharePoint
  • Let SharePoint be the ecosystem for your Intranet applications

Brand Your SharePoint - It’s not a question of Fashion or Function – you can have both

  • Out of the box SharePoint 2007 looks dated and plain
  • Branding will help ‘sell’ SharePoint up and down the organization chart
  • For extranets you can extend your corporate brand to vendors and outside companies alike

Microsofts’ SharePoint is the 800lbs gorilla and will continue to get better.

  • Fastest growing server product
  • 100+ million licenses sold
  • 1 billion in revenue in FY08
  • Growth of 35% over FY07

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

IE8 Performance Tip {fix}

Monday, March 30, 2009 06:19 | posted by: kevin

If you are having performance issue with IE 8, follow this authors advice and do the following:

From a Command Prompt window, run the following command:

regsvr32 actxprxy.dll

That re-registers the ActiveX Interface Marshaling Library, an obscure DLL that most people (even Microsoft experts) had never heard about. (Update: 27-Mar: Note that if you try this using Windows Vista, you must do this from an elevated Command Prompt window; type cmd in the Start menu Search box, right-click the Cmd.exe shortcut, and then choose Run As Administrator. For detailed instructions with screen shots, see this post.) …The results {ARE} stunning

Tags:

PermaLink   E-Mail Article   RSS Comment Feed