My SCN friend Kumud pointed out that we know we should be programming X, but real world challenges force us to program Y. Why is that? Shouldn’t we have the time to focus on the “newer” / “older” to us technologies? Wouldn’t it make sense?
All developer’s dream world
Or at least my dream world. Time to do our very best. Including time needed to add unit testing, new techniques, new technology. The excellent projects / development where we can be totally creative.
Our dream world is usually Teched Innojam. One that runs for months instead of 3 days. But is that the real world?
Pay me now or Pay me Later
We have a saying in the United States – I am sure all languages have something similar. “Pay me now or Pay me Later”. What does it mean? In this context it simply means if we continue with older programming techniques or strategies we will eventually have to upgrade. When we upgrade the older code will most likely be supported. SAP itself has a huge amount of code written structurally, SapScript, field exits, via function modules and more…. So of course it will be supported.
BUT once you upgrade, do you want your code to just be supported or do you want to be able to have a way of doing good solid maintenance. If something changes would you rather look in 10 programs or one place. What about Web applications? They almost always use a web UI. Most Web UIs do not support structural programming. You can get around it by wrapping a method around a Function module. BUT…. Is it the right, most efficient way of doing things? Most of know we should be using objects. We should be using Adobe. We should be using ABAP or JAVA Webdynpro. We still need to code function modules for RFCs. We should not be using ABAP Dynpro instead we should replace it with function modules. WOW! That is a lot. We change all the time. This is a core ABAP programmer not a general ABAP programmer. Most of the time you should know all these skills.
And so – do we do it all at once? I’m laughing, no way could I have done that.
I am working on a project. I’ve given myself plenty of time for my program. YES! I can use some of those “new to me” technologies. I have the time. Right? Remember we are now talking reality. The specifications that I estimated my time on have ratically changed – the dreaded scope creep. I now have double the work to complete in the same estimated time. Why? Well the end date of my project has not changed even though the scope has grown. AHHHHHHHH!!!!
I am happily working on an individual program for one person. I have solid specifications. We work off of functional specifications and not technical specifications. (I would be bored if I worked only off of technical specifications, but agree it’s a great way to learn.) I have AGAIN given myself plenty of time.
A different project is in trouble. It needs more developers fast. They have to develop the code FAST. So what do you think I’ll use? Newer technologies or the good old way of programming. For that matter will I even look for objects or function modules. For me the answer is usually yes. I almost always look for ways to reduce my programming effort. I do usually program in objects. But that is familiar ground for me. It is not for someone just learning. Do I use the “newest to us” technology for everything? Am I that good? No I sure don’t. I still use Smartforms when pressed for time. I do still use ABAP dynpros. Especially with our RF units. So reality – I don’t always have the time to use something “new to me”.
This time I very rarely will use objects. (Or any new technology) In fact if it is a SapScript, field exit… Or any of those just supported technologies, I rarely will change it just for maintenance. I am working on maintaining a program. I have a limited time. The change may be big or small. But I leave everything that is working alone.
AHHHHHH!!!! The code is aweful. It is written so wrong. It uses select *, it does not use forms correctly, and it isn’t up to our standards. I have the time to change it. However, it is a critical program. It may even be one that I wrote. I will not change it. It works, and changing out all that code could easily break it. It is one of those darned if you do, darned if you don’t moments.
New techniques, New Technology, new ideas keep them coming! Am I saying it is impossible to learn something new? Is it impossible to use it? NO! I am not. My next blog will cover some of the ways I learn and APPLY what I learned. So stay tuned.