Tag Archives: SAP

#SAPPHIRENOW what it meant to a developer

I make no secret that I love developing. My favourite job title is “Chief HR Geek”, I adopt others as the need arises, but as a real in the dirt developer, content is always more important to me than flashy styling.

That’s why I was one of the only attendees at SAPPHIRENow 2014 wearing shorts. It’s fricking HOT in Orlando in June, wearing a suit?! Are you kidding me?

But it’s worth noting that to most businesses in the first instance, flashy styling is worth more than content! BUT – flashy styling with content, that’s awesome.

Fiori

With the announcement of Fiori being available as part of standard maintenance (yar boo sucks to those companies who’ve decided to skip SAP maintenance and have a third party do it) there comes the possibility of a double whammy of flashy styling and good underlying content.

The demo of a CFO drilling down in real-time to underperforming or problematic areas of the business and analysing why was compelling. I think Robbo has written about this as the killer app for HANA. I think he might be right.

But the key thing for a developer here, was the front end that this was achieved with, wasn’t a Business Objects add-on, wasn’t some WDA functionality. It was SAPUI5 over an OData layer exposed by Gateway.

If companies are going to be able to adopt these applications – and more and more of them are coming – there is going to be a clear need to support them.

Using tooling to build UI5 apps using ABAP won’t cut it

Whilst there are some amazing frameworks out there to help migrate stuck-in-the-mud ABAP developers across to building UI5 app, this does not help when there is a need to extend a standard Fiori app. Developers will need to learn JavaScript (or more properly ECMAScript, but that’s just me being pedantic.) If you can’t code JavaScript and refuse to learn, start calculating your redundancy payout because that’s what you’re going to be worth to your company. Alternatively, brush up on your SQL skills – and you can start writing some of the pushdown code for HANA. Either way, ABAP is going to be complementary to either DB manipulation or front-end display, but not a stand-alone skill set.

Fiori extension points

Did you know that many (not all!) Fiori apps have built-in extension points? You can use these to substantially alter the behaviour and appearance of the app. But to do so, there is something you should know – guess what? JavaScript!  Whilst the RDE (fingers cross for R to start meaning Rapid in near future) allows for some pretty amazing WYSIWYG modification to apps, the likelihood is that some form of developer intervention will be required. At the very least someone is going to have to figure out if the business requirement can/can’t be met using this simple customisation. And what skill set is going to be needed to figure out what those extensions can/can’t do? Yep you guessed it, JavaScript.

In Summary

For once I’m going to keep to a simple post without the detail that me as a developer I love so much. Because I want to emphasis this message.the future is fiori

I’m eventually learning to understand, unless you have flashy styling (Fiori), it doesn’t matter how good your content is (HANA) you can’t sell it. Combine the two together, and you have something that will change the marketplace and means developers need to change their game.

Perhaps if I ever attend SAPPHIRENow again, I’ll compromise and wear my jeans.

 

Organisational Charts, is there a better way forward?

What does your company’s organisational chart look like?

a) the Eiffel Tower,

b) a bowl of spaghetti?

SuccessFactors Professional Edition – a thought provoking trial

I’ve been trying out the SuccessFactors Professional Edition (SMB market) software recently (and no, this is not a review of it, that’s coming later (maybe).) It gave me a moment’s pause to think. Does the organisational structure at my company actually resemble a tree (an upside down one I guess) at all? The SuccessFactors software has a great organisational structure visualisation tool (far nicer than the Nakisa one IMNSHO), but it’s all about visualising a traditional hierarchical organisational structure.

Different types of structures

At the same time I was thinking about this, I happened to read the supposed “Valve Handbook for New Employees“. On page 4 (I’ve included the link, if you haven’t read it, I can recommend it, fascinating stuff and far more than just the bit I’m talking about here) it describes the structure of the organisation.

valve_org_chart

It makes a point:

 “Hierarchy is great for maintaining predictability and repeatability. It simplifies planning and makes it easier to control a large group of people from the top down, which is why military organizations rely on it so heavily.”

Like Valve, I don’t see the organisation that I work for being particularly militaristic. I grew up as an “army brat” and therefore have a very healthy (in my eyes) disregard for any kind of imposed authority. Someone telling me that I must do something in a certain way, is almost a guarantee that I’ll try to find a different way of doing it. I try to treat the people I work with like I would like to be treated. Telling someone to do something is pointless, explaining to them why they should do something – that’s more like it.

I’ll digress from my main point here for a little bit, because a random memory has just sparked, and it’s sort of relevant. When I was a new grad starting out in the big wide world of SAP HR consulting all those years ago, my boss at the time hauled me out of the clients where I was shadowing and learning, and into the office. For one week I helped the office admin team file expense reports, collate time sheets and put together invoices After that, although I may never have been the best at getting my expenses in on time, when they did get in, they were very clearly and neatly arranged. Why? because I had learnt that doing so was a simple task for me, but made the life of the admin person so much easier. Because someone had taken the time to show me why I should do something in a certain manner, I was very happy to do it.

Hierarchy and innovation, not great mates

In their employee handbook Valve go on to say:

“But when you’re an entertainment company that’s spent the last decade going out of its way to recruit the most intelligent, innovative, talented people on Earth, telling them to sit at a desk and do what they’re told obliterates 99 percent of their value. We want innovators, and that means maintaining an environment where they’ll flourish.”

I’ll put my hand up right now and admit that Discovery is not an entertainment company, despite it sometimes being very entertaining to work here, yet I’ll completely agree with the sentiment of it being an absolute innovation killer to tell people exactly what they must and must not do. To me to provide the sort of environment that people are going to thrive in means everyone having a say and everyone moving forward.

Such a dynamic (yes my description and substitute whatever smanky term you want to use instead) way of doing things cannot, I believe, have a non-dynamic organisational backbone.

So let me try to put that on paper for you

I tried to draw a simple map of the relationships between a few of the employees in our company (disclaimer, I didn’t stop to think too long about who is linked to who very hard here, so if you’re on this chart and I didn’t link you correctly, sorry, it isn’t a real org chart because there wasn’t a whiteboard involved.)

org+structure

when I tried to add just one more employee (Karsten) it just got far too messy:

org+structure2

My point is, that as a small company, we just don’t fit into the traditional hierarchical organisational structure. And to follow on from the point made by Valve, I don’t think it is in the best interests of our organisation or staff that we do.

Scientific interlude to counter excess HR fluffiness

Another digression (sorry) even evolution (Darwin’s tree of life) isn’t consider a tree these days, it has been recognised that due to the transfer of genetic information from and through viruses and bacteria there is an awful lot of our genome that doesn’t come from our direct ancestors, but from other species. It’s called horizontal gene transfer (HGT) and has been found to play a major role in forming species. To use this analogously, I should suggest that who you are working with, who influences you and who you influence are more important to who you are than the person that you supposedly report to.

Back to HR (or HCM, or whatever…)

Now I don’t think that either Discovery or Valve (or Dawin’s web(?) of life)  are unique in this. I think the days of the hierarchy are numbered, and what is more, we are inventing and deploying the tools right now that will be its undoing.

Tooling up for the revolution

Enterprise social networking, whether using tools like Jam, Streamwork, Yammer, Google+ (we use this a LOT internally, it’s free, simple and powerful!) or even going more external with tools like Twitter, LinkedIn, and, so help you, Facebook is clearly in vogue. It should be a simple matter to leverage these tools (along with email ) to find out who is talking to who. From this we would have a clearer picture of who is talking to who, how often and in what formats. We could use this data to help us consult the right people. We already do this in many ways, but imagine having a system that could help us. In the same sort of way that GMail prompts you to include certain people in an email based on your past emails but that would also check the content of your message (I know this sound horrendous to some of you, but I’m just imagining stuff here, not planning for an actual solution, bear with me). The possibilities of how we could capture and utilise the connections between our employees to add value to the business are only just starting to be explored.

I’d push the analogy that I’m trying to make so far as to say that communities of interest are the new org units of enterprise. Although you might not send a leave request to be approved by your local ketchup appreciation group (I used to read the USENET alt.ketchup group at uni for a laugh, how the world has changed! I can’t even find a link to it now.) You are more likely to check that your vacation isn’t going to leave the project teams you are working with in the lurch, rather than checking with the team with whom you are theoretically assigned but haven’t worked with for the last 6 months.

When it comes to handling career goal planning, I think that we need to be encouraging everyone to be part of the process.  (I happen to agree with Prof. Culbert about the usefulness of performance reviews, but strongly believe that goal setting is a great way to understand how to get to the next level, in a positive way.) 360 type reviews (where we reference and review with the people we are working with, rather than an arbitary “manager”) of the goals that we are setting allow ourselves allows us to help ourselves and our teams understand where are heading,  without the soul-sucking negativity associated with most performance reviews. For such a distributed process, there is no benefit to a rigid structure where person A conducts the review for person B, C and D. Again I see great potential in the use of social communication tools to share and organise and optimise these processes.

Full circle

So back to my original musing, what does my organisation look like? I don’t think I know yet, but I think it’s going to be fluid. If I want to be part of a successful innovative company (and who doesn’t) I think it need to be able to change shape depending on how and why I’m looking. And my view of the organisation should be able to change that shape without me needing spend days of constant restructuring.

And to finally relate that to something SAP

Returning to my thoughts about the SuccessFactors Professional Edition product and its use of strict hierarchical structures. I don’t think that these do fit with how many SMB companies are choosing to operate today. Yet, I can see how a SaaS solution that is planning to integrate “social” into everything they do (one of the strong messages from SuccessConnect) will possibly get me there a lot quicker than an onPremise solution will. I hope that by posting this up people will read this and start to think about how we can start to leverage the tooling that SAP is providing to be more creative, dynamic and successful. SuccessFactors people, you have a real opportunity to create something in this space, please let’s build something awesome.

As per always, these are my own personal views, and do not necessarily represent those of the company I work for. I purposely take a line which is at times controversial and contrary to many people’s beliefs. I don’t think I’m correct, it’s just that no-one has convinced me otherwise yet. This blog was originally published at http://scn.sap.com/community/erp/hcm/blog/2012/07/09/my-organisation-looks-like but I thought it really ought to be here too. Partly inspired by Vijay’s blog about talent being unmanageable, and my thoughts on what does that mean about talent being managers. What I’d want to point out is that I see a future coming where out HRIS system may mean the end of people managers as we know then – thus solving the conundrum of how do we manage talent and/or should talent be managers.

 

 

References: in a list to make life easier for you


Valve Handbook for New Employees

http://www.successfactors.com/small-business/professional-edition/overview/

http://www.scribd.com/doc/90526695/Valve-Handbook-for-New-Employees

http://www.quora.com/Social-Media/What-is-a-Smanker (my own adaption)

http://www.newscientist.com/article/mg20126921.600-why-darwin-was-wrong-about-the-tree-of-life.html?full=true

http://www.newscientist.com/article/mg20126923.000-editorial-uprooting-darwins-tree.html

http://mashable.com/2012/06/24/social-media-workplace-study/,

http://apcmag.com/why-social-media-in-the-workplace-is-not-the-enemy-business-benefits-of-staff-usage-.htm

http://byresearch.wordpress.com/

http://gmailblog.blogspot.com.au/2011/04/dont-forget-bob-and-got-wrong-bob.html

http://english.stackexchange.com/questions/1269/is-it-bear-or-bare-with-me

http://en.wikipedia.org/wiki/Community_of_interest

http://www.nytimes.com/2011/03/02/opinion/02culbert.html?_r=1

 

I hate doco

It’s kinda a mantra that I live a reasonable part of my life to. I think the above image is a not unjustifiable representation of my feelings about documentation:

But there are many good reasons that I should be doing doco. Most of them are supposed to save the customer money in the long run. And occasionally by doing the doco, I even find some small errors in my code that I hadn’t seen before.

 InnoJam Sydney 2011

Before InnoJam had any of that fun fluffy design thinking aspect to it, we ran one in Sydney. It was good fun, and people could build whatever the heck they wanted.

In staying true to my aversion for writing doco, I came up with an idea about auto-generation UML diagrams from SAP code.

Here’s a video of the solution we came up with:

here’s a link to the Prezi that I presented in that video:

http://prezi.com/zri5q-ib4vzp/?utm_campaign=share&utm_medium=copy&rc=ex0share

I wrote a blog post about it:

https://scn.sap.com/blogs/chris.paine2/2011/08/10/programmers-are-lazy–innojam-them

But it was long time ago and the move to a new version of SCN has kinda buggered it up.

Anyway, in short – Rui never managed to get the terms and conditions of CodeExchange changed to a level where I’m happy to support it and put code in there. I’m pretty sure he tried though. So I didn’t do anything with the code.

 

Fast forward 3 years

I have a whiteboard in the office covered in post-it notes. They all represent at least one development that I’ve done for the current project I’m working on. At the beginning of the project, I was very good, and did all my doco as I went along. Then the poo hit the fan, and everyone wanted everything done yesterday, and didn’t care about doco.

So I now have a whiteboard full of post-it notes that represent potentially weeks of doco hell for me. So in my “free time” in the evening I decided to see if I could recreate the solution that we’d built in Sydney, and perhaps make it a little nicer.

 

UML output

The first thing I decided, was that I was NOT going to try to build the graphical output myself. Having had lots of fun in Sydney trying to make Gravity do something it really wasn’t designed for I thought I’d research how else I could get my interaction diagrams created.

If in doubt Wikipedia

http://en.wikipedia.org/wiki/List_of_UML_tools

There were loads there, and I’d pretty much decided on UMLet when I discovered something about interaction diagrams. Basically, interaction diagrams are supposed to show interaction between objects. Bit bloody obvious really. However, the thing is, if I’m documenting my code, I’d really like to show the interaction within my objects too. I.e. if I make a call to a private method of my class, I’d really like that to show up in my diagram. Given that interaction diagrams are only supposed to show external interaction it’s not surprising that most of the tools for creating the diagrams don’t really support this idea of internal object calls.

So a bit of browsing later and I found PlantUML. It has some awesome functionality for creating sequence diagrams, actually, most UML diagrams it seems, but it was the sequence diagrams that I was interested in.

Here’s a simple example:simple_example

 

 

See how it’s quite possible to show “internal” calls of an instance and also show the life time of those calls. This feature I didn’t find on the other free UML tools that I looked at. There are a bunch of other formatting features that can be used too. If you’re interested check out their website: http://plantuml.sourceforge.net/sequence.html

 

Intercepting the SAP standard UML generation

So in transaction SAT there is the possibility to generate your own JNet UML sequence diagram (this exists as standard.)

press the button

 

However, it does not allow you to do things like filter out standard SAP routines (as far as I know! If anyone can tell me how to do this (without needing to list every method I call, please let me know!) When I was looking at one of my examples, where I ran a program to generate a performance review document for an employee, there were over 100,000 different routines called. Only about 400 of those calls involved my code, so you can imagine generating a UML diagram for the whole 100,000 calls would be a bit of overkill (not to mention an impossible to read diagram).

In customer systems there is a function module  ATRA_UML_DECIDER  that has been purposely handicapped. One does have to wonder why this has been done, but nevertheless it has.  It allows the user to chose from a list of potential UML extraction routines. All of these routines implement the IF_ATRA_UML_TOOL interface. There are classes for extracting to JNet, Borland Together and Altova. Now, I’m sure that Borland and Altova have good products, it’s just that I don’t really want to spend money on then when there are perfectly good (for my tasks) free and open source products out there.

There is a factory class/method CL_ATRA_UML_FACTORY  that creates an instance of a class implementing the interface. I overrode this method to use my particular extractor if it was me running the code. In the future, I might enhance this to check for a user role, or perhaps a user parameter, that’s trivial, the main point will be to allow others to access this logic too.

The guts of the code

Simply my implementation of the interface reads the table of data that is passed to the interface, removes all calls that aren’t to or from custom code and then builds a PlantUML representation of that code.

Here’s a very simple output that generates the diagram above.

@startuml
hide footbox
autonumber
participant "Instance 1 of Class\nZCL_HR_EMPLOYEE" as 1
1 -> 1: Call method GET_HELD_QUALIFICATIONS
activate 1
1 -> 1: Call method ZCL_HR_OBJECT->GET_RELATIONSHIPS
activate 1
create "Static Methods of Class\nCL_HRBAS_READ_INFOTYPE" as 2
1 -> 2: Call method GET_INSTANCE
activate 2
2 --> 1
deactivate 2
create "Instance 1 of Class\nCL_HRBAS_READ_INFOTYPE" as 3
1 -> 3: Call method IF_HRBAS_READ_INFOTYPE~READ_PLAIN_1001
activate 3
3 --> 1
deactivate 3
1 --> 1
deactivate 1
create "Instance 1 of Class\nZCL_HR_QUALIFICATION" as 4
1 -> 4: Create instance of class ZCL_HR_QUALIFICATION
activate 4
4 -> 4: Call method ZCL_HR_OBJECT->CONSTRUCTOR
activate 4
create "Function Group\nRHS0" as 5
4 -> 5: Call FM RH_GET_ACTIVE_WF_PLVAR
activate 5
5 --> 4
deactivate 5
4 --> 4
deactivate 4
4 --> 1
deactivate 4
deactivate 1
@enduml

 

 A slightly less trivial example

The following code does some pretty simple stuff, it finds who is my manager, and finds out what required qualifications my position/job has.

DATA: lo_emp TYPE REF TO zcl_hr_employee,
lt_managers TYPE ztthr_employee_objects,
lt_required_quals TYPE ztthr_qualifications.

TRY.
lo_emp = zcl_hr_employee=>get_employee_by_user_id( sy-uname ).

lt_managers = lo_emp->get_position( )->get_managers_recursive( ).
lt_required_quals = lo_emp->get_position( )->get_required_qualifications( ).

CATCH zcx_hr_no_managing_pos_found  ” No managing position found
zcx_hr_no_holders_found  ” no holders for position found.
zcx_hr_no_position_found    ” no position found
zcx_hr_user_id_not_found.  ” cannot find user id for employee
ENDTRY.

So I thought I’d trace it:

it works out at around 200,000 different routines being called. 62 of those are my code, the rest standard.

run through 1

First of all, I need to schedule a trace for myself…

run through 2

 

run through 3

 

Need to know which session I will be recording. If I left it as “Any” it will start recording this session, not very useful!

run through 4

 

Session 2 it is!

run through 5

run through 6

actually run it now!

and the schedule status changes to executed.

run through 7

 

I now need to delete the scheduled measurement. Despite the intimidating words, this does not delete my measurement, just the scheduling of it.

run through 8

 

now swapping to the “Evaluate” tab in SAT I can see my measurement, and I can click to output to UML

run through 9

 

 

Clicking on the button triggers a bit of a pause whilst the system code chugs away and does loads of stuff it doesn’t need to do…

 

Then

run through 10

Save the data and PlantUML starts converting it immediately:

run through 11

 

and the result:

example

Would probably have been a little bigger if my employee had a job assigned to their position, but you can see how incredibly easy this now makes documenting the functionality I’ve built.

I’m still considering how to make the code publicly available. I’m sure someone else would be happy to post it to CodeExchange, so perhaps I’ll let them.

Keeping it real

Anti-Social social media

As many of you who might read this know, I like social media. I spend a reasonable amount of my spare time following and trying to keep up with the information that is available about SAP, cloud and HCM topics. Many of these social media discussions (a majority I’d suggest) take place over twitter. Now recently I’ve found a few tweets that have really got me irritated. But before I explain what got my back up, it’s probably worth pointing out that there is a simple option for me, and it’s put the phone/tablet down and walk away. This really isn’t that serious! Secondly, don’t ask me to name names, I won’t and I don’t think it’s helpful anyway, and I’ll get to why not later.

What’s wrong?

I’ve seen two types of behaviour that I’ve disliked. Firstly has been where people have been using social media as a tool to strike up a conversation. But rather than continuing with the conversation, just make a couple of snide remarks and tried to spark up a fire. In some cases these have been extreme storm in the teapot scenarios, where some information misunderstood, or not at all researched or understood has been used to derive wild scenarios that are great link-bait but do not actually help drive the conversation forward. Conversations are two-sided, if you refuse to engage in a manner that engenders discussion then you don’t have a conversation, you have a battle. In battles the only people that win are the arms manufacturers.

The second type of behaviour is where people represent themselves as “individuals” but start broadcasting what can only be described as advertisements for the products that the company that they work for sells. Now this is a fine line as you’d expect people to be interested in and excited about the products that they company that they work for sells. But when it is done across a whole group of employees and sometimes with a common message/format  then it really starts to smell bad. Even worse when people start tweeting info and then add link to some sales website or their company twitter handle when the content of the tweet isn’t about that! It’s like they are branding their tweets! But when they then refuse to engage on the marketing type tweets to clarify details (possibly because some of the marketing bs is actual bs?) it gets really irritating.

The problem.

Well my real issue is that the response I want to give the tweets of the second type would just make me an asinine tweeter of the first type. Keeping it real and respecting myself involves not walking either of these two paths. And that’s tricky. Not to mention frustrating! This is why I don’t what to name, it’s just behaving like a spoilt brat and isn’t doing anyone any favours. Don’t be evil!

My solution – not “the” solution

I believe that I shouldn’t take myself too seriously, it’s one of the reasons I still keep the ridiculous twitter image that I have whilst pretty much all those that I engage with have sensible portraits. To remind myself not to think overly of my skills, abilities or influence, as I’m just a silly looking guy who’s biggest achievement was becoming a father. Remembering what is important and valuable to me then drives my behaviour. Yes I’ll post this up to vent a little, but the anti-social social media that winds me up, hopefully you won’t see that coming from this direction. 🙂

Seriously, don’t take yourself too seriously. Photo was taken at my son’s 1st birthday party.

ABAP Code Naming Conventions

Ok, you can probably guess that I’m not the most conventional person. I probably don’t fit the mould of the stereotypical developer either. I’m certainly not what one would call an introvert.

So please take this with the necessary pitch of salt. (especially if you’re one of the people who writes the code naming conventions that I have to follow from time to time 😉 )A pinch of salt required

<rant>

Why on earth does every SAP project I go to insist on such inane naming standards for the code? The SAP editor is a wonderful IDE (caveat I did not say it was the best IDE) that allows you to see the definition of any variable with a simple double click – so why on earth are you so worried that I should prefix all my local variable definitions with an ‘l’? What on earth potential benefit can this have on the code readability? Perhaps it helps if you’re still one of my nemesis developers who are passing all your variables between methods through the use of global variables and/or singletons. Perhaps one needs to look at a piece of code, see lots of l’s and that gives satisfaction? The use of Hungarian Notation in ABAP code seems to be universal, although never it seems implemented in the same way.

Then when I define a structure, I must prefix it with a “S” just so you can be sure that it isn’t actually a table or a single field, or so help me, a woolly mammoth. When I look in the IDE view of the package I am developing, all of these different things are arranged in a tree so you can easily tell one from the other. Again a single double-click can bring me to the definition if it is ever referred to in a piece of code. Perhaps it might save some time looking at a variable definition to see if it is a table, a structure, object reference or a variable – but if I’m in the code, it should be pretty damn obvious! If I’m appending or inserting into it, it’s a table. If I’m referencing a sub-field of it, it’s a structure. If I’m assigning a value to it it’s a variable, if I’m creating an instance of it, it better be an object reference. There again may be cases of my nemeses developers still using tables with header lines and confusing the heck out of me. But I’m hoping that the code inspector might weed at least that out.

Searching outside of the SAP world the use of Hungarian Notation within code is not universally disliked, but with such a clear list of disadvantages and such luminaries as Uncle “Bob” Martin and Linus Torvalds against it, you’d have to proclaim yourself a pretty die-hard supporter of “doing it the old way” not to just think a little – “is this really useful? Or is it even potentially bad?”.

Then there comes the requirement that every object should reference the area of use it is intended for. Thus the forth and fifth characters of the object name must be “HR” or “PA” or “XX” or whatever. The use of Positional Notation for implicit metadata about a component is, however not something I’ve seen outside of SAP projects except for the COBOL example given in the linked Wikipedia page. At this point when reading the naming convention guide, I casually check if there is any mention of packages and package hierarchies and hope upon hope, package interfaces. When there isn’t, I sigh again and just bite my tongue again. Because SAP has provided a wonderful way of helping us see what use a component is put to – as every component must belong to a package, and that package can (and should) have an application component defined. And to give even more clarity, the package can have a super-package, thus grouping all like component together, whatever types they are and where ever in their object names they have a ridiculous two character code. The package interface can even tell you if the object is safe for use outside of the package. What a great concept!

So instead of spending time thinking about whether the components we are building are truly reusable, and what the scope of that reuse is. We spend hours checking if we have the first n characters of our our objects correct according to the development standard book.

</rant>

One day someone will be silly enough to let me do it my way, I’ll confuse the bejeebers out of all the guys who’ve only been coding ABAP badly for the last 10 year and the project will potentially fail because I’ll spend my entire time looking for enough of a development team that can understand that following a rigid way of doing things isn’t always the best way to do it…. <sigh>

Elasticity

 or   or 

(Hooke’s Law for expressing elasticity of an object in various degrees of complexity)

The equations above get pretty complex pretty quickly! And that’s when we deal with equations that have been known about for hundreds of years. When we start using elasticity to describe cloud computing, it gets even worse.

The topic was brought up the other day when I was looking at purchasing some space on the SAP HANA Cloud to run an application that we’re developing in-house. I was checking the price for this.

http://scn.sap.com/thread/3350483

I got quite confused.

Then the conversation moved to twitter and we started discussing not just the price of going to the cloud but also how it should be priced. And then even onto how it could be made multi-tenant (which is a bit beyond the scope of this post, but it was interesting nevertheless.

I think the conversation is worth preserving so I’ve made a copy of it with a little help from Aaron’s Twitter Viewer and a lot of cutting and pasting so I could do without the CSS (if anyone knows how to add custom CSS to a single WordPress post, I’d be interested.)

Have a read, it’s not a bad collection of thoughts, and interjections (by the one and only Dennis H) and I’ll recap on my thoughts at the end:

wombling
Chris Paine
Feeling slightly confused by SAPStore pricing for #saphanacloud if you understand it pls help me scn.sap.com/thread/3350483

2 days ago
1 retweets
#

rhirsch
Dick Hirsch
@wombling compare price to other #saphanacloud packages in #sapstore – all have similar structure

2 days ago
#

wombling
Chris Paine
@rhirsch I understand the free ones but still confused what calculation is for rest, why show pm price when only pa purchase possible?

2 days ago
#

rhirsch
Dick Hirsch
@wombling a good question for #sapstore and #saphanacloud team – another reason to always read the small print

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@rhirsch @wombling it will get rationalized soon . @aiazkazi has plans for it

2 days ago
#

rhirsch
Dick Hirsch
“@vijayasankarv: @rhirsch @wombling it will get rationalized soon . @aiazkazi has plans for it” >> hope you guys are working on cloning him

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@rhirsch @wombling hehehe @aiazkazi is one of a kind – but he has a team behind him too to help with scale 🙂

2 days ago
#

vlvl
Yariv Zur
@vijayasankarv @rhirsch @wombling @aiazkazi Pricing is presented as PM because this is how it was defined in official price list (cont)

2 days ago
#

vlvl
Yariv Zur
@vijayasankarv @rhirsch @wombling @aiazkazi (cont) however min. Contract length for all cloud subscriptions is 1 yr. hence the mess.

2 days ago
#

wombling
Chris Paine
@vlvl @vijayasankarv @rhirsch @aiazkazi certainly not the clearest situation. But then again probably simple than onPrem pricing

2 days ago
#

esjewett
Ethan Jewett
@wombling @vlvl @vijayasankarv @rhirsch @aiazkazi Minimum 1-year subscriptions are not very cloudy. Are add-on resources more flexible?

2 days ago
#

wombling
Chris Paine
@esjewett @vlvl @vijayasankarv @rhirsch @aiazkazi had one potential customer only needed 3-4 months every yr. They didn’t sign up 🙁

2 days ago
#

wombling
Chris Paine
@esjewett @vlvl @vijayasankarv @rhirsch @aiazkazi cloud ideal for flexibility, but not so much in this case

2 days ago
#

esjewett
Ethan Jewett
@wombling @vlvl @vijayasankarv @rhirsch @aiazkazi Really, I’d argue that it’s not even cloud if it requires a 1-year commitment. Hosting.

2 days ago
1 retweets
#

wombling
Chris Paine
@esjewett @vlvl @vijayasankarv @rhirsch @aiazkazi different times for use-cases SuccessFactors 3yr contract. But wld like more flexible PaaS

2 days ago
#

esjewett
Ethan Jewett
@wombling @vlvl @vijayasankarv @rhirsch @aiazkazi Indeed, but for IaaS and PaaS I’d argue “cloud” involves elasticity. The NIST agrees 🙂

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling @vlvl @rhirsch @aiazkazi other than on iaaS (rhymes with aiaz) , I doubt perfect elasticity will happen for any vendor

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi Every PaaS I’m aware of provides it. Elastic Beanstalk, Heroku, CloudBees come to mind.

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling @vlvl @rhirsch @aiazkazi maybe PaaS will get there too at some point , but seriously doubt SaaS will

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi Agree though that it’s not as key for applications. But we’re talking about PaaS, I think?

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling @vlvl @rhirsch @aiazkazi PaaS ideally should have no lock in – just a question of how much scale justifies it

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett @vlvl @rhirsch @aiazkazi GApps, Azure, CloudBees PaaS are monthly, why not #saphanacloud?

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling @esjewett @vlvl @rhirsch @aiazkazi elasticity is definitely something on top of the agenda . Question – is monthly good enough?

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett @vlvl @rhirsch @aiazkazi Simple fixed CPU/data monthly makes sense, more elastic, then GApps style usage payment

2 days ago
#

dahowlett
Dennis Howlett
@wombling Isn’t the fundamental qu something like: ‘Why does #SAP find it necessary to invent new ways to confuse?

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi Daily or hourly would be better, but one step at a time.

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi Each decrease in granularity enables different scenarios. E.g. daily helps w/ month-end.

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling @vlvl @rhirsch @aiazkazi what is your absolute best case granularity ? And is monthly a good enough alternative ?

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett best case is on demand pay as you use eg cloud.google.com/pricing/ low base price (monthly) then as needed – elastic

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi Hourly is kind of industry standard, though monthly is fairly common for PaaS.

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi With PaaS, the case could be made for value in even more granular metering than hr.

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling @vlvl @rhirsch @aiazkazi But I’d say if you can get it to hourly that’d be great.

2 days ago
#

vlvl
Yariv Zur
@esjewett @vijayasankarv @wombling @rhirsch @aiazkazi one more point – full elasticity is good for techies but hard on the CFO. (Cont)

2 days ago
#

vlvl
Yariv Zur
@esjewett @vijayasankarv @wombling @rhirsch @aiazkazi they need the ability to forecast expenses. So for DEV we have full elasticity (free!)

2 days ago
#

vlvl
Yariv Zur
@esjewett @vijayasankarv @wombling @rhirsch @aiazkazi for PROD you pay in advance for 1 yr, becoming acceptable for CFO #hanacloudportal

2 days ago
#

esjewett
Ethan Jewett
@vlvl @vijayasankarv @wombling @rhirsch @aiazkazi Good point, and I think makes sense for apps but not for the PaaS itself.

2 days ago
#

vlvl
Yariv Zur
@esjewett @vijayasankarv @wombling @rhirsch @aiazkazi PaaS is for running apps. “How much is the new supplier portal gonna cost me?”

2 days ago
#

esjewett
Ethan Jewett
@vlvl @vijayasankarv @wombling @rhirsch @aiazkazi But usually PaaS is for dev to run apps. SAP’s take seems to be that cust manages PaaS.

2 days ago
#

vlvl
Yariv Zur
@esjewett @vijayasankarv @wombling @rhirsch @aiazkazi IT manages PaaS, but the app is for the cust. Not for the DEV guy 🙂

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @vlvl @wombling @rhirsch @aiazkazi there are 2 broad uses – 1. custom development by a customer for their use and ..

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @vlvl @wombling @rhirsch @aiazkazi ..and 2. An ISV or developer building something for selling to others. different needs for them

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett @vlvl @rhirsch @aiazkazi and don’t forget customers with seasonal/fluctuating demand. (Repeating myself, sorry)

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling @esjewett @vlvl @rhirsch @aiazkazi yes agreed – needs to be solved absolutely, either at IaaS level and/or at PaaS level

2 days ago
#

rhirsch
Dick Hirsch
@vijayasankarv @wombling @esjewett @vlvl @aiazkazi 2 sides to consider — shop & platform – both need to support diff models

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @vlvl @wombling @rhirsch @aiazkazi Exactly. Much clearer than me :-). I hope SAP covers both. Right now, focus seems on #1.

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @vlvl @wombling @rhirsch @aiazkazi which brings up multi tenancy topic . Do u expect it as platform feature or leave it to apps?

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @vlvl @wombling @rhirsch @aiazkazi Yeah, very good point. Too complicated for twitter, and I need to sleep 🙂

2 days ago
#

wombling
Chris Paine
@vijayasankarv whilst @esjewett is sleeping 😉 how do you think from a PaaS viewpoint multi-tenancy could be delivered as a feature? (cont)

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett (cont) by building into the security/roles/authorisations of standard IDM solution? Extend to social login?

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling that could be a solution. but fundamentally a principle need to be agreed whether platform needs to even support multitenancy

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling it could also be that apps might want control of how to implement multitenancy without platform dictating it

2 days ago
#

wombling
Chris Paine
@vijayasankarv The worry is leaving it to app developers means potential embarrassment < but at least app developers fault not SAP!

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling it is like C++ and Java 🙂 I didnt like java for a long time thinking it took away my ability to fully control what I am building

2 days ago
#

wombling
Chris Paine
@vijayasankarv Be glad you never had to code Web Dynpro Java then 😉 Or if you did, then I can see yr point very well

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling I was already out of full time dev role by the time WD was widely used – but yes, did a little bit when it came out

2 days ago
#

esjewett
Ethan Jewett
@wombling @vijayasankarv If SAP is going to certify apps as multi-tenant, it’s going to require a manual audit. No pure tech solution.

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling rather left field question – do u think a model where apps are not certified by platform provider is feasible ?

2 days ago
#

wombling
Chris Paine
@vijayasankarv @esjewett feasible yes, q: is the value to partner to have SAP logo stamped onto app worth the investment? probably yes

2 days ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling Sure, but then customer has to trust app dev. You can provide tools, but no way to guarantee data isn’t mixed.

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@esjewett @wombling not a lot a platform provider can really certify beyond some minimum things like ” won’t crash, meets usability reqs” 🙂

1 day ago
#

esjewett
Ethan Jewett
@vijayasankarv @wombling Yup. Multi-tenancy is not offered by any PaaSes as far as I know.

1 day ago
#

wombling
Chris Paine
@vijayasankarv partners will build multi-tenancy solutions (I’m trying now) but social login means can’t leverage IDM solution anyway

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling yes – but do you think a hybrid of social login and traditional MDM can solve it elegantly?

2 days ago
#

wombling
Chris Paine
@vijayasankarv personally I find that too many frameworks complicate solutions rather than making them easier. Eg what happened to SOAP

2 days ago
#

vijayasankarv
Vijay Vijayasankar
@wombling 100% agree – and that is at least partly because very few developers think highly of other developers IMO. Too quick to dismiss 🙂

2 days ago
#

wombling
Chris Paine
@vijayasankarv still, would not be surprised if logic to allow multi-tenancy was delivered as is natural extension of current user mgt

2 days ago
#

esjewett
Ethan Jewett
@vlvl @vijayasankarv @wombling @rhirsch @aiazkazi That’s what I mean by different. Bot sure if it’ll work, or the implications. Interesting.

2 days ago
#

esjewett
Ethan Jewett
@vlvl @vijayasankarv @wombling @rhirsch @aiazkazi Though, SAP seems to take a diff approach to PaaS than other PaaSes. Need to think on it.

2 days ago
#

rhirsch
Dick Hirsch
@wombling related question would be if whether all the plumbing is there to deal with subscriptions #saphanacloud

2 days ago
#

 My thoughts

A couple of days later and my question has be answered on SCN, but I’ve also had a few moments to think about this.

Drinking your own Champagne

Firstly, to my own need for a productive license to some very minimal use of the SAP HANA Cloud.

With the reasonably low price point that SAP is putting on Cloud Partner status, it certainly seems that they are trying to attract small companies to develop content for them. If you add to this, the “we drink our own champagne” marketing message that has been broadcast very well by the ex-CIO there is a obvious marketing proposition.

If companies that signed on as partners for SAP then submitted an application to the SAP Store for resale, they could be allowed to use it productively themselves, they would have an excellent sales pitch “we drink our own champagne”. A limit on the sizing of the used solution might be in order (but probably wouldn’t be an issue with small companies), but it would be very cool for small companies to do this. It would certainly encourage companies like the one I work for to go the extra step of putting the application into the SAP Store. A win for both the developers and SAP.

Annual fixed storage/cpu isn’t elastic, isn’t cloudy for a PaaS

Probably the clearest idea in the thread above is that PaaS shouldn’t be billed annually. Where we are talking SaaS (like Yariv Zur’s SAP HANA Cloud Portal (which is kinda SaaS and PaaS, but I’d argue definitely both)) then there is a different view, but for a PaaS, the beauty of the solution is in its ability to scale up as demand dictates.

I was talking to BCO6181 – Tony de Thomasis’ uni course this evening about the use case where you have a wonderfully capable server that has 10 CPUs running at 1-2% utilisation all year. And you have a policy that no-one gets a pay rise unless they complete their annual performance review. Guess what, on the afternoon before the cut-off, the system is running at 100% capacity and people are complaining about how slow and poor performing it is. In the cloud you shouldn’t have to deal with that. But if you have to buy your cloud compute units annually, you are going to be in exactly the same space.

On the plus side, it looks as if this might be addressed soon. I really hope so, as I see a big potential for SAP HANA Cloud to be the next big thing in enhancing SAP’s cloud SaaS solutions, but if it’s just a glorified hosting arrangement, then it starts to loose some of that PaaS shine.

Thanks to all those who posted their thoughts publicly for me to capture in this blog. I hope you don’t mind me reposting, let me know if you’d like anything redacted.

 

 

 

 

On building your own brand

Today I was lucky enough to attend a SAP Mentors web meeting where someone from SAP (I’m not sure if they want to be named so I’ll leave them their anonymity) presented about building your own brand.

It was an excellent session, but probably raised more questions for me than gave me answers.

 

I am lucky enough to be in a position where I directly influence how the company I work for is run. As such I would like to think that internally we do not (yet) have the need for employees to need to raise their own profile in order to get noticed and rewarded. If we end up in that space, we should probably start looking at our talent management processes as a matter of urgency. And if that comes to pass, I will be doing just that. (Hopefully by then using something like SuccessFactors will be a possibility for small to medium businesses beyond what the current Professional Edition offers).

However, perhaps self promotion is needed whatever size your company? Even if there are just two of you! I’ll discount the single person companies, if you don’t know what you’re doing yourself you’re in trouble! Whatever size you are unless you effectively communicate what you are doing to the others in your company, you are doing yourself (and the company) a disservice. But is effective communication about what you’re doing the same as self promotion? I’d guess, Yes and No.

I think there is a fair bit more to self branding – which is why I started writing this blog outside of the SCN space. But I think it’s important not to confuse that with ensuring your company has effective talent management processes and encourages communication.

Anyway, better do some work.

 

 

blue sky

Blue sky thinking

The other day I was chatting with someone in 140 character snippets about some of my thoughts on the things that may come to pass. I’d also alluded to my thoughts in much the same space at the “cloud” panel at the SAP Inside Track day at Melbourne (kindly hosted by the nice folks running the Mastering SAP Technologies conference.)

So I thought that rather than just let those words vanish into the air, I’d instead write them down so that sometime in the future someone would have the possibility to point out how wrong I was with absolute certainty.

SaaS solutions and enhancement

I am a strong believer that companies have, and will continue to have a need to build system based processes that are different from company to company. The idea that they will all adopt the same solution because it is “best practice” and the cheapest to use and manage is, to me, very unlikely. Companies will continue to change, vary and improve those processes that they believe bring special value to their business. In many businesses (but certainly not all) I believe that the area that they will need to innovate on is “people”. As repeated by Mark Souter at the recent Mastering SAP HR & Payroll conference and potentially originally by Eddie Barrett from Deloitte (I can’t find any earlier references than 2008!) “The war for talent is over, talent won.” Companies that don’t innovate above and beyond the offerings that SaaS providers give them will lose a competitive edge.

Right now, I’d say that adopting a “vanilla” SaaS HR product (especially one that is currently rated as “market leader” – if you haven’t seen the tweets or don’t get the references then the SuccessFactors team not been doing its job properly 😉 ) would probably give most companies an edge over their competitors, but this will not endure long term.

The thing that has made SAP so well loved by enterprise, has been its ability to allow for enhancement to the vanilla “best of breed” model. Now we all know of cases where the addition to the vanilla was more cod-liver oil than raspberry jam flavoured and the resulting mess has been a support nightmare, but this is not always the case.

Cloud SaaS solutions will naturally evolve (as they aim to replace the on premise models that we have been so used to using and enhancing) such that we will be able to write our own business logic into them. In many cases this will be more configuration than code. And I’m sure that we will see much more care taken with the underlying core of the solution so that it can’t be broken as badly as many on premise solutions have. (After all, one hopes that we’ve learnt something from all these years of wasted effort.) But unless the cloud solutions offered by SAP allow for enhancement, then someone else will build cloud solutions that can be enhanced (natively) and SAP will be either forced to purchase them or lose the enterprise market.

I see SAP HANA Cloud PaaS as the first real step on this journey of SAP SaaS enhancement. I’m fully onboard this train, and I see it accelerating pretty darn quickly.

Running a hosted legacy enterprise solution and offering it as “cloud” is pandering to the uneducated or at best a stop-gap solution.

Ok so this isn’t so much a prediction as a rant. I think any software vendor that offers both a standalone on-premise install of software and a cloud version that are identical in function do not have true cloud software on their hands. The agility of cloud based software should be in its ability to scale, be elastic and to take advantage of the capability to spike to big resources to do amazing things. That sort of agility can’t be used by software that must work within defined hardware limits. If the software is supposed to function equally well in both scenarios, it clearly hasn’t been built to take advantage of the cloud (and never will be able to!)

Current batch process based time and payroll processing is an anachronism and will be replaced.

If SAP aren’t busy building a HANA based payroll with a skunkworks team somewhere, someone else ought to. (If anyone reading this wants me to help form such a team…) With the power of HANA to close to instantly calculate the impacts of any change in circumstances of an employee and resolve their payments for the next n-years, there should be no need for a “pay-run”. Pay would already have been run! Payroll processing would instead be a consolidation/audit process where data entry was checked and variations explained (part of current processing) but the bit where the system was offline for hours to enable the processing would no longer be required. No-SQL has offered this tantalising possibility several years earlier, but the idea of having an eventually consistent payroll by using a map-reduce type approach would have been enough to make most auditors suffer cardiac arrest (much as both ideas might be appealing, you can see why this hasn’t been adopted.) With HANA offering a fully consistent SQL model and the possibility of near real-time evaluation of results there is a new option. Add into this mix the ability to scale up to a cloud sized resources with the ability to elastically scale as demand requires and the possibilities start adding up. Imaging being able to model people movements in your enterprise and have the exact dollar amounts that this would mean. Rostering optimisation would become much less of an art and much more of science.  The space that SAP ceded to third party time management and rostering solutions (such as workbrain) would be ripe for competition, if the payroll and time management functions that currently are batch based became either on-change calculated or close to real-time available.

SAP’s current payroll system is “world-class” I don’t think anything else can do payroll in so many countries. (At least this is what I’ve been told and I haven’t seen convincing arguments otherwise.) But it is based on an architecture that was designed for systems that had less computing power than the desktop computer that I’m writing this blog on (sorry not using my tablet today 😉  ). If SAP want to retain their world class ranking then they need to innovate and rebuild. I’m pretty sure that there is a little team at the very least throwing ideas around on how to achieve that. I predict that by 2017 we will see a HANA based cloud payroll and time management solution(whether built by SAP or a partner, I’m not sure) that will put the current SAP on premise based solutions to shame.

Cloud ERP – same, same but different.

With the possibility to “enhance” the cloud, will come the wider desire for ERPs to be fully cloud based. It doesn’t make sense for any organisation to have to worry about IT infrastructure when cloud offerings are available. I’m just waiting for an analytics firm to write some software which figures out which organisations are still using their own email servers and then starts discounting their share values due to their inherent technical stagnation. (Am I being too harsh here? I’m not sure.) I predict that a HANA based cloud ERP solution will be available for SAP customers by 2020 which will have more functionality than the on-premise solution. In the run up to this, each LOB solution will have a SAP HANA cloud based solution built or purchased and adapted that offers as much functionality as the current on premise model. The work will be in the integration of all the LOB cloud solutions so that they can work as a cohesive ERP.

It is on the work towards a cohesive solution where I believe that SAP spent worthwhile money on SuccessFactors. The SuccessFactors BizX suite including SAP Jam and Employee Central aren’t in anyway built in a homogeneous manner by the same team using the same data model. Rather they are a collection of heterogeneous best-of-breed solutions sewn together to make an even better whole. It is the experience and ability of the SuccessFactors team to take heterogeneous solutions and make them appear as a homogeneous whole to a user that is valuable. (You could argue that they could do a better job, but like Einstein famously said, kissing and driving fast cars at the same time ain’t that easy. As far as I’m concerned it’s a lot nicer than other stuff I’ve had to work with recently.)

Now, I’ve heard some fairly vocal people argue that having a good object based data model that allows for easy cross-component use is essential for any to-be successful SaaS solution. I disagree. It’s how it works for the end user that counts. And the thing is, no matter how beautifully you design your solution, there is always going to be someone that build a little part of it better. If you can’t purchase/partner with that amazing start-up and bring them into your system, well, someone else will. A couple of amazing start-ups later and the most amazing system (from the end user point of view, which is the only one that counts) isn’t the beautifully designed one, it’s the one that can bring all the best bits together, no matter who built them or how they built them or what data model they used.

Blue Sky thinking – starts with BS.

I may be completely wrong with my thoughts. I’ve never considered myself to be a futurist – sounds far too wanky for me. So I’m certainly not very scientific about how I’ve formulated these ideas. But I do think we are on the point where the enterprise software market is turning. And it’s turning towards the cloud.

Or these thoughts could be just a load of wishful BS.