8 karma · joined April 20, 2017
I think they kind of stuck in the development, even the mule engine only have one active developer from the github commit ….
For example, many people just know how use React components, Angular components. But that’s ok in many jobs become there is no strict UI requirement on many jobs.
However, If your endpoint is to write components with design system / customise / optimise the components a little bit, you really need to understand how CSS and JS works.
The biggest pitfall I think is career development, if you are too generalist and your knowledge just stays on the surface, you just can’t solve some problems with technical complexity. It is hard to know what you don’t know … and some problems need expertise.
But sometime it is too verbose to use OOP, for example lambda vs anonymous listener. The biggest problem is it is easy to do wrong abstraction with OOP style, for example, store state that make no sense and put weird method inside a class
But things seem impossible for some new features, for example async steam just need new feature from core CLR.
So after .C#8, they decide only to support it on .NET core
First, it is not friendly to web, we have some special web requirements, we decided to spawn a node process to do it.
Second, the tooling is so much better in Visual Studio. And the compiler is so much smart with sophisticated and syntactic analysis.
Last but not least, it really lacks 3rd party libraries so people always need to implement themself.
C# may not be the best option for any application. But it is general enough to almost support every types of application.
The perfect role of architect I believe is an individual contributor. People just come to ask your idea and respect you to make the majority of design. And you need to help other to understand your idea.
More important is that most users will not able to distinguish the difference. I have asked my friends how they feel to compare Facebook to a traditional MVC web site in term of speed difference, none of them can feel the difference.
However, the transition from page to page do affect the user experience. As a user, when I want to do a task that involve many UIs and I need to click multiple pages, I will think it is a bad experience, but I do accept to switch to another page for another task. Therefore, It makes sense to have a SPA for some rich UI feature so that user can remain in the same page
However, to build a realistic and comprehensive compiler, I believe to build it manually is a much better option because it is less error prone, more flexible to tweak around and favours unit testing. Perhaps parser generator is better? I am investigating these kind of tools for work because we need to make our own unique formula implementation. I did use yacc for a school project, and I know its limitation. Since I am busy at my staff so I just let my colleague to make their decision and they decide to use jison. It turns out the product owners want see a much better error message in invalidating the formula, also we need to define our own function so we have to switch to another implementation in the next phrase.
But there is always a room for professional developers who are attention to details and are able to identity and to fix the problems.
I can conclude OutSystems is not a completed solution for general purpose development, it is just a platform which provides simple template, components, programming. For systems which are data entry (what they call digital transformation), it is ok with an crazy license. However, if you want to implement some business logic, you are better to implement them in general programming language.
The components system really show what is leaky abstraction. For some plugin I have to understand what is doing behind. For native Cordova plugin, it is crazy to debug.
In a short run, it saves time, however, in a long run, it don’t have any advantages due to two reason: Its development speed will not able to catch up with technology trend, therefore, sometimes of its advantage is no longer an advantage, for example it have components, but frontend framework also have many components. (Its component framework just copied from the open source, it is hard to find the documentation of the embedded version)
The eco-system just sucks, very few plugins because its plugins are not easy to make, and many of them are not supported by the Outsystems so most likely the plugin author will answer your question on the forum.
This may be ok for a junior position, and in closed environment. However, people are lazy and not all people are hard core. As a result, there are a lot .NET senior who don’t actually “know” how to code. Nowadays things become extremely complicated, all sort of API, library and framework. Even Microsoft can’t provide a completed solution, and it go back to command line approach with .NET core. I have been recently contacted by my ex-employee who want me to do some C# API communication freelance because their .NET developers just don’t know how to read the documentation and implement them in code.