What was your worst project engineering decision?

fredo

Well-Known Member
Licensed User
Longtime User
Often at the beginning of a larger project you have the choice to structure the project and the data in a certain way.The intentional choice of a table structure or the assignment of functions to certain classes determines the later day-to-day performance as well as the optimal maintainability.

For example, I currently have to revise a project for which the customer wanted only a few input data and a simple layout about a year ago. So at the beginning of the preparations it was decided that the data should be in a kvs and that the interface should have only one layout. So a Q&D version was created and handed over. In the meantime the project has grown due to desired upgrades and is hardly manageable due to the immense time needed for maintenance. My conclusion: "Quick is ok - but it must remain understandable without comments even in small nontrivial projects".

Have you ever made a hasty decision that later required extensive revisions and the transfer of customer data into new structures? (KVS or database? All code in main module or multitier architecture? Custom types vs maps? )
 

Alexander Stolte

Expert
Licensed User
Longtime User
Have you ever made a hasty decision that later required extensive revisions and the transfer of customer data into new structures?
2017-2019 every 6 months...
The problem was not the project, the problem was my lack of experience.
I didn't know a lot of things and learned an insane amount during this period, because I tried out a lot and just worked a lot.
But surely the project was also to blame, because it was too big for a "beginner" and had many dependencies in the backend.

Few Examples from this project:
  • in the beginning I used MS SQL, then MySQL and since I had to work a lot with geo data, then Postgresql
  • i first made the B4A version and developed the B4I version 1 year later in parallel without module sharing
  • Since there was no copy paste between the designers, I had to transfer all the layouts by hand to B4I, which took over 8 hours
  • i didn't have any authentication in it, i added it afterwards and had to change and adapt almost all sql statements
    • but i have also chosen the most complicated authentication available, my own 😅
  • first i used the google maps api to get the city names, then i set up nominatim from openstreetmaps and since that didn't bring reliable names like i needed i used the here api
  • i have developed the project from the beginning together with the backend
    • I no longer do this, I bring the app offline to a certain state and only then do the backend, because then I also already know better what I need

In the end, I am glad to have had this experience and I am glad that B4X has come so far forward in that time.
B4XLib
B4XPages
Designer Copy-Paste between all platforms
wait for
...

But still I gave up the project in the end and since may I'm working on another project, where all the experience is in it and new skills too, because every project has new challenges.
 

fredo

Well-Known Member
Licensed User
Longtime User
... I bring the app offline to a certain state and only then do the backend ...

I think this is a workable approach. I used the FakeData module on the "Amir_RecyclerView" to drive the design of the visible parts.
Later, the live data module was made in a way to switch between real and test data with a single line change.
 

Alexander Stolte

Expert
Licensed User
Longtime User
the live data module was made in a way to switch between real and test data with a single line change.
thats nice.
That brings me to the next example:
  • At the beginning I used the UltimateListView, but this is not cross-platform, so I went to the xCustomListView
  • I have always used the camera library and made my own camera layout
    • But since I have not managed this reliably in the years and the B4I version was difficult, I now always use the internal camera app
 

Unobtainius

Active Member
Licensed User
Longtime User
Mine was choosing use Alpha Anywhere for my first mobile project instead of B4A.
At the time my B4A experience was zero and Alpha offered online offline functionality out of the box.
The learning curve was horrendous, and now that we have completed all the hard work, and had to pay for any support we required along the way (6 months), we get the privilege of paying them US$2,500 each year for an annual license. (a license that includes no support I might add)
Needless to say, a rewrite in B4A is seriously on the top of our todo list.
 

LucaMs

Expert
Licensed User
Longtime User
My first ever mistake was when I was in my mother's womb and I thought: "Let's go and see what's out there." 🤓

Another big mistake was when I didn't understand that instead of continuing to be an employee of a company that moreover paid me little (but, you know, the passion...) I should have chosen to work as a freelancer or at least change company.

Maybe I went off topic; strange, it never happens to me 🤔

The most common mistake is trying to save time when analyzing. Mine was slightly different: I remembered a game with love and developed it, but I was a child; only when it was completed did i realize that it wasn't that exciting so i decided to add a second game in the same app. Not having foreseen this, it is necessary to modify everything (many things), data structures (DB and in main memory), classes, communications, ...
So it's like having made a mistake in the analysis phase, the usual biggest mistake.

For example, I currently have to revise a project for which the customer wanted only a few input data and a simple layout about a year ago.
If your customer changes his requests and wants something else, from then on make him pay double your normal rate.
 
Last edited:
Top