Category: Random Work Day Thoughts


Started a New Job

Well I started a new Job today, and my role will be Java Developer/Consultant for a local firm here in the Atlanta area. For many reasons I am excited about this opportunity, not the least of which because of the people I am going to get to work with.  I won’t go into that now..  however I thought I would give you a taste of what the project is going to involve.

First of all it’s an Agile project.   I am truly excited to work on a project that doesn’t involve the old tired Waterfall method.   That methodology is old and broken and we all know it.   See my earlier posts on software construction not being like building a car.

Secondly it’s using the Google Web Toolkit. (aka GWT)  Before last week I had only heard about this technology, but after going through a few tutorials today I am beginning to think this is a pretty slick framework.  At it’s most basic, it’s a way to write Java code, and have that converted into Javascript to run within the client browser.  It gives Java Developers like me the ability to continue to think in terms of Objects and Patterns while writing in a strongly typed language without having to touch much Javascript code.

BTW when I am not working on this project I will be developing an application in DOJO + J2EE which involves a lot of Javascripting.

Spring – this is pretty much the industry standard for J2EE frameworks in use today.   There are others that are pretty good like Oracle’s ADF but most projects today implement Spring.

Hibernate – our old friend hibernate.  For me,  this was the easiest of the data persistence libraries to learn without giving up on robustness.

I often find it beneficial when I am trying to learn a new concept to have a real world example so that I might relate the ideas being discussed to my own experiences.  This is why physics as a discipline didn’t excite me much.  It’s often about drawing lines on paper, applying formulas supplied, then drawing other lines to illustrate force + speed + weight to show outcome.   That’s a wonderful area of study for some, but for me I need more concrete examples to relate to.  

With that said lately I have been thinking about the role of a CTO within an organization and how this role relates to the architects who operate within.   In doing so I came up with this imagined example which as it turns out isn’t as much imagined as I had originally thought.

In this business scenario I am going to talk about 3 separate companies all with relatively similar goals.  With each company I am going to illustrate what the CTO of that organization should be thinking about day to day.  I am then going to walk through an example at a high level, and discuss the process  from initial idea through a working implementation.   Keep in mind though this example is very high level.  Actual implementation in some cases takes years to work out.  Also while I am aware of similarities to actual, in no way did any of these companies actually contribute to this post.  All of this is fictional, but could be interpreted to reflect real life situations.

 

COMPANY 1

Background:

When deciding which gadget to buy , I will typically read a few websites which review the gadgets by combining expert reviews as well as user reviews.   Sometimes these reviews are people pimping their products, and other times they are just individuals railing about a particular company and trying to disparage them.   Ultimately after reading both the expert and the general population reviews you can gather some general knowledge of what to look for in regarding the product you’re in the process of buying, or make a decision between similar products. 

The most popular websites make their money through advertisements, whose rates directly relate to the amount of eyeballs that visit their site.  The sites are relatively simple with no actual transactions taking place. 

After some internal research, this company noticed a trend over the last few months that the visitor volume is diminishing. 

If you ask the CTO of this company what he is thinking about day to day what do you think his primary response would be? 

CTO: “How can we utilize technology to improve our visitor count, so that we can maintain or even increase our current income levels?”

COMPANY 2

Background:

There is a website I purchase most of my electronics from.   It’s wildly known to have the best prices on a range of items, and in fact I have personally saved $400 on one HDTV purchase over the local chain electronics store.  

This company makes it’s money on volume.   The more electronics they sell, the more money they make.   Their stated purpose is to drive more and more consumers to their site, while maintaining current customer satisfaction.

While reviewing the site log, the company has also discovered that customers often leave the site to go check on reviews, and in many cases, those same customers never come back

If you ask the CTO of this company what he is thinking about day to day what do you think his primary response would be?

CTO: “How can we use technology to retain customers, and increase usage of our website by consumers intent on buying electronics? ”

 

COMPANY 3

 

Background:

There are many general retailers on the net who sell all kinds of products, but most started as a one trick pony hocking a particular grouping of items, became good at that, then expanded.   A particular website I continue to use to purchase books has stated that it wants to become the one stop shop for everything a consumer would purchase.   Think of the WalMart of the internet with a better user experience and better products.

If you happen to be having a conversation with the CTO of this organization what do you think he will be thinking about?

CTO: “How can we use technology to gain customers and provide that one stop shopping experience for everything a consumer would want?”

Moving Forward

Gaining customers, and retaining customers is the most important aspect of a business.  This is not earth shattering, nor is it ground breaking.  It’s just simple common sense. 

So lets see how each one of these companies go about doing that.

COMPANY 1

The CTO of this company acts as both an outside forward thinking technologist and an inside EA. So placing the EA hat securely on his head, the CTO researches how existing assets can be leveraged as an offering to companies who want to add review functionality to their sites without building the technology themselves.

The CTO/EA interviews the Solution Architect who heads up the website development team and discovers that the website is built on Spring with a Hibernate data persistence layer.  The Solution Architect mentions that it is possible to extend the architecture using SOA principals, and offers to work with his development team to put together a relatively simple demo to illustrate how this can be done.

After reviewing the demo, the Solution Architect is instructed to lead an effort to build a SOA layer on top of the existing website.  Other Solution Architects from the Accounting and Advertising silo’s are employed to build integrations into their existing systems to track sales and consumption of their published services.

The CTO then announces to the corporation’s leadership team that there is now away for consumer sites to use their review technology asset.  

Sales can then introduce this functionality to Company 2 as a service they can add to their site.

COMPANY 2

The CTO speaking with his CEO discovers that they are in negotiations with a rather large online retailer who wants to get into the electronics business without having to actually build the business from the ground floor, or actually buying an online retailer.

Their CTO decides to undertake a program to build a SOA based architecture around their existing infrastructure including their website.   One Enterprise Architect is assigned to write a Governance plan. Another EA is tasked with documenting the current Enterprise Level Architecture with a specific focus on SOA.   While another EA is tasked with developing a detailed plan for building on these existing services and creating new services offerings to meet the business need.  The later two will employ solutions architects who work within the given organizations silos implementing specific business critical solutions. 

Lastly an Enterprise Architect is employed to research the reasons why customer’s leave their site, and come up with a plan to retain them.

After being contacted by Company 1, Company 2 decides to expand their site by consuming the Web Services provided by Company 1.  Part of this agreement, stipulates that the advertisements sold on Company 1’s site must also be displayed when consuming the difference services.

Each and every product sold on Company 2’s website, will have attached to it a set of reviews from Company 1’s site.  This will keep customers from leaving Company 2’s site, and each request to company 1’s site to provide those reviews is registered in their tracking system for future Advertising rate calculations.

 

COMPANY 3

As a well known book retailer that wants to get into the business of selling electronics, the CTO from this company researches the best companies who offer the right set of technologies to allow for the expansion of their site into the electronics world.  To do this, the CTO meets with the CTO of Company 2  to discuss how their technology could be integrated into Company 3’s offerings.  CTO2 explains how they have built a SOA architecture with all of the services needed to both present the catalog, and purchase the items.  But not only that, CTO2 explains that part of their services offering is to provide review services for all of their products, as well as the ability to add reviews to CTO3’s existing catalog.

CTO3 then instructs his EA’s to draw up a plan to add this functionality to their site.

 

SUMMARY

In most organizations the CTO’s responsibility is to use technology to improve business.  They are the forward thinkers within the organization always working to further the agenda of the company by leading technological efforts; to improve organizational efficiency, drive up revenue, foster partner relationships, and in some cases lead efforts to build or improve revenue generating products. In this scenario, we talked about three distinct companies all looking to increase customer traffic and revenue.  In each case the CTO was tasked with finding a way to technologically provide the means to do so.

But a CTO would be useless without an EA.  An EA looks inward, while a CTO looks outward.  Meaning that it’s the EA’s responsibility to lead the efforts across the enterprise to govern and build the systems needed for running the given business.  To put it succinctly the EA bridges the gap between CTO ideas, business problems, and technical implementation.

There are well known discrepancies in the software industry as to the definition of a Solutions Architect and a Senior Principal Consultant. Depending on what type of organization you speak to, you might get completely different answers to this question.

According to Wikipedia;

A Solutions Architect in Enterprise Architecture is a practitioner in the field of Solution Architecture.[1]

The role title has a wider meaning in relation to solving problems, but is more often used in the narrower domain of Technical architecture – the context for the remainder of this definition. In this context, the Solutions Architect is a very experienced architect with cross-domain, cross-functional and cross-industry expertise. He/she outlines solution architecture descriptions, then monitors and governs their implementation.

The role of “Solutions Architect” requires knowledge and skills that are both broad and deep. To be effective the Solutions Architect must have experience on multiple Hardware and Software Environments and be comfortable with complex heterogeneous systems environments. The Solutions Architect is often a highly seasoned senior technocrat who has led multiple projects through the Software development process or Systems Development Life Cycle (SDLC), and has usually performed in a variety of different roles in that life cycle. The person needs an ability to share and communicate ideas both verbally and in writing to executive staff, business sponsors, and technical resources in clear concise language that is the parlance of each group.”

Strangely Wikipedia does not have a definition for Senior Principal Consultant.   So based on the fact that I have been one for a number of years I have developed my own definition.

A Senior Principal Consultant is a practitioner of Software Solutions Architectures. Providing consulting services to clients, with a broad range of industry experience and knowledge.

This role requires the individual  to be the lead architect, designing implementation architectures as well as defining the development and roll out strategy.   The Senior Principal Consultant must work with multiple layers of an organization, from executes, to business stakeholders, to technical teams and be successful working in all circles.  They must be able to to communicate ideas to all levels and obtain buy in from both the business and technical organizations for their solution architectural designs.

This person must also poses a deep understanding of the business domain as well as the technologies used to solve the different business problems.  A typical Senior Principal Consultant is involved in all phases of a project lifespan from initial requirements gathering, architectural design, task break down, development (where they often act as a software architect and developer), testing, and then eventually roll-out into production.

After reading these two definitions it’s easy to see the confusion in our industry.  Both require depth of knowledge within the business and technical domains.  Both roles require the ability to articulate an architecture to project stakeholders, as well as technical audiences.   Where they differ however, and this is the key, is that the Senior Principal Consultant is more hands on, rather than removed from the implementation.

With that said however, most Solutions Architects I know also love working within the technology space so that they can gain a full understanding of it’s capabilities.  The difference though is that a Solutions Architect is not actually expected to perform the work needed to construct the solution.  They are simply responsible for directing the technical teams, who task it is to build the solution.

My bottom line however, is that the type of person needed for both positions is effectively the same with only minor differences relating to the types of tasks that are performed on a day to day basis.

This is to continue on from my working from home statement in my last blog entry.  First of all I love working from home, and I really enjoy what I am doing, but it comes at a price.   The price you pay stems from the fact that you actually live at work.  If you’re someone like me this means that if you have a choice between solving a problem, and well knocking off for the night, you often choose the former.

This gets in the way of your relationship with your wife, your kids, your friends.. etc.   In fact many times the problems that you’re solving go so late into the night that you end up sacrificing sleep, for the sake of the solution.

For instance, right now, I am trying to deploy a rather tricky application to a Websphere Server for the sake of future illustrations of functionality.    No one is asking me to do this and I don’t have any deadlines.  This task all stems from a query I had running around in my head on whether I could deploy this particular application, with this particular configuration successfully.  Rather than waiting for some other day and time  to do it, I sat down at my desk and began trying to solve my quandry.

In doing so I have discovered a few software bugs, that I developed work arounds for rather than submit a request to get them fixed.   Over the years I have learned that it is easier to submit a problem, with a suggestion of how to fix it, then it is to submit a problem and wait for a solution.

I think the Monday following a holiday weekend is the most unproductive day of them all.

Unless you work from Home, and you love what you do!!   This is the best gift a company can give you.   The freedom to create without constant interruptions from people talking about how wonderful their weekend was.

Don’t get me wrong, I love to hear how enjoyable your version of the fireworks where, but not when I am trying to get a build out in the next 15 minutes, or trying to find a solution to a customers problem  Most people these days don’t care to know if you’re busy, or working on something, they just want to tell you about how they are.

Seriously though, I want to know, but let’s do this over lunch or drinks after work where we can really enjoy the discussion, and each others company.

Hey everyone, this is my first Blog.  I have been a twitter fanatic for about a year now, and a facebook poster for well 2 years.   This is my first attempt to branch beyond that more personal social interaction and setup something a bit more about my professional life.   While there are many blogs out there, detailing all things Java, J2EE, Oracle and the like, there will be, and I promise this, nothing with the unique humor and outlook that I bring to the  table.

We are all unique right..  well I am a unique Geek.  I don’t really fit into your typical stereotype of your total geek, but yet I don’t fit totally into your image of a business guy either.  I straddle these two areas in my day to day life, and it’s my humor and my outlook that keeps me sane.

So as I increase my readership, I hope to learn from, as well as teach those who feel as if the world is an interesting and fascinating place, and that to operate in both the business and technical circles equally and with success, is an enjoyable experience.

Follow

Get every new post delivered to your Inbox.