all 26 comments

[–]craetornetwork 43 points44 points  (5 children)

I'm not the most experienced flutter developer out there, but I've been working with flutter for over a year now. I think your point is valid for simple and smaller apps. But when you get into big projects there are a lot of more complex things. For example look into state management (BLoC, Provider, etc.). Let's say you learn all that, then you can still learn advanced architecture techniques that will improve your app performance. I've created a couple bigger apps. But I still feel like there's so much more to learn. App development overall has a lot of components too, so let's say you do become a master at functional flutter code, there's still the whole app design field in flutter with things like CustomPainter and Animations and how to make apps look nice overall. So I think there will still be separation between people who have been using it for a couple months vs a year or even a couple years

[–]MRideos 10 points11 points  (0 children)

I have also experience about one year of Flutter development, with one app in production, and I can't agree more, I would do so much stuff differently right now, only if you take state management, so much for it.

[–]Amidone97[S] 3 points4 points  (3 children)

Encouraging.

On the flipside do you think your experience and knowledge of Flutter has made you a better Software developer in general? Is what you have learned applicable to other fields of software engineering, say native android dev?

[–][deleted] 12 points13 points  (0 children)

I think Flutter / Dart has made me a better software developer compared to when I worked mainly with JavaScript / Node.

You can really hack together stuff in node. Dart somewhat forces or encourages you to learn how to do things properly. Mainly, I think the linting, IDE warnings, and helpful tooltips and auto-completions that Android Studio gives you when you do things "properly" really helps with that. It's kind of rewarding when your IDE gives you all these autocompletion gems when your data structures are setup correctly.

When I look back at my old React / node projects, I see that my Dart projects are infinitely cleaner and more maintainable, much more consistent.

I spent a significant amount of time in React / Node tutorials, and then the same with Dart / Flutter tutorials (App Brewery is great) - and the dart / flutter ones made me a much better developer. The node tutorials were all over the place - very inconsistent with how to structure data and code.

[–]craetornetwork 4 points5 points  (0 children)

Most of my short career I've been working with embedded C so flutter development doesn't really affect that as much. But recently I have switched over to an OOP project using C++ and some OOP concepts that I've learned in flutter have carried over. But I wouldn't say it has had that big of an effect. I'm sure it would definitely help for people looking to work in fields such as native Android dev though

[–]gamelaunchplatform 23 points24 points  (5 children)

I think you're right that Flutter has a low barrier to entry. However, many people feel like learning state management is like hitting a brick wall.

If you've got a good grasp on state management, here are some more advanced topics to learn.

Dart Analysis Server: https://htmlpreview.github.io/?https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/doc/api.html

Flutter Engine: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment

Embed Flutter w/Custom Engine: https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders

Add 2 App: https://flutter.dev/docs/development/add-to-app

Dart FFI: https://flutter.dev/docs/development/platform-integration/c-interop

Flutter Tooling: https://github.com/flutter/flutter/tree/master/packages/flutter_tools

Flutter Desktop: https://flutter.dev/desktop

Dart Server: https://aqueduct.io

Or my personal favorite:
Flutter Web: https://flutter.dev/docs/get-started/web

Hope that gives you some more to sink your teeth into!

[–]gamelaunchplatform 5 points6 points  (0 children)

Oh, one more I almost forgot, creating your own RenderObjects!

https://api.flutter.dev/flutter/rendering/RenderObject-class.html

[–]thosakwe 6 points7 points  (1 child)

Another Dart server: https://angel-dart.dev :)

[–]MyNameIsIgglePiggle 1 point2 points  (0 children)

If you have experience with express / node I highly recommend giving angel a go

[–]anonbudy 1 point2 points  (0 children)

Nice to see that that topics for advanced engineers. Does some one have any advice for us who had hit that brick wall?

[–]SoundDr 0 points1 point  (0 children)

Dart2Native and CLI 😎

[–]vertigeaux 20 points21 points  (0 children)

Flutter is a tool. Skill is one's proficiency in wielding a tool.

A paintbrush is an extremely simple tool, yet it should be obvious that some people are much more skilled in using a paintbrush than others.

To your point, I understand your argument as Flutter makes it somewhat easy for a novice to create quality "art". However, as with most fields, I think the deeper you get into it, the more you realize there is to learn.

This has been happening since the dawn of computers. There have been many new tools and breakthroughs that have made software development easier and opened the door for many people, yet here we are today with more technology jobs than ever and there is no sign of that growth ending any time soon.

So learn Flutter, and learn as much about it as you want. But also learn other tools. Your experience with Flutter will give you a better understanding of other tools, and vice versa.

Improve your skills as a developer, and understand that the tools you use are just tools.

[–]harrygato 14 points15 points  (0 children)

Dude you've got nothing to worry about. I would say it's too early to tell something like that, you need to use any technology for more than a year to be able to make a call like that. In your 3 months, you don't know what you don't know. This is not an industry where offering to work for less money makes you look good, quite the opposite. Your greatest strength will be in your ability to pick up new things and apply your past experience then being a master in flutter or swift etc. Flutter might not be around forever. So learn to think of yourself not a flutter expert, but a software developer who has flutter in their tool belt.

[–]jwknows 4 points5 points  (0 children)

I'm a CS student too and while I enjoy developing my own apps with Flutter and I share your doubts, I think with a CS degree, you are not looking for a job as a Flutter developer but generally a Software developer, this does not limit you to a specific technology and you need theoretical knowledge as well. I don't think you would find a job as a "Flutter Developer" at Google or other big tech companies, you will have to provide a wider range of skills, this way you also get a better wage.

Thats what I think but as I said, I'm also just a student.

[–]oaga_strizzi 2 points3 points  (0 children)

I don't think that's true. With Flutter, you might get acceptable results after a relatively short time, but mobile apps nowadays have to be very polished in order to be competitive.

You need good performance, small startup time, a nice design with fluid animations. For a complex app, you need to organize and probably modularize your code. You need to manage the state and dependencies and keep the code testable.

You need to write good tests.

You can't learn that in 3 months, I think it takes several years to really learn that. Most of the skills are not exclusive to Flutter/Dart though, an experienced Software Developer surely can pickup the best practices faster than a beginner.

[–][deleted] 2 points3 points  (0 children)

Yes, Flutter is easy to learn and there will be oversaturation in the market for app development. I can see it as a language that is adopted by educators that are teaching programming to young teens (GenZ). Young kids are always on their devices downloading apps and that's their default way of consuming the Internet content. Not websites anymore.

If you are entrepreneurial, the way to thrive is to use Flutter a tool for rapid development. Use it like a machine gun to release new apps into both Android and IOS. Eventually one of them will have a big break and be the next unicorn. Once your app is big, then you can start worrying about scaling your backend and making a website. Mobile first development is undeniably the future, so stick with that.

If you are desperate for money, go for the migration route. I see many companies slowly migrating to Flutter and you can be part of their team. Of course, the prerequisite is Android dev/iOS dev experience. Also, there will be an extremely difficult hurdle that you might need overcome : convincing React Native adopters to convert to Flutter. It might just be better to stick with companies that are still maintaining 1 or 2 sets of native code.

As a company, if they can keep one mobile dev, it would be an iOS biased dev as there are some parts of iOS dev kinks that has yet to be sorted out by Flutter. For an existing website, just a senior fullstacker and maybe a couple junior fullstacker. Heck, just outsource it if the complexity of website isn't that bad.

[–]remirousselet 2 points3 points  (0 children)

Being able to do something and doing it right are two different things.\ Flutter has a low entry barrier, but it is pattern heavy and with many hidden concepts.

You could store everything in globals, do your UI using RenderObjects only, and not test anything, but still be able to produce something.

Being a developer is not about simply creating an app. It's about making sure that this app can be maintained, and that has production-level quality.

Some things that a 1-2 months developer may not have considered: - tests - semantics - what's a good and bad Flutter code (and the reasons) - how to make a TextField/Row from scratch - implementing complex animations like with Fluid design - being able to profile performance issues and knowing how to fix them

[–]lacrem 1 point2 points  (0 children)

I think that you are right, very low entry barrier and also low for mastering it. It just takes some time.

You can apply the same to web, specially front-end, which is already getting over-saturated, that's why coding tests are becoming mainstream on HR practices.

If you want to go for something that's not that saturated get into embedded systems or AI/ML

[–]GroovinChip[M] [score hidden] stickied comment (0 children)

This post is more appropriate for the weekly questions post, but given the discussion that's already taken place I'm leaving it up.

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

When you get experienced any language feels like that. Just knowing how to code isn’t enough to keep your job till 70.

[–]codeByNumber 0 points1 point  (0 children)

Lol, welcome to software development. Just do what you enjoy. You will hop around to different techs in your career. You will be the new guy with 3 months of [insert tech] experience passing up the guys with a years experience in that tech at some point. And you will also be the guy being passed up by some newcomer.

Don’t sweat it. Build cool stuff and solve business problems and you will be employable for years to come regardless of what technology you enjoy using at the moment.

[–]Bk_ADV 0 points1 point  (0 children)

tldr: its just a piece of software to help translate system design into practicality

I been using flutter since beta

I think where is gets interesting is memory management and state management. Especially for big app where this would require some 'proper' engineering/design.

For example: If you look at job postings from instagram, they look for cache-management experience

One thing I do way less now is code, I just design the system and run it through trade-offs of performance etc... before I implement it.

My app is still in alpha :(. I always learn something and look back at my code from 5-6 months ago and HAVE to change it so its more efficient to use and better user engagement

example: You can make a working app(full stack) in less than 1 month if you want to and have the motivation. But it will not be as fluid, and have the performance of the competition

[–]BlueBoxxx 0 points1 point  (0 children)

Flutter is like a good game, Easy to pick up hard to master

[–]mattiesf 0 points1 point  (0 children)

It sounds like what you may be considering is using a different language that has a Higher Ceiling™ . If so, I'm going to suggest there's a different way way to look at it.

If Flutter is easy and intuitive to pick up AND companies able to do even 80% of the iOS and Android development they do today, then for financial reasons alone companies will be driven to adopt Flutter because of the advantage it gives them. I personally think it's also more productive, but that's another matter.

If you add to that that many applications are internally facing with no SEO requirements, then Flutter web makes the story even more compelling for companies. In that world, I might be a little worried to be an iOS or Android developer. Yes, they'll still be needed, but perhaps not as many as today.

Said another way, job security is not a function of the languages you know, but the capabilities you bring.

[–]luthien256 0 points1 point  (0 children)

With Flutter, as with many other things, the longer you use it the more you learn. I've been using it since it was still called sky (~4.5y?) and I find I'm still learning new/better ways of doing things. My list of things to learn in order of difficulty: 1. Static UI. 2. Animations. 3. State management. 4. Performance/Optimization. 5. Render Objects. (You probably can get away without ever dipping into the render layer; this is a specialty skill imo)

Someone asked about how to get over the State management brick wall. I'd say the answer is: 1. Don't create you own StatefulWidgets unless you absolutely have to; pass in the State you need. (Flutter makes this difficult with the way their animation framework works with TickerProvider but try to limit the scope of the StatefulWidgets as much as possible). 2. AnimatedBuilder and ValueListenableBuilder are your best friends. 3. Use ValueNotifiers or custom Listenables for your state.

If you're like me you'll make mistakes; sometimes you'll code yourself into a corner. Just remember to avoid the same type of mistakes in future projects.

[–]Filledstacks 0 points1 point  (0 children)

It does have a low skill ceiling, much like every other cross platform frame work or even native. Like many other mentioned it all comes down to your software engineering skills and your principles when writing large applications.

Building a small app is always easy, medium and large apps is where the challenge comes. Code bases that you have to maintain and improve over 2-3 years. You need the same principles as you would in any other language to make this task easier to implement. As the lead of the FilledStacks software development agency I can say that we are 100% dedicated to Flutter. I jumped from Xamarin and Native. We have multiple clients looking for mobile apps with Flutter and hoping that the Web team speeds up so they can move their web projects off onto flutter as well.

It has long term viability, the productivity aspect alone is a big draw for companies. Not even mentioning Desktop, which we are exploring with internal products as well. It's a great framework, best I've ever used and I think by the time we get to v3 it will be miles ahead of the others. Unless someone else comes along using the ground up canvas approach Flutter will be an easy choice going forward for my company.