I initially started programming apps with a tool called appinventor, simple, fast but limited in terms of speed and configurability. From there I spent a year tinkering with B4A and then I spent 18 months on Xamarin.
There are some fundamental reasons why I'm back to B4A.
1/ I'm an individual developer who tinkers with ideas, I dont have 30 devs working for me.
In my mind simplicity isn't just nice , it's an absolute requirement. I want a reasonable level of customisation but I don't want to spend a day coding a user interface and paying mega dollars for libraries that lack support and are prone to breaking during the next update. I'm not a brilliant programmer, I just have ideas and I want tools that help them come to fruition.
2/With xamarin you have to choose very early on whether to build your app under xamarin forms or build for Xamarin.IOs or Xamarin.Android. Essentially with Xamarin.Forms you end up coding your user interface once in XAML, but this coding isn't very intuitive. You can't import android xml layout files like you can in B4A. It never looks quite the same on apple vs android and frankly it takes about 10x longer to make a simple interface than it does with b4x.You very quickly you realise the limitations of the UI and inevitably end up going back (which is timely) to coding 2 solutions . You can share quite a bit of code but you still need to know the intricacies of each platform and you end up with a generic app that is heavy(size), slow to initialise and very slow to debug.
OR
The other way is to use Xamarin for IOS and Xamarin for Android to essentially build 2 apps, this means you have to code 2 designer layouts in their native layout languages, you have to know all the tricks of both IOS and Android and whilst you can share some code modules it's never very pretty.
3/Xamarin might be free but most of the good libraries are not.
Libraries are often hundreds of dollars and work on one, sometimes 2 , rarely 3 platforms. The support ( considering you paid for libraries) is often lacking. the comments sections on the libraries are often filled with horror stories. Even common free libraries like google play services/maps/admob etc are prone to breakage for many months before a fix is issued.
It doesn't stop at libraries either. Their Cloud testing is expensive starting at $1000/year. Xamarin University is $80/month.
4/Xamarin android apps are large, hello world is 12mb. A simple app with a database and maps can weigh in at 60 megs. You can go to some work to reduce this by linking and removing assemblies that aren't in use, but it's still going to take time.
5/Xamarin and the Visual Studio IDE doesn't really allow real time code changes, B4x lets you CTRL-S and most of the time a restart isn't required, meanwhile Xamarin devs are waiting minutes to reinstall apps after fixing just 1 line of code. That really starts to add up !
6/ Support. considering the numbers of people using Xamarin and the associated cost the support is poor. There are hundreds of unanswered questions on the forums. There have been several instances (especially in 2015) of poorly tested updates causing major breakages to libraries, IDE's and updates.
So If I was building an app that was going to be updated every few days, that required automated testing processes across 2 or more platforms and I had a team of 30 programmers and predominantly was porting existing business logic from .Net, then sure, I'd use Xamarin. As a platform it has some cool features that are useful in the situations I've described but it has a steep learning curve, little support , is expensive and slow and in terms of converting ideas into apps you'll have a lot more hair on your head with B4x.