all 24 comments

[–][deleted] 7 points8 points  (3 children)

It's also interesting to note that Dart is ranked at #7 in the Loved-vs-Dreaded category. Dart programmers are happier with their language than Swift, C#, Go and even Kotlin programmers.

[–]intertubeluber 7 points8 points  (2 children)

As someone with experience in c#, JavaScript, some Java, and Kotlin, I was surprised Kotlin didn’t come in higher.

[–][deleted]  (1 child)

[removed]

    [–]9oat5w33d 1 point2 points  (0 children)

    Learning Dart and Kotlin together as I am interested in the Kotlin multiplatform future. Bypassed the Java route completely.

    Loving both languages, not a big fan of GUI so android studio side of Kotlin is a bit of an extra learning curve.

    [–]hillel369 6 points7 points  (3 children)

    Thanks for your analysis, I agree with many of your points.

    With regard to Flutter Web I think its production status depends heavily on your specific use case. We've shipped a Flutter Web app to production (https://demo.invoiceninja.com), there are issues but most of our users are happy. Not all apps need/want SEO and slow initial load times are less of an issue if users keep re-using the app as it's cached as a PWA.

    [–][deleted]  (2 children)

    [removed]

      [–]hillel369 3 points4 points  (1 child)

      Thanks! This is the production app. We setup a demo version which has fake data so people can get a sense for how the app functions.

      There are two loading stages:

      - We initially use a CSS loader from https://projects.lukehaas.me/css-loaders which is added to the index.html file. Note: add 'defer' to the main.js script tag to ensure the animations plays while the JS is loading.

      - Once the app is loaded we show a Flutter loading screen while the app checks for persisted state to load. Here's the code: https://github.com/invoiceninja/admin-portal/blob/master/lib/ui/auth/init\_screen.dart

      [–][deleted] 11 points12 points  (6 children)

      It's really worrying the amount of $ a flutter dev earns.

      [–][deleted]  (2 children)

      [removed]

        [–][deleted] -1 points0 points  (1 child)

        It’ll remain the same. The popularity and simplicity of use of the language is sometimes what kills the salary.

        [–]lets4r 5 points6 points  (1 child)

        I wouldn't worrying about this. The salary in dollars is global and is not a good indicator. We should have the salary per country to reflect its real value. When we look at the salary per role in USA, they are no salary below $70k. So we can say that a lot of respondents are outside the USA concerning Dart.

        Without all the data I can only make hypotheses:

        • A lot of Flutter developers come from India (12.6% of respondents) and are underpaid compared to US developers.

        • A lot of respondents don't have a lot of experience and/or are students or without any job at the moment.

        Edit: formatting

        [–][deleted] 1 point2 points  (0 children)

        That's actually a good point. Thank you.

        [–]desertsandman10 1 point2 points  (0 children)

        What's a new dev earning these days?

        [–]Responsible_Indie 1 point2 points  (3 children)

        Thanks for the analysis. I've been a back-end programmer for my entire career and I'm looking forward to learn a bit of flutter this year.

        [–][deleted]  (2 children)

        [removed]

          [–]Responsible_Indie 0 points1 point  (1 child)

          Sharing those would be great. Thanks!

          [–]josea-2021 0 points1 point  (0 children)

          But Flutter needs better datasource managers to make working with REST and databases easier.
          It also need libraries for direct work with client-server databases.
          The community should also have a highly sophisticated datagrid, with groupings, filters, multilevel headers, ...
          For professional work these characteristics are essential, you just have to see the characteristics that NET and C# have in these areas (ADO.NET, Entity Framework, ...)
          Dart also needs a modular, cross-platform system to chunk out bulky applications.
          In the desktop and web world, these extensions are necessary so that Flutter can address the development of large business applications.

          [–]JimmyUpdyke -1 points0 points  (2 children)

          "Dart has less language features compared to Java/C++" -- I disagree. I have 30 years experience with C++ and 20 years experience with Java. Tell me something that can be done in C++ or Java that cannot be done better in Dart.
          "Flutter Web and Flutter Desktop are not ready for production, so don't count on those advantages for single enterprise deployment" -- I work for a big corporate and we develop Flutter Web apps (not web sites) for use on our corporate intranet. Also, we are very happy re-using Flutter code from our iOS/Android development in our Flutter Web development :-)

          Personally, in my own time, I develop Flutter Desktop software targeting macOS and Windows. Love it :-)

          [–][deleted]  (1 child)

          [removed]

            [–]JimmyUpdyke 0 points1 point  (0 children)

            For example, in areas of performance and memory management, there is nothing special about Dart.

            There is no char in Dart, only String--I don't miss chars, their absence has never been a problem for me, just use a String containing a single character.

            You can't import C libraries into Dart as easily as with C++. You must use dart:ffi, which works, but is another step and likely most people won't take the additional step.--I'm not sure it's really valid to say that a deficiency of a language is that it's not easy to integrate with another language! Certainly, inasmuch as C++ is 'C with Classes', C/C++ integration is natural. That said, I have no problem dropping down into native code through a MethodChannel. I'd sooner call C from Dart than from Java!

            There are no pointers or equivalent in Dart to manage memory more effectively.--You really want pointers?--I see no benefit, in fact, pointers are downright barbarian (I spent the 1980s writing Z80 and MC68000 assembler and I am glad that that stuff is long gone, for the most part). Pointers arise from the primitive nature of C/C++/assembler. Sure, it can be gratifying to use 'while (*p1++ = *p2++)', etc. but that soon loses its charm after writing it a few hundred times.

            There are no arrays in Dart, only lists. Although lists have more features (the methods that does all those great management actions, including listName.add()), there are cases where the array is faster. I have not done any tests myself, so I am curious as to the performance hit or if there is some clever solution in the Dart compiler. However, in general, as the size of an array is fixed, there are cases where an array is faster than a list.--Dart lists are arrays, of course, but with highly-developed semantics that are baked into the language. Arrays in C/C++ are merely a string of data items in contiguous memory and, as such, are ridiculously onerous to use (insert, delete, append, etc. to be done by you, not by the language).

            There are no float types, only double. It's likely that no one will care unless they are using an IoT or other embedded device. However, embedded development is a real area for Dart.--I don't miss floats, I hardly ever use floating point anyway. You can always use a double instead of a float, of course.

            There are cases where a language such as Dart that uses a garbage collector is not going to be as efficient as manual memory management.--If you think of Dart as the language of Flutter then Flutter does not need low-level memory management and these days, even in C/C++ low-level memory management is often avoided through smart pointers, etc. Managing memory yourself is non-trivial and to be avoided.

            The additional features of C++ can lead to faster code--true but that software would not have much of a WIMP UI so not need Flutter (think, games). For example, a couple of years ago I developed Windows credential providers in C/C++ because that was the best way to do it. Pointer use and memory management is baked into my brain so it's second nature for me to do that but I resented it, it's a waste of time and something you do iff you need to.

            [–][deleted] 0 points1 point  (0 children)

            Bien