A few days ago, the chief architect of the company I work for sent me an email, with the link of an article and the following comment : "I think he's not wrong". He was referring to an article written by a MVP, posted on csharpcorner. To sum up, he explains that the software development is getting more and more difficult with Microsoft (it's a very short summary, I advise you to read this article if you want to go through the one you are currently reading).
To be honest, I never developed with Visual Basic so I don't really know what he is talking about when he refers to the VBX for example, however I used many RAD (Rapid Application Development) solutions from Microsoft, like the drag'n'drop in ASP.NET, or the Entity Framework EDMX that he seems to regret, but I far prefer the current solutions. In my opinion, the RAD solutions always made people lose much more time than saving some, as they were very effective only in a limited perimeter, in a few identified cases, and were complex to adapt to specific needs. The drag'n'drop of components or data sources was really effective only for basic applications, for reading and writing data in grids.
One of the main ideas of this article is that the software development is more and more difficult using the Microsoft tools, which I think is an unfair reproach. The first reason is that I remember some projects in ASP.NET in which the URL rewriting could mobilized a whole team, sometimes for weeks. In these projects, we also had to handle a lot of technical issues without any functional value that required a constant vigilance, as for example the aspx postbacks or the viewstatesâ€™ size. The MVC was a true revolution, as it was perfectly adapted to the Web development, allowing the developers to focus only on their core job, without being bothered by diverse technical complications without any functional added values. ASP.NET Core continued in that direction, redesigning some basic areas of the .NET Framework and releasing a lot of useful technical features or services, as the dependency injection service which is a good example of the Microsoftâ€™s performance.
Certainly, the software are harder to develop today than 20 years ago, but the context has radically changed. Is Microsoft responsible for the fact that most of the web connections are made from smartphones which all have their own characteristics? Is Microsoft responsible for the existence of more and more hardware devices, potentially increasing projectsâ€™ complexity? Besides, if Microsoft was going the wrong way or would be incompetent, a miracle solution would already have been created, but it is not the case. I agree with the articleâ€™s author when he affirms that Microsoft is progressively getting away from the RAD solutions since a few years, but is it really a mistake? Personally, I donâ€™t think so. The RAD tools always presented their constraints and limits, while the current solutions allow you to build exactly what you need. He has some regrets about the EDMX, while the Entity Framework Core model builder is so powerful. I admit that it does not contain functionalities to create a schema and design a data model using only some left and right mouse clicks, but it is modelled on the Microsoft development tools in this day and age: the tool allows you to do exactly what you need, on condition of mastering it. To obtain a schema of your data model, other tools will be needed, but it is not the purpose of the EF Core model builder, and I personally think that it is for the best. With the software products that Microsoft proposes today, you certainly start from a blank page, but you can go wherever you want to go, following the way you choose and prefer.
The author concludes his article criticizing the Microsoft documentation, even though the last documentations are detailed, well organized and open-source. Considering that sharing content and knowledge is one main advantage of our time, if you notice a lack of information about something, donâ€™t you think it would be more appropriate to complete the documentation instead of grumbling? It would surely be more useful.
I share with the author a dream of the software developmentâ€™s future, modelized by a "perfect tool" which would allow with a few mouse clicks to build a complex and specific software, compatible with iphone / google chrome/ ipad / ipod / freebox / windows tablet / android tablet / firefox / connected watches as well as connected clothes. In the case I canâ€™t have this, then Iâ€™ll go for powerful tools allowing me to develop exactly what I want, freeing me from useless issues, so that I can be only focused on my core job. Even if these tools require some time to learn how to use them properly, I think it is a good start.
Getting back to my "perfect tool", I admit that I do not have a great deal of hope concerning its feasibility. First, I think that the hardware devices are only at the beginning of their evolution, development and diversification. Second, as Humans, the tools which do everything, and additionally do it fast, never do it well.
PS: this article was originaly published on my personal blog.