Showing posts with label AS/400. Show all posts
Showing posts with label AS/400. Show all posts

Monday, July 28, 2008

The context of programming

Recent events in my place of work have lead me to ponder the concept of programming context once again. I suspect it is a pervasive concept as I seem to come across it on a regular basis in quite different circumstances. Let me explain.

If I am asked to write a program that accepts two numbers and returns a third number, being the product of the two, then there is not a lot more I need to know. Perhaps knowing the possible range of input numbers would be useful, but really this is a pure mathematical problem and has no context.

If I am asked to write a program that accepts two numbers and returns a third number - the number of residential addresses in a database that fall between those two numbers - then there is quite a bit more I need to know. I need to know whether just street numbers alone should be checked, or whether street names should be included (5th Avenue, for example). Even within street numbers alone, what about flat numbers? It's a bit more complex than the first example as there is a context. I.e. what are we actually trying to achieve here?

Now in a third example, I am asked to write a program that accepts two numbers (x and y) and returns a third number which is the number of active users who have been logged in between x hours and y hours. Again, now the context is complex. How do I define a "logged in user"? Do I define one interactive session as one user, or do I need to reduce this to unique users because some may be logged in more than once. What about "special" users such as system supplied IDs? Should they all be counted, none, or only some?

But the third example is even more complex than I have shown so far. Consider that this function needs to work in a function test environment, in an integrated test environment, and in production. There are some processes that occur only in production, some only in test and some on both. Will this affect the outcome? Is testing on the test system going to be good enough to know it works in production?

Hang on a minute - aren't we talking about system programming? Well, maybe yes and maybe no. If this program is needed to manage software licensing, then it's a system program. But, if it is needed to manage the number of customer service representatives assigned to different parts of the call centre, then no it is not system programming. If it is being used to achieve load balancing for application service jobs then it could go one way or the other.

Now that was a somewhat contrived example, but it helps me to illustrate my point. In all three cases, take two numbers and return a third. The first example I would expect absolutely any programmer to be able to achieve. The second example I would expect any programmer to be able to achieve if complete requirements are provided. If the problem is only defined as I described, then you would need an analyst programmer. For the third example, who would you give the job to, generically speaking?

This is where I see a massive gap. I, myself, have been fortunate to have been involved in both application and systems programming fairly extensively and even if I say so myself I think I'm pretty good at covering off the sorts of issues described above. It also means I am frequently seeing other programmers who are failing to account for the "system" level factors.

In a specific recent case, a developer insisted that my team (who are a development & test support team) replace one version of a program with another so that it 'behaved like production'. That should have been the first red flag. (I was not involved at this stage so I don't know whether I would have caught this at the start.) Why was the test system behaving differently to production?

Well, the developer got his wish and proceeded to begin to make his related code work. Meanwhile, large numbers of other people were tripping over the problems introduced. After several days of analysing the problems we concluded we had to put things back the way they were. To quote Spock - "The needs of the many far outweigh the needs of the few." This programmer was looking in far too narrow a context in defining what needed to be done. He had no concept of the roles this particular program was playing, nor the large number of dependencies it had. For instance, an automated regression testing suite completely failed because of the change.

But perhaps the most spectacular case of lack of context that I have ever encountered was in a previous role.

The product in question was enterprise software being used all around the world and it was incredibly complex. Customers had requested the ability to use off-the-shelf reporting tools (such as Crystal Reports) to create their own reports. The development organisation realised this meant less work on such things for us and considered this was a good idea - but dangerous. Great they can write their own reports, but how to let them into a massive, complex database without (a) massive confusion and (b) the opportunity to corrupt it.

So a plan was hatched to deliver a new library (for self containment) of logical files (views) which would collate the data into meaningful constructs and, importantly, be read-only. My team (again in development & test support) figured out how to deal with this new library for the purposes of the testing done on it. For the most part we just manually created and destroyed these libraries as required and used some of our own toolset which, importantly, is not delivered to customers.

At some point I got to thinking...How are we going to deliver this? The initial response I got from the designer was "on a tape/CD with the rest of it." To cut a long story short, I soon proved that it is impossible to ship a library full of logical files. Period. Can't be done. I took this information back to the designer, along with a rough sketch design of a simple tool which could alleviate the problem, and also be useful within the development shop.

The response? "We didn't budget for that." * Sigh *.

In the end, I wrote a quick (hack) version of that tool on the day we packaged the software. Some months later someone contacted me saying that there was a bug in my code. I sent them to the designer to have it sorted out.

Thanks for reading.
Allister.

Thursday, April 3, 2008

Damn Marketing Rebranding Machines!!!!

UPDATED to cater for the latest rename of Plex from CA Plex to CA Plex PRIME

https://communities.ca.com/thread/241697286

The document

So IBM has announced another change to the name for one of my favourite computing platforms.

The new name ‘IBM Power System’ replaces the name of ‘System i’. I must admit I hadn’t really come to terms with the last rename and more often than not used the term ‘iSeries’ or ‘AS/400’. If I am being totally honest, I actually interchange all of these terms so frequently in both written and oral formats that I have to constantly remember my audience as well as remind myself.

I grew up knowing the platform as the ‘AS/400’. An extremely powerful, reliable and scalable midrange system. It wasn’t known as a server in those days, more an integrated bespoke environment and all the applications ran natively.

Now things have moved on quite a bit. The announcement for the rename is actually more than just a re-branding exercise. It is not a shallow attempt from a ‘change hungry’ marketing team to try and impress a new boss or make an impact in a global IT organisation.

The technology has moved on significantly as well.

Two hardware platforms have been consolidated which must be good for me, the consumer. The ‘System i’ and the ‘System p’ now both ship as the ‘IBM Power System’. You then have the choice of installing one or more operating systems on system partitions. So this announcement for the industry is quite significant for the midrange marketplace.

My main moan point about this change is why companies constantly consider re-branding. In my mind it doesn’t make sense. I doubt they actually consider the affects of their airhead moments after 3 zillion triple espresso’s. Especially the impact for those outside of their organisational walls.

In my opinion, this is change for changes sake and I have seen plenty of that over the years.

This is particularly true when people join an organisation and immediately set about changing it. They do it without considering why it is architected that way. Very rarely do organisations or products require a revolution rather than applied evolution.

Yet, I have witnessed the revolutionists hitting the same problems the evolutionists had already resolved. If only these revolutionists had engaged the incumbents long enough to determine what needed fixing then value could have been added somewhere along the merry path of so called, 'change glory'.

Let's take a look at the soccer scenario when clubs change their managers too frequently whilst chasing success. Those that change managers, their approach and tactics, generally over a period of time underperform those with established managers and an evolutionary mind set. Consider a Manchester United or an Arsenal approach for further proof. The exceptions are the one season wonders and rich clubs like Chelski. How many IT companies out there can afford that level of investment before seeing a return?

So I ask, did these marketing executives ponder the impact of the change?

I guess they would be aware of the cost internally. After all, this is at least the fifth change that I am aware of, so the reprinting of the user guides, help text, updating of the other applications to reference the new name (I hope this was soft-coded somehow) are generally constant. I am assuming that each group within IBM was advised of the change so that all other aspects of the business i.e. services, pre-sales, technical support, training, internal systems and accounts etc are fully conversant with the new brand.

I am also assuming that IBMs strategic and local partners are aware of the change and that they have change plans in place to ensure that their own literature, staff and services are realigned to the IBM 'espresso executives' vision.

But, of course, it doesn’t stop there!!!

What about all those companies with ‘System i’ etc in their company names? What about all those now outdated links on websites? What about all those cyber squatters and phishing sites that need to seek reinvestment capital? Those poor recruitment consultants who have another buzzword to look out for.

One thing is for sure. Google/Yahoo/Microsoft and other web search engine robots won’t know or care about the platform evolution of the ‘IBM Power System’. So I now have to remember to search under many name banners to get the correct information.

How many millions of business cards, job descriptions, organisation charts and email signatures need to be updated around the world? What about all those periodicals that target the platform? All those outdated and now devalued books on http://www.amazon.com/ that plug the power of the 'System i', Ooops, "IBM Power System'.

This list is likely to be significant if I had time to ponder for longer. But, there is also and most importantly of course, the impact on me me me me me. Call it selfish, self-centered or paranoid, but...........

I used to say that I specialised in 'AS/400', 'iSeries', 'i5', 'System i' software development. I am going to have to append ‘IBM Power System' to this list. I won't even begin to comment on the names of the operating system whose naming journey has been equally as diverse to cogitate. Now they call the operating system 'IBM i', "Yeah Right!!!!".

Most begrudgingly, I now have to go and update my curriculum vitae remembering to be aware that not everyone who may read it in the future will be aware of the recent or previous changes.

My CV will now read something like.

Specialist in ‘CA 2E’ formerly known as ‘Allfusion 2E’, ‘Advantage 2E’, ‘Jasmine 2E’, ‘Cool:2E’, ‘Synon/2E’) which is a 4GL code generator for the ‘IBM Power system’ formerly known as ‘System i’, ‘i5’, ‘iSeries’, ‘AS/400’ and specialist in CA Plex PRIME formerly known as, CA Plex, Allfusion Plex, Advantage Plex, Cool:Plex or Obsydian.

The irony is that although the system has been re-branded and many of the tools that I use have also been re-branded. They are more often than not referred to by their original name.

Just ask Symbol, the artist formerly known as Prince.

Thanks for reading.
Lee.