As a disclaimer I get a free “E-Book” copy of such books provided I write a review on Amazon. Very few computer text books get reviews on Amazon. My “ABAP to the Future Books” get very few reviews also – one was from Jelena saying it was great, one was from someone who complained I used Monsters for all the examples, a very strange point of view.
The point is what you really want is half a ton of reviews so a prospective reader can get some sort of unbiased opinion. The ultimate example of this would be “How to Avoid Huge Ships” by Captain John W. Trimmer. I encourage you all to have a look at some of the reviews, to see how it is done.
People have been posting reviews of that book on Amazon for over twenty years, there are hundreds of them. Without all those reviews that mega-classic would not be the success it has been.
As it transpires most SAP Press books are about – wait for it – SAP – very few are about avoiding Huge Ships. In other words the target audience are people who deal with SAP products in their day to day lives, be they developers, business analysts, management or whatever.
I have been having a good couple of weeks ABAP wise. Someone from a roofing company in Canada contacted me to see the best way to install ABAP2XLSX – which means they had heard of it. In the end they installed both abapGit and ABAP2XLSX and so I am anxious to learn how they go.
In addition someone else, this time from India, contacted me and said that all their programs were 20-25 years old and all FORM routines and DYNPRO programs and he had bought a copy of my book “Improving the Quality of ABAP Code” from APRESS (which I thought nobody had, though naturally I think it is a work of genius) and was asking how best to start turning them into OO code? Sadly most organizations are in that exact position, despite ABAP OO being introduced in the year 2000. As it turns out I am speaking on this very subject at the Australian SAP Users Group conference in Sydney next week, and I have spoken about this before e.g. at the inaugural SAP Online Track and so sent a link to that talk.
We cannot say “Australian SAP Users Group” as there is already another country starting with the letter “A” which has a SAP user group.
I did not do a computer science degree- it was economics. When it comes to programming I am more or less self-taught, starting at about the age 14 with BASIC.I would say that me and some of my friends were at the height of our ability back then. I recall being told that text compression beyond 50% was impossible so I wrote something in machine code which I thought would achieve that goal (you could call machine code from BASIC on the BBC Micro) but I could not get it to work so my mate, also 14 at the time, fixed it up for me. What I was doing at the time was reading about all the new features in computer games and trying to see if I could replicate them e.g. the real time interaction in “The Hobbit” and text parsing so the program could understand input such as “GO LEFT THEN GO RIGHT THEN PICK UP THE AXE THEN ATTACK THE MONSTER”
So I got an O level in Computer Science, in the sixth form as I recall, but that was quite surreal as all of us who took that (optional) course knew more about computers than the teacher. That got me up to 9 “O” levels + 3 “A” levels which I thought somehow might be useful in later life, but it was not really. It did get me into university where I discovered everyone else had four “A” levels as there was one on general knowledge which my school did not do.
At university I did economics though there was a small course on PASCAL which was quite interesting.
When I started work in 1989 – whilst still a student – I discovered on the first day that LOTUS-123 had a programming language built in and you could write macros to automate repetitive tasks.
Then in 1999 whilst in Israel it was time to teach myself about ABAP (with some informal help at the start) and by the time I went on an official SAP training course in about 2001 I was already there. Fun fact – in that 2001 training course the instructor glossed over the ABAP Objects part of the course as fast as he possibly could and that was the only segment for which there was not any sort of test.
Later on I found that in some parts of SAP e.g. Ariba, there was a lot of Java code, some of which I needed to fix/maintain.
At this point you are wondering – what was all that about?
The point is all throughout life there was a series of new languages and at no point did I throw up my hands in despair and refuse to even think about trying to program in that new language.
Yet that is exactly what a lot of ABAP programmers do. And because they do most management types have concluded that it is impossible for an ABAP programmer to learn a new language.
This is a lose-lose situation for everyone involved.
You can usually tell when any sort of book (novel or textbook) is any good by the end of the first page. Often by the end of the first paragraph.
- No side effects. This one I can easily grasp. This is where a software routine has only local variables within it and cannot modify any global state. Thus every time you call the routine with the same input you get the same result. You can do that in ABAP as well, but I believe this is more rigidly enforced in functional languages.
- Functions are first class citizens. This means functions can be passed as parameters of other functions. Initially I thought this was rather like passing an instance of a class as a parameter but no, it is nothing like that. I remember the light bulb going on when I worked out what this really means but now I have forgotten again,.
- Immutable “Variables”. This is where you set a value to a variable and thereafter you can never change it. This is a very strange concept to an ABAP programmer. I recall “Uncle” Bob Martin writing a series of blogs about his “Space War” program. There when a player destroys a Klingon Battlecruiser instead of changing some sort of variable to flag that battlecruiser as destroyed what actually happens is a whole new identical new “universe” is created, exactly the same as the last but with the battlecruiser in question destroyed. Because you are not allowed to change any variables, so you have to create all new ones. This made my head spin. D.J. Adams explained this to me once, why this was good, and it made sense at the time, but now I have forgotten again.
- “Promises” – apparently these are the bees’ knees, the best thing since sliced bread. I knew why once, now I have forgotten.
So the challenge now becomes to rediscover these concepts – and more – in such a way I do not forget them again.
Book, Book, Book, Reddit, Reddit, Reddit
If you read one of my books e.g. “ABAP to the Future” or “Improving the Quality of ABAP Code” you will be expected to have quite a bit of programming knowledge. Not so here, right at the start there is an explanation of “What is Programming?” and similar basic concepts. Since I am supposed to be an “expert” I was encouraged to skip such things but no, as I have no formal education, I was bursting to know the answer in case I had been doing it wrong all these years. Luckily, after reading the explanation I think I am OK.
When I started with ABAP circa 1997 I had no idea how “spoilt” we programmers were. We did not have to worry about developing on our local machine and merging it with the central system, we did not have to worry about connecting to the database, we did not have to worry about connecting to the GUI, we did not have to worry about what database was being used, we did not have to worry about what underlying operating system was in use, just write your code from incorrect specifications, get it wrong even based on those specifications and then go from there.
Programmers in other languages had to worry about every other thing in the list as well as the last two, which are universal.
As a result I remained blissfully ignorant of many of the basic concepts that “proper” programmers (i.e. ones who do not program in ABAP) find obvious. Now that greatness has been thrust upon us in the form of UI5 it would be a really good idea to get a handle on some of those concepts.