BA: Business Alignment for SMBs

Wednesday, September 15, 2010 by Aaron Whittenberger

This month I have been exploring the IT and Business working relationship.  It is a hot topic these days getting a lot of press.  STAR BASE Consulting is conducting a pulse survey asking what is the relationship like in your organization.  BA Times notes that your “Customers Don’t Want to Work with You!”  A couple of weeks ago, I looked at the relationship and how BAs could reduce the rivalry, if there is one.  Last week I took the relationship to the Organizational level and described how the Organization can build a unified, collaborative team.

You say Organizational Structure, Seating Charts, Enterprise Analysts (EA) and Business Analysts (BA) are all find and dandy, but what about me and my small IT shop?  I don’t have enough people to split into EAs and BAs.  How do you split one person?  Small-to-Medium Sized Businesses (SMBs) usually have an IT shop of 10 people or less.  Maybe at most 2 of them will be BAs.  I even had one CIO recently tell me that in his small shop he doesn’t really have full-time BAs, but five Programmer/Analysts that do their own analysis.  So we will assume these are the hybrid Developer/Business Analyst role within the organization.  So in this kind of structure, how can we improve the IT and Business working relationship?

In SMBs, where resources are scarce, it is not uncommon for people to perform multiple roles or “wear many hats” within the organization.  In today’s economy, where IT spending and salaries have stalled but the workload has not: IT is getting even more squeezed.  In this situation, when the SMB cannot make one of its BAs the strategic role (EA), or perhaps the organization does not need full-time enterprise analysis activities going on, it becomes even more crucial for the BAs to assist in building a unified, collaborative working relationship between IT and the business.  So let’s look at some of the key points I have discussed in the past two weeks.

Seating Chart - Two Desks

When looking at this seating chart you realize that there is only one person, so you only need one desk, correct?  Allowing the BA to have a desk in the IT Department and one in the business unit of the organization allows them to build a working relationship with each team.  By spending part of the day or week with each team, the BA can understand the challenges each team faces.  Even if the BA can spend only part of his/her time sitting with the business unit that they are suppose to support, it helps build awareness of the daily challenges that the business people face on a daily bases.  This helps the BA identify business needs to improve business processes and make the business run smoother.  This also makes the BA approachable by the business people to assist to work on problems and will help get buy-in from the business people when the BA has analysis tasks that require business input.

Communication is Key

Communication is a key skill for a BA, but becomes even more important in this situation.  The trap that the BA must avoid is the business feeling that the BA is approachable only when he/she is sitting at the desk in the business area.  Or that the BA is available for IT project work only when he/she is sitting at the desk with the IT business solutions development team.  The BA must communicate to both teams that he/she is available whenever they need assistance; it is their goal to assist.  The BA also must represent the needs, desires and limitations of each team to the other.  Make the IT application development team understand the business requirements and why these requirements are needed.  Make the business understand the time involved to make “a simple change” to an enterprise application.  By representing each team to the other, and making each understand the work at hand, whether that is requirements or solution testing, they are creating a shared vision across the organization.

Build the Bridge

Through effective communication of the needs and limitations of one team of the business to the other and representing the each team to the other the BA can build a bridge of understanding between the two groups.  By making each side realize that we are all in this together and desire the same outcome, you can build a relationship of trust and get rid of the “Us vs. Them” scenario and replace it with a collaborative working relationship that brings about better IT solutions to business needs.

Whether in a large organization or SMB, business must go to IT for technology solutions.  Even in an IT Outsourcing situation, there are on-site IT people to directly talk with the business people.  In SMBs, where resources are less and people “wear many hats”, the BA role of liaison becomes more important to overall IT business solutions success.
 

On The Front Lines of The Great IT Wars

Tuesday, September 14, 2010 by Matt Warman

On of the big things all application development people know (and I guess business development people know as well), is how their department is treated by management. This battle has been raging since companies decided to have an IT department. The perfect company would have an IT department that supports the business goals and objectives, and can scale and change quickly. I can hear some application development folks laughter already. It can happen. Management needs to let the IT department make the decisions on the software, hardware and infrastructure. IT must understand the business needs, and managements' objectives. The business needs to articulate their needs, and help IT understand the business concerns. In balance, all departments fulfill their roles and the business grows. I have seen some companies that at least understand this principle, and try to implement it, but most companies have one side dominating the other. I will highlight the major factors for the Great IT Battle.

Management treats IT as a cost center – That is correct only if you are an accounting firm. IT brings great value to any organization by streamlining your business processes, which gives you your competitive advantage. I think that more than justifies the cost.

Business “owns” the IT department – This is very common where the business was mature before IT was around. Management came from the business, and doesn't understand that IT is a separate department. IT cannot scale and maintain their infrastructure, so once every 5 – 7 years there is a project like the Big Dig. If you like complex, over budget projects, continue in this manner.

IT “owns” the business - This is  common with organizations that see growth when they added IT. Usually this is caused by management thinking that IT solves all of the problems. IT supports the business. You still need a business plan and a vision.

Political battles between the three – This is the crux of the issue. Management usually comes from the business side, so when in a political battle, IT loses. Unless management views IT as the “magic bullet”, then IT wins. All political battles boil down to my next point:

Risk aversion - an executive at one of my clients pointed this out to me. All of the executives are the winners of many years of political battles. Any decision made is with the idea that they are near retirement, and will not make any drastic change that could hurt their position.

There are a lot of other factors that nuance these scenarios, so your view to the struggle is unique. We at STAR BASE would like to know where you are in this struggle by taking a brief (17 questions on 1 page) survey. STAR BASE can help your organization call a truce to the Great IT wars.

BA: Business Alignment for the Organization

Wednesday, September 8, 2010 by Aaron Whittenberger
Last time I took on the subject of IT and the Business working relationship.  Is it an “Us vs. Them” relationship or a collaborative, mutually beneficial working relation where you appear to be on the same team.  Now I wish to take a look of this subject from the organizational perspective. 

Kupe recently wrote on this subject at BA Times, where he discusses the point of whether your “internal customers” really wish to work with the IT department.  So how does the Organization get rid of the “Us vs. Them” mentality within the organization?

Organizational Structure

Take a look at the Organizational Structure, do the Business Analysts (BA) within the organization report to a single Manager or Director, or are they dispersed throughout different departments of the organization.  Do they report up to a Business or the IT Manager/Director?   If they report to business, are they perceived as part of the business or business partners to work with the IT folks to achieve technology solutions.  How are they perceived by the IT Team, as their business partners, SMEs or IT folks that are the “business-face” of IT.  If they report to IT, how do the business units perceive them, as IT employees that they must work with to get technology solutions. 

I have work in organizations that have had each reporting structure.  I have had a third structure suggested to me, where the Business Analysis Office (BAO) is a separate unit within the organization that does not report to either the business or IT.   Would this make them perceived as an independent unit to assist both the business and IT in achieving needed IT business solutions?

Seating Chart

Even if you decide that the organization is best served by the BAO reporting to IT, where should your BAs sit, within the IT Department or with the business units they are to support.  One of the roles of the BA is to identify business needs and make a business case for a solution to that need.  To do so, the BA should sit with the business people that perform the day-to-day tasks of the business.  The BA needs to understand the daily challenges of the business and they can not do that tucked away in the IT Department.

I actually recommend splitting the BA role within the organization into two roles: Enterprise Analyst and Business Analyst (Business Systems Analyst).

Enterprise Analyst

The Enterprise Analyst (EA) would be the analyst that needs to sit with the business to understand the day-to-day challenges that the business people within the organization.  They work with the business people to identify gaps that need filled and competitive advantages that can be gained.  These are the analysts that will perform market analysis, capability gap analysis, SWOTs, feasibility studies and so forth to help identify business needs.  They then build the business case for a solution, business or IT, to that business need.  The EA should support the business case, being the one that knows the most about the case, before the governance body (Project Review Board).  Once approved, they turn the business case over to the Project Management Office (PMO) and a new project is born.

Business Analyst

Business Analysts (BA) work with the PMO and IT enterprise application development team to make the solution to the business need a reality.  The BA may report to the PMO or as suggested above to a separate BAO within the organization.  This BA would take the business and functional requirements defined by the EA and refine them to give more detail to the application development team to help define the solution.  The BA could use the EA or other business partner as the Subject Matter Expert (SME) during the project lifecycle.

The EA is the strategic role and the BA is the tactical role of business analysis.  The EA helps the organization achieve its strategic goals through enterprise analysis activities.  Unfortunately, this is the role of business analysis that most organizations are missing.   This with a lack of an internal Business Analyst Body of Knowledge and Enterprise Architecture keep more than just the BAs within the organization repeating processes that cause a great waste of time.  So every organization should strive to have both roles of business analysis performed for the organization.  Ensure that enterprise analysis activities are being performed to further the strategic goals of the organization. 

New JavaFX Features

Thursday, September 2, 2010 by Matt Warman
Even though I was critical of the JavaFX's owner, I still think it is a great language that Java development people should consider using. The ability to make ordinary applications special is really cool. The latest version of JavaFX (1.3.1) has been out for a couple of months. I was on assignemt until recently, so I just now have been able to get to the new stuff, and  it is really cool. JavaFX has had CSS in the background, but it was used inconjunction with the making controls Skinnable. It was a bit confusing and tedious, but useful to make your controls pop. That has been replaced with a using CSS to not skin your controls, but creat custom skins too. For Example I wrote this as a splash screen:


The star is a polygon:
var star = Polygon {
        layoutX: 30
        layoutY: 10
    points : [40,10, 48,30, 68,30, 54,44, 62,64, 40,54, 18,64, 26,44, 14,30, 32,30]
    fill: Color.RED
}


With CSS, I can create a star shaped button like this:
#star.button {
     -fx-shape: "M 50,5 L 37,40 5,40 30,60 20,95 50,75 80,95 70,60 95,40 63,40 Z";
     -fx-base: red
}


and use it in my application like this:
var star =  Button {
    id: "star"
    translateX:35
    translateY:30
    layoutInfo: LayoutInfo {
         width: 250
         height: 250
    }
}


it may seem the similar, but by using CSS you can resize and modify the behavior the star. Easy Code resue without "cut and paste".

New Controls

The controls haven't been finalized, but are available to you. Primarily the use of menus and menuItems. This is great for application development folks porting over their old Swing applications. I was really looking forward to these controls, and they don't disapoint. Since I have been using JavaFX, I have been thinking of ways other than menus to present information. I guess its a familiar metaphor for many users, so it is welcome. There is a new Grid container, which is the precursor to a full blown table. It lacks the maturity of a JTable, but allows you to dynamically create rows. You can use the Grid as a Table holder, or just to align labels and text boxes in an input form. The other control I have been using is the ChoiceBox. There has been a swing combobox available, but this is a native control. It uses a checkbox to display your selection in a list. There are still some issues though, as you can only display text, and the list is not editable to the user.

ChoiceBoxes in a Grid Layout

Open Sourcing JavaFX
The issue I have with the ChoiceBox demonstrates the need to open source JavaFX. I can't change the display unless I have access to the source. It is important that application development has access to code for just these situations. There is a petition headed by Steven Chin to do this. Any Application developemnt person who wishes to sign the petition can go here: steveonjava.com/petition-to-open-source-javafx/

Oracle Vs Google = No JavaFX On Android

Thursday, September 2, 2010 by Matt Warman
One of the coolest languages for me to come out is JavaFX. I have been one of many application development people who wished they could write an application that could run on multiple platforms and devices. Finally, The Java development world has one in JavaFX. The one glaring area where JavaFX doesn't run is in the smartphone arena. The iPhone runs on objectC, and Android uses Java code, but the code is compiled using Dalvik, Google's implementation of a JVM. So Java code gets compiled to run on Android only. Google created their own JVM for performance reasons. Sun/Oracle hass addressed the issue since Google released Android (better, but it still needs work), but Google has put too much work into Android to go back, even if they wanted to. Certainly, it sounds like the Microsoft case, where early in Java's life, Microsoft Embraced and Extended Java in their J++ offering.  Microsoft's version was to run in Windows only. Sun sued and won, leading to Microsoft creating C#.  This case is different in couple of respects, First off, the Language itself is not being changed. Secondly, You are free to write your own JVM implenetation. IBM uses their own implentation. Whatever the outcome, this will hurt JavaFX the most. JavaFX is the youngest of the RIA languages (compared to SilverLight or Flex). JavaFX early on claimed that it could run on Android, but I haven't seen anything recently. It makes great sense to have a JavaFX/Android combination for both companies because the urge to learn objective C is lessened, application development folk can port their JavaFX applications to millions of new users, and JavaFX now has an intriquing use as language for smartphones, attracting more application development people. It could even replace Flash as a dominant RIA language. Instead of working with Google, Oracle decides to throw its IP around for what purpose? Is Oracle even competing with Google in any key area? It's not like Oracle didn't know of Android. Rather than cooperate and try to lure more development people to your platform. you alienate your best partner on something that is not your core business. If Oracle thinks they can charge developers to use Java, they have bigger problems. The only hope for JavaFX is that it gets open sourced. There is a movement afoot, so it is possible

BA: Business Alignment

Wednesday, August 25, 2010 by Aaron Whittenberger
STAR BASE Consulting is conducting a new pulse survey this month asking the question “is there really a rivalry between IT and Business or is this all just sensationalized hype?”  I am very interested in seeing the results of this survey, but I believe I can predict the results.  In almost every organization I have ever worked in the “Us vs. Them” culture existed.  The relationship between IT and Business was more segregated, even adversarial at times, than that of a partnership.

Kupe tackles this topic this week on BA Times, where he discusses creating an environment in which the business wants to work with IT to derive technology-driven solutions.  Doug Goldberg does an in-depth analysis of the subject on his blog, in which he describes approaches that a business-side analyst and an IT-side analyst to take to create a collaborative environment.

This topic is nothing new, just as the relationship between IT and Business is nothing new.  It took decades to get it where it is today.  I am sure you can find bright spots in which IT and Business work together to achieve their goals, but in more organizations than not, this is not the case.  Just as business processes and technology advance year by year, the relationship between IT and Business can be made better.  I believe the Business Analyst is in prime position to turn the relationship around to a positive, collaborative, trusting relationship in which the two work together to achieve the strategic goals and initiatives of the organization.  Why the BA?  The BA is one role that works on both sides of the fence.  The BA works with business stakeholders to bring out requirements for business improvement or application development solutions.  The BA also works with the IT Solution Delivery Team to develop the solution that meets the business requirements.  As the BA works with both teams, they are in prime position to bridge the gap between the two.  So how should the BA go about bridging the gap?

Build a Relationship of Trust

One of the often overlooked roles of the Business Analyst is that of liaison between IT and the Business.  In order to fulfill this role the BA must have a relationship with both sides of the organization.  That relationship has to be built on trust.  The business must understand that the BA is there not only to gather requirements but to understand the needs of the business and represent those needs to the IT delivery team.  The IT delivery team must feel that the BA will represent the capabilities and limitations of technology to the business. 

Communicate

The greatest factor that creates the “Us vs. Them” relationship is a lack of understanding.  The business wonders why it takes IT so long to make a seemingly easy change.  The IT application development team feels that business can not communicate effectively and does not understand the process of making application enhancements.  Last month I spoke about creating a shared vision in relation to requirements and IT solutions.  The BA should also create a shared vision of the needs and limitations of one organization to the other.  The BA can communicate not only the requirements for IT solutions, but the stakeholder concerns surrounding those requirements.  This adds context and can improve the ultimate solution developed as it increases the IT delivery team’s understanding.   The BA can communicate to the business that the process of making application enhancements is more involved then changing a little piece of code and there it is.  Testing, Quality Assurance, moving changes to production, Sox regulations, post-install processes and support are all time consuming tasks and increase the amount of time it takes the IT application development team to make an application enhancement.  The more the business understands about these processes and the value they add to the solution, the more considerate they will be to the needs of the IT delivery team.

Build the Bridge

Through effective communication of the needs and limitations of one side of the business to the other and representing the other team to each team the BA can build a bridge of understanding between the two groups.  By making each side realize that we are all in this together and desire the same outcome, you can build a relationship of trust and get rid of the “Us vs. Them” scenario and replace it with a collaborative working relationship that brings about better IT solutions to business needs.

So take the liaison role of the BA seriously and work to replace the adversarial relationship with a collaborative, understanding relationship.  In this way you can show the BA value to the organization.

BA: Am I Certifiable?

Thursday, August 5, 2010 by Aaron Whittenberger
Like Adriana Beal, I am often asked by BAs and aspiring BAs if I think that becoming certified would be a good career move.  Adriana covered the Certified Business Analysis ProfessionalTM (CBAP®) certification from the International Institute of Business Analysis (IIBA®) very well.  She noted two situations in which she, and I, would recommend you to obtain the CBAP® certification:
  • the job titles on your work history do not reflect your experience in business analysis (they include other titles such as programmer, software developer, financial analyst, etc.) and/or;
  • you spent many years doing business analysis work for one company (perhaps even with the title of BA), but never obtained post secondary education, and is finding it difficult to get your resume noticed by other companies.
So I will cover the new Certification of Competency in Business AnalysisTM (CCBATM), just introduced by the IIBA.  This certification is targeted to the intermediate BA who has not yet achieved the 5 years of BA work experience required by the CBAP®.  The IIBA has positioned this certification as a stepping stone to the CBAP®, as such it does not have a recertification process.  The CCBATM is good for 5 years and it is expected that within that time most recipients will achieve their CBAP® certification.  If not, you will have to sit for the CCBATM exam again.

So is it a good idea to get the CCBATM certification?  There are many good reasons to obtain a certification; Adriana points many of them out in her article so I will not repeat them here.  However, I am often asked this question by BAs with no or less than one year of work experience.  They clearly do not meet the requirements of the CCBATM certification; so what is the alternative for them?

The alternative to a certification for someone who is just starting out their BA career is a “certificate” from an education provider that you have completed some training in a specific area.  It is advisable to get your training from an Endorsed Education Provider (EEPTM) of the IIBA so that you know that what is being taught is in line with the IIBA Business Analysis Body of Knowledge® (BABOK®).  One other recommendation for those just starting out their BA career, go ahead and join the IIBA now.  Just putting your IIBA membership on your resume shows your dedication and passion for the BA profession.  It also gives you an excellent talking point during interviews.

As you are beginning your career as a BA, concentrate on improving your BA skills and gaining experience in a breadth of BA tasks and techniques.  Remember, work experience can stand alone on your resume; a certification (or certificate) can not.

Why? Because that’s The Way It Is!

Friday, July 30, 2010 by Matt Warman

If you thought your job as an application development person is difficult, try being a consultant. I love my job as a consultant because I am able to affect change, that is, when people want it. The most dreaded phrase a consultant can hear is “that’s the way it is”. Those words have no rebuttal, no further review. It’s the organization’s way of saying “talk to the hand”! My job is to find gaps in code or process and bring them up to the client. Often times the client has fallen into way of doing things that are counter productive, or more likely, have not changed since the process was in place. A case in point, I was having a discussion with an architect about code review. I noticed that they had the Legacy style user, date, and change comments at the top of their classes. I made a review comment that they weren’t necessary, because Subversion tracks the changes for them. It was due to their work process that comments would be lost by Subversion on multiple merges. I mentioned that several high profile companies use Subversion and don’t seem to have a problem. The architect said that research was performed and it doesn’t, and if I have a better solution, I should do my own research before making a comment. I told him that software does indeed improve, and that if research has been done, it should be reviewed periodically to see if the issue had been fixed. I did research the issue, and Subversion did have bug but was fixed, and my client could use comments in their merged code. The key here is that the staff complains that changes don’t get done, but when they are in a position to make it better, they don’t do it. If anyone investigates a new technology or work process it should be DOCUMENTED AND REVIEWED! I don’t know if it will be investigated because it seems like a trivial issue, but the main problem is that the application development people complain that nothing changes. It’s our Culture. Culture is people, and all people, especially application development people can change culture. If there are deprecated methods and TODOs in production code, bring them up in your code review. I don’t accept “that’s the way it is” as a reason. You can’t change a decision for business reasons easily, but you can fix how things get done. If I don’t like the way that it is, I make it better.

Phone Questions and Blog Roundup

Friday, July 23, 2010 by Matt Warman

I have been writing a lot about phones recently. What application development person wouldn’t be excited about the new smart phones? I will talk about that later, but first, the news!  My colleague Aaron Whitenberger has been interviewed about his role as a Certified Business Analysis here at STAR BASE.  If you didn’t know there was such a thing, you should read it now. I wrote my take about Google VS Viacom. Google spent 100 million dollars to defend their right, and it didn’t even go to trial. Vicacom is appealing, of course. The price of freedom is very steep.

Now on to my phone questions! A Java application development  peer my client site refuses to get a Android phone because of “market fragmentation”.  “I like that iPhone is walled off, but it’s on ATT”. He loves his blackberry, so maybe he doesn’t need it. This post from Slashdot  seems to support his case. My questions to you are why did you get a smart phone? Did you consider the operating system when you got your phone? Which would you rather choose, a fragmented but open system where you can get any type of app but could have bloatware, or an operating system ruled by a “benevolent dictator” which strictly controls your hardware and software, but you are free of bloat issues? I choose Android because of its openness. I do have the technical skills to root my phone to remove bloatware if I need to. Some people can’t or don’t. I think Apple went down this road before, and I think you will see Android be the market share winner. Let’s see if Google can do better than Microsoft in maintaining some control of  the platform, but still give 3rd parties the tools to innovate.

The Value of Communication

Monday, July 12, 2010 by Matt Warman

There are many skills needed as an application development person to be successful, but none more important than communication. In fact, that is point of our job, to be able to communicate to our peers, partners, and customers. I believe that most organizations make money in spite of the immense lack of communication. Most of the application development people I know complain more about the policies and procedures than about anything else (although it’s always something!). Aren’t policies and procedures communication? Certainly, but it’s the internal communication that enables and drives the external communication. Everything we do has an impact on our ability to communicate. Say the wrong thing to a journalist, and you will be removed. Miss that deadline, forget about the promotion. Governance is important for the security of communication, but when do these rules get reviewed? Ask any software development person or manager why, and the answer usually is “that’s how we do things here”. The real answer is that someone set that restriction to an event that happened long ago, and nobody is willing to change things. If communication is the life blood of an organization, why would we restrict the life blood arbitrarily?  If this sounds like your organization, maybe you need to review how you are handling your communications. If you need help, STAR BASE Consulting has years of experience triaging your life blood, and making it flow easier, better, and stronger.

Phone from England

Tuesday, July 6, 2010 by Matt Warman

I wrote in my last post about looking forward to using my phone in England. Well, I am back (It was wonderful) to tell all of my application development people and friends about my experience. It was a bit of a struggle to get my phone unlocked. I had just unlocked my G1, and when I purchased my new phone, my provider said that they only allow a phone number to be unlocked once every 90 days no exceptions. I understand that, as unlocked phones are very desirable on the open market, but I want to use my phone. After not taking "no" for an answer several times, a workaround was found. Once landing in England, finding a phone provider was easy. Unlike the US, you have to purchase your phone at full price, and then select a provider. Sure, you don’t get a cheap new phone, but you aren’t saddled with a poorly operating service provider either. My first stop was at an O2 store by my Tube (London underground) station. They were very helpful, even though they couldn’t provide me with a plan. They suggested I go to T-Mobile, and even gave me directions! I would like to know from my application development friends if they ever had helpful service from their phone provider. I went to T-Mobile, and got my SIM card. This is a pay as you go card. I got the card and put 5 pounds for use. Since my phone is not available in the UK yet, I got to show it off. I also got the free international rate of 5 pence (about 8 cents) a minute to the US. My roaming charges would have cost me $1.49 a minute. The data plan was 1 pound a day for unlimited surfing at about 10 MPS. That was much better than $15 per Megabyte usage. How difficult was it to switch networks? I just swapped out SIM cards and it was ready to go. I was able to use Google maps (with turn by turn walking directions), get tube updates, and find places on the Internet. It was the fastest my phone had ever worked. I had used up my initial 5 pounds, so I went to Tesco (like CVS or Walgreens) and added another 5 pounds there. Super easy! Now, if I go back, I have everything I need to use my phone. On my return trip I swapped my SIM card back to my original, and everything worked from home again. I wished the US had this as the competition was on consumer services, and better features and not trying to make it difficult to use your phone or change services.

Don't Repeat Yourself (DRY)

Monday, June 21, 2010 by Mark Murphy
I have been programming/consulting for over 20 years now, mostly in Cincinnati, and it still astounds me how many coders do not update thier style as trends change.  I have heard that if you want to see how things were ten years ago, then go to Cincinnati, but that is beside the point.  I have recently been working on an application that was admittedly written some time ago, but in an environment that encourages sharing of code, fields, forms, etc.  It seems that the developer only dabbled with code reuse.  In form after form, agent after agent, I find the same code, or code that attempts to do the same things, and frequently in a brute force manner.  Needless to say, maintenance of this application is a nightmare.  Highly frustrating.

Coders - DO NOT REPEAT YOURSELVES.  Put your code in reusable general purpose functions, and then reuse them.  Refactor your work if you need to add a parameter.  If you find yourself writing a bit of code (e.g. getting a configuration value) more than once, put that code in a function, and call it next time rather than writing the code again.  The goal is not to reduce the amount of code you write, though sometimes that is a result of DRY coding.  The goal is to improve the maintainability of the code.  If at some point down the road you need to change the way you retrieve a configuration variable, you don't have to go change the code in a million places, you simply change it in the one function whose job it is to retrieve the value.

Roaming the UK

Monday, June 21, 2010 by Matt Warman

In my recent post, I talked about my new phone for my upcoming trip to London. I am excited about my new phone, but not the cost. My carrier charges .35$ per outgoing SMS, .20$ per incoming SMS, and 15$ per MB for data. Since my phone is always “listening” on the Internet, it would cost a lot to actually use my phone in London. I can put my phone in “airplane” mode and use the camera, games, and music capabilities, but why have smartphone and not use its features? Fortunately, the solution is relatively simple. I can unlock my phone and use a pre-paid SIM card while in the UK. For my application development friends who are not phone savvy, let me explain. US phones are “locked” for US usage only. All carriers also make some phone features unavailable to the customer. In some cases, you are charged an additional fee for a feature your phone could perform for free! In this case however, I am unlocking my phone so I can use it on other networks. You may have heard of the term “Jail Breaked”.  This refers to a phone that has been hacked to allow all features on your phone to be used. Some phone manufacturers and carriers don’t like this, and can make your phone unusable, or “Brick” your phone. Unlocking through your carrier is perfectly fine though. Once your phone is unlocked, the second part is to get a SIM card in the country you are traveling to.The SIM card is how the network recognizes you. If you opened your phone and swapped your SIM card with a friend, you would get all of his calls, and he would get yours! You can pick up a prepaid SIM card with a data plan for about 10 pounds (approx. 15$) a week. That’s a hefty monthly bill for a local customer, but it is much cheaper than the roaming plan. Remember, your phone number is different with a different SIM card! I can use my phone features to post messages and images on Facebook, for example, like I was at home. I can communicate with people at home without paying hundreds! I will let you know how this works out when I return.

New Android Phone!

Wednesday, June 16, 2010 by Matt Warman

In a break from my recent posts, I am going to give my application development peeps a review on my new Android phone, a MyTouch 3G Slide. The reason I got a new phone is that I am going to England with my son in a couple of weeks, and I want to use my phone as a camera and video device (and GPS, etc). The G1 can do these things, but it doesn’t have a flash or zoom. Besides, it’s been nearly 2 years since I have switched. Phones have become the new computers; a drastically newer, faster, cooler version comes out every 6 months. I was seriously looking into a Nexus One, but Google makes it too difficult for existing T-Mobile customers. To get a Nexus One, I had to get a NEW line. The T-Mobile representative said I could have folded that account into my existing account, but I couldn’t use my existing phone number with the new phone. That was too many hoops to jump through just to get a new phone. Could I find a comparable phone by T-Mobile? I was in luck, the new MyTouch 3G slides just came out! In specs, the only glaring difference was that the MyTouch doesn’t use a snapdragon processor. One of the other big selling points was that the MyTouch has a QWERTY keyboard. I have big fingers, and I enjoy the tactile feel of a real keyboard. The MyTouch comes with Android 2.1, with Froyo (2.2) coming soon. Some cool new things about my new phone:
3.5 MM jack (My G1 had a proprietary jack)
Larger storage- comes with 8G SD card, accepts up to 32G
Syncing my ITunes library with my phone
Adding movies to my phone

Overall, I am very happy with the speed and features. The only drawback is that my apps didn’t come along for the ride. I think I am going to create a backup on the G1 and try to move them to the new SD card. Hacking type application development people would love Android! The funny thing is that my phone comes with Swype, a new way to type by tracing a line to each letter of a word. It sounds complicated, but it is fast! I don’t need to use my QWERTY to be productive! I can hear my application development friends asking what will I do with my G1? I can now play around with rooting my phone and flashing Cyanogen without worrying about bricking my phone. If my experiments work, my son may be getting a sweet phone!

Youtube Versus Viacom

Wednesday, June 2, 2010 by Matt Warman

For those of you not following geek things, there is a lawsuit going on between Youtube (owned by Google), and Viacom (CBS, Daily Show, Colbert Report). Viacom is angry that some of their content was posted on Youtube. Apparently, there was 63,000 separate items on Youtube that were copyrighted by Viacom. Viacom has been supported with a “Friend of the Court” brief by NBC, BMI, and ASCAP (Basically the RIAA). Google has similar briefs by EBay, Facebook, Amazon, and Yahoo. How does this court case affect me as an application development person? Well, it could determine your web application development. There are many interesting issues here: fair use, piracy, site owner responsibility. The key issue here is for the very soul of the Internet. As you probably know, the Internet was created to share information amongst researchers around the globe. This communications device allows us to share voice, text, audio, and video. This makes it easy to share ideas, even if those ideas weren’t ours. A part of that communication is the same kind “water cooler” talk that everybody has done for years. “Did you see what that talk show guy said last night”? The only difference is now you can post it. This song expresses how I feel, and I have added some pictures to show how it has affected my life.
The media outlets want the site owners to control the content on their site. They claim that Youtube is a content provider, and thus are “stealing” their content for gain. This would be analogous to suing the U.S. mail for getting a threatening letter. We have fair use,  so any signal sent through the airwaves is free for anyone take and use. This meant that anyone who broadcasted, the content could be consumed by anyone. The content providers made money by placing advertisements in the content. Since that time, content providers have been using congress to side step these boundaries by changing the length of copyright, putting "digital" rights on formerly analog content, and pushing for laws that allow content to be controlled by the provider. The large media companies ignored the Internet because there wasn’t any correlation to their business. When companies like Google started to compete for the same advertising dollars, the large media outlets saw the Internet as a threat to their business model, and are now looking to destroy it.
No one is trying to deny content providers money. It was agreed long ago that your work was yours, but eventually it would be owned by the public. That changed when media companies are entirely built upon their own content (just look Mickey Mouse at Disney). Do people take content that doesn’t belong to them? Yes. Are people just posting items broadcasted to make their point, or to inform? Yes. We have to decide as a society whether the Internet is place to allow copyrighted material as a form of communication. NBC found it distasteful that their shows were on Youtube. That’s why they created Hulu.

What do you want the Internet to be, a free (as in liberty) communication device, or a pay-per-view broadcast medium?

 

Know Your Role

Thursday, May 20, 2010 by Matt Warman

I am finding out things at my current client that everyone, including application development people knows; having a process is only half the battle. I have been to organizations where business workflow processes were not in place, and the productivity gains were huge when implemented. But over time, those processes stop getting followed. There are many reasons for this; the IT culture rejects the change, the processes don’t get reviewed in a timely basis and become a burden, and the players forget their role.
My client has a decent development workflow in place. Analyst get requirements from the business units, architects turn the business requirements into technical requirements, and application development people execute the requirements. Managers should manage the process, making sure that the resources are available when needed. I always wondered why top technical guys get passed over for management in favor of PHB (Pointy Haired Bosses), and now I know. It’s that PHBs know their role. Managers are managing the PROCESS, not the solution. Often, technically savvy managers want to work the issue. Software development is a very fluid process, and what works now, may not work three years from now. If you are manager for more than six months, you probably don’t know the correct solution. Regardless, your role is to make sure application development staff are available for the solution designed by the architects. Managers have a right to review the design during the design phase, but once finalized, let the architects and application development people do their jobs.
The same is true for consultants. Yes, they are using older technology, and yes it’s a pain to use, and yes it needs to be updated. Your job is to help resolve those issues within the framework of their organization. Unless you are brought in as a CIO consultant, the choice is probably not yours to make. It may be that the business has urgent needs that supersede modernization. They may not have the technical people to maintain the new code. The organization could be planning to replace the system with a prepackaged application like SAP. Or it could be that the technical staff knows their role, and is waiting patiently for their opportunity to upgrade.

The Secret to Good Performance

Tuesday, May 11, 2010 by Matt Warman

I am now in my second stint as a performance architect. There are many tools to measure performance. Usually there is some criteria like time or memory that is failing. I think most application development people know that the secret to good performance is good code. The problem is that good code is impossible to measure. There isn’t any metric you can show your boss that shows refactoring this class will make the code run faster, or at least will not remove that class from the performance list. Besides we have these new features that need to be added. So how do I make code perform at a high level?
Write unit tests. Make sure that the tests cover all of your method calls. Make sure that your test captures error situations, not just the "happy path". Write your test cases BEFORE you write your code so you can "code to the test". Of course, you need good use cases from your architect and business analyst to write the unit tests.
Comment your code. Make sure your method names describe the function it is performing. Most IDEs add the parameters and returns for you; all you have to do is describe the reason for the method. These are easy things to do. They are boring yes, but when it comes to adding that new feature, or changing a method call, it saves a lot of time when you can run a test to prove that your changes work.
Refactoring. All application development people should learn refactoring. The Java language has changed tremendously in the last 15 years, and your code hasn’t. I think that the Date object has been revamped twice since the 1.x days. New features like annotations and generics may not change the performance of the code, but it sure does affect the readability of the code. Readable, easy to understand code is also easy to maintain and update. It makes a six month project become a three month project. The business always has more projects, so they will be happy. Fewer errors happen, so your boss is happy. You get to solve more interesting problems so you are happy. When you are happy, both you and your code performs better.

Death by A Thousand Cuts

Wednesday, May 5, 2010 by Matt Warman

My client has great code promotion rules. All code that changes gets system tested or it doesn’t get promoted. Code doesn’t change unless it has a bug tracking ticket. You say Matt, that’s great! Why is this a problem? The problem resides in the fact that everyone in IT is stretched to the limit, and deadlines are tight. Application development people are getting the code working with little refactoring, architects struggling to get the analysis piece out and little time for code review, and not enough testers. This situation makes it difficult for performance. As part of the performance team, I can review all of the code, and make some changes, but the problem is that if the code is not a part of the release, it will be impossible to get promoted due to time/resource constraints.
For example, a process was taking a long time to complete because of improper error handling, but the call is not necessary. The proper fix is to remove the call, but the fix going in only resolves the exception. Why? The low priority of the code, coupled with the testing constraints and lack of testers makes these changes common. Some application development people may say, "Well, the code is fixed". True the performance issue is resolved, but there is an unneeded call. If the attitude from application development people is "I would fix it, but it’s too much trouble to test", unneeded code can add up quickly. Extra code is in all projects, but if changes like this or, removing a variable passed to a method, or even changing code to remove unused variables don’t get fixed, the "extras" add up. Not one of these changes significantly affects performance, but all of them will. The solution is to work with management and your application development people to limit "extra" code. This can be done by reviewing and fixing code in your maintenance or enhancement project. Have a "refactoring time" built in to the project plan. The time put in up front will bring great dividends both in performance and future coding effort.

Got Tools? Use Them!

Friday, April 30, 2010 by Matt Warman

I have a new client in Cincinnati. New clients are always interesting because you never know what issues and opportunities you will find. My client seems to have their act together. My application development friends will appreciate their setup; Maven 2 projects with built-in JUnit tests, a code coverage dashboard that show code complexity, code coverage, and Find Bugs reports. Things seem great, them why do they need a performance engineer?

The reason is common; who defines the duties of ITsets the rules. IT and the business need to be aligned to work on the common goals and increase productivity. If IT is too dominant, there is too much focus on technology and the business doesn’t get the tools they need to be productive. If the business unit is dominant, only projects that have a tangible return get done. In this case the business is more dominant, so projects like refactoring code, or cleaning up errors found by software like Find Bugs has a much lower priority. They do happen only if performance is an issue to the business. The performance team is set up like a clean up crew that comes in after the fact, to make things work better. There are coding style forms and best practices, but is up to the each developer to follow them. Since the focus is getting the project done on time, the developers are concerned on getting code that works,not what works best. The performance team is used to fix the worst performance offenders.To be fair, I have been at clients where IT treats the business units as a nuisance. The best tools are there, but little support for the business.
What’s the solution? IT needs select a technology that best suits the solving of business problems. The business should prioritize their issues, but work with IT to plan for fix releases. IT must utilize the tools that they have and encourage the usage of them. If you have the tools, use them!

Getting Some REST

Monday, April 19, 2010 by Matt Warman

After playing with JPA, I realized that I really don't want to directly hit the database from the client, because that would mean opening up the database port to potential attackers. JPA is really great, but either you hit the database locally, you hit the database directly from a remote location, or you access the database through a connection pool. JNDI is the best way to access a server resource, but it needs to be in a server container. I could not find a way to call JPA using a JNDI context from the client. All database servers have some mechanism to accept multiple connections. But besides the obvious security issue, I already have an application server and connection pool. I should let the connection pool do the work, and figure out plan B.

I reviewed all of my options. I am lucky because I can use the latest and greatest since this is all new. I am using Java 1.6, so I can use EE5 or EE6. Most application development people know that EJB has had a history of being complex, and at times, unwieldy. I could call JPA via servlet, but I was concerned about performance. I decided to use RESTful web services to push data to my JavaFX application. Using REST in JavaFX is quite easy, because the 1.2 specification has a HTTP request object. That means I can write all of my access and utility objects in JavaFX, instead of accessing a class library externally. The big drawback I have thus far is that all of the related objects are another link, and another call to a REST resource. For example, if you look up a specific Customer Record using REST, you will get the details in XML or JSON. To get the collection of Orders related to the Customer, the XML returns a link. You must make another call to get another XML/JSON to parse the related information. The parsing process would not be to big of a deal, except that everything is done asynchronously. I have a Table A object where one of the fields would be a collection of Table B objects. The Table B object contains a collection of Table C objects. In JPA, all of the related collection objects are there and ready for me. Since REST is asynchronous, It makes it very difficult to set up a Table A row object, because Table B is a separate call which will start and finish without Table A's call knowing anything about it. For my database application development people, the key is to de-normalize your relationships. Since this is a big departure to my original schema, I decided to create a whole new database in case I wanted to go back to JPA. After some trial and error, I have a way to asynchronously access and display REST resources in a JavaFX application. I now have to work on writing that data.