top | item 37098591

I feel like I made a mistake investing professionally into Flutter

199 points| ksec | 2 years ago |reddit.com | reply

298 comments

order
[+] tkiolp4|2 years ago|reply
I don’t buy it. As software developers we learn technologies for breakfast. We learn them, and then we forget them. We recollect the wisdom gained and apply it in our next gig using a different technology. It works for mobile development, for frontend, for backend, for infra, for almost anything.

I have worked for years with PHP, Apache, Ansible and MySQL. Nowadays not anymore. And in 7 years I’ll be using something else. Learn the fundamentals (which is not a one-time job, btw) and you’ll be fine. If someone asks for technology X in their job offers when you know Y, but you know you won’t have difficulty in learning X, just take a few days in learning X and then put it in your CV. You’ll get pass HR screening and then you’ll have a chance to explain in tech interview that your are more of a technology-agnostic dev. You’ll do fine.

[+] scarface_74|2 years ago|reply
Yes because I know Java (hypothetically I haven’t touched Java since two years after it was introduced) I can become an efficient Android developer “in a few days”.

Better yet, since I did Windows CE development for ruggedized devices using C# Compact framework back between 2007-2010, I should have no problem picking up iOS development “in a few days” and start being a productive member of a team right? Or better yet, leading a team?

Third thing, I know the fundamentals of web development including JavaScript, HTML and CSS. But I haven’t done anything on the front end since 2012. Are you going to hire me to help create your website when you’re looking for a modern web developer?

Learning a language is easy. Modern development requires knowing the toolchain framework, idiosyncrasies, foot guns, best practices, etc.

These days, I am only looking for jobs where I have some type of team lead/architect position. Are you going to hire me to lead a team working on a 10 year old complicated Java app when all of my “enterprise” experience is in the .Net ecosystem?

On another note: I haven’t randomly submitted my job to an ATS worrying about an “HR” screen since 2008 across 5 jobs. I’ve always either reached out to my network or had someone reach out to me.

[+] BiteCode_dev|2 years ago|reply
It's one thing knowing the language, it's another being productive with the ecosystem.

One takes between a few days and a few months. The other is a few years, unless you get pro training.

I guarantee most people starting with Python from another language will be productive quickly. But they will curse the packaging ecosystem because they will follow a lot of tutorials that don't follow this:

https://bitecode.substack.com/p/why-not-tell-people-to-simpl...

And they'll get screwed.

They will have a hard time learning this:

https://www.bitecode.dev/p/relieving-your-python-packaging-p...

It will take a long time of trials and errors, suffering all the way.

And this is true for many other aspects: good editor config, good web deployment story, good app sharing system, good tooling setup, etc

A runtime or a stlib is quite small and stable. But an ecosystem is gigantic and moving.

[+] littlecranky67|2 years ago|reply
I agree, but unfortunately hiring managers, recruiter etc. don't think like this. If you happen to find a person that is tech-savy, they can asses your true skillsets and capabilitiy of solving problems. Hiring managers and recruiter match buzzwords in your CV.

I recently got rejected for a project from an agency (am a contractor) because I did not have provable skills or knowledge in "CI/CD". Stupid me, made the mistake of putting extensive details about creating build and deployment pipelines with Travis, GitLab, GitHub Actions, Azure Pipelines for each past project going back to 2012, but did not specify the right buzzword "CI/CD" for the recruiter...

[+] demarq|2 years ago|reply
Absolutely, I feel I could be employed tomorrow in a language or stack that I haven’t even heard of and start being productive by the end of the week!

I seriously think you owe it to yourself to practice learning something new every week. It often takes one afternoon to get a “taste” and small side project to get beyond that.

Every programming language. Is literally just a template for instructions, and every technology just an abstraction over some crud somewhere.

[+] mathisfun123|2 years ago|reply
>don’t buy it. As software developers we learn technologies for breakfast.

This is such a funny mantra. Okay learn how nuclear fission works. Or EUV lithography. Or power transmission across superconductors. All of these are extant, commercial, technologies (yes even the last one). Too much? How about something more pedestrian like overhead cams and electric fuel injection? Too far afield? Okay learn how DMA works on a GPU - not how to call `copy(host, device)` but what actually happens and more importantly why.

The truth is software developers learn APIs, not technologies (and not over breakfast either). Point being, it's not good to be haughty because if tomorrow you were out of a job and the only place hiring was the Ford motor plant I think you'd be just as fucked as the author of the post.

[+] hamburglar|2 years ago|reply
> As software developers we learn technologies for breakfast. ... > I have worked for years with PHP, Apache, Ansible and MySQL.

As much as I agree with your general sentiment that adaptation is one of our primary skills in this industry, these two statements combine to sound like parody. You “eat new technologies for breakfast” but PHP and Apache are in your short list of technologies you’ve used for years?

> And in 7 years I’ll be using something else.

And 7 years for your prediction of when you’ll be using a different technology is both oddly specific and oddly long.

Apologies if this comment actually is parody and it’s just flown over my head.

[+] o_m|2 years ago|reply
Everyone goes through this once. A lot of your knowledge suddenly aren't needed anymore because of external factors. For me it was Flash. I've seen colleges being afraid of learning new technology after being burned once. Now my skills are learning new skills.
[+] ransom1538|2 years ago|reply
"you won’t have difficulty in learning X, just take a few days in learning X"

It isn't 2020 anymore. No. No, one is going to hire someone that is going to learn "react on the fly".

[+] tester756|2 years ago|reply
I don't agree.

My really-learned language is C#

The biggest money I've made technology on is C, which I don't really know, just basics.

I've wrote some js, ts, c++, lua, used some postgres+mssql+mongo, yada yada and stuff

but when writing CV I'm not saying that I know those, just that I have experience with those. It is probably bad strategy cuz people inflate their skills, but who knows.

There's giant difference between person who "can use tech" and person who "understands to the point that he/she feels particular tech".

"Feeling" technology takes years because you need to understand its ecosystem, why some approaches to some problems are more common within this tech, historical context, internals, etc, etc.

I feel C#, but I only can use C.

[+] m3kw9|2 years ago|reply
Sure, but say you focused as a iOS developer you definitely cannot tell the recruiter doing Android are the same. They wont hire you if you say you have no Android experience, same thing
[+] chaostheory|2 years ago|reply
The probability of success is largely is based on the available supply of developers vs the demand for them. Canada’s market is ok, but not great which is probably why so many Canadian programmers immigrated south.
[+] shipscode|2 years ago|reply
Oh come on. Language specific knowledge is a game changer in programming speed & efficiency. Likewise the level of effort to understand modern React concepts has gone way up.

Deep React specialization is a great way to get most tech jobs. Some interviewers literally just want to see if you can use hooks in a solution. Applying a learners mindset in the middle of an interview comes off as amateur.

Learn the tech stack you’ll use on the job. It’ll get you tons of mid grade offers.

[+] zigzag312|2 years ago|reply
Dart is my biggest issue with Flutter. It's still missing ergonomic features like data classes and lower level things like unsigned 64-bit integers. There is no runtime reflection, which I think is a good thing for end user apps, but it's also missing static metaprogramming. And code generation is not integrated into a complier. Since, there is no runtime reflection, metaprogramming & integrated code-gen are sorely needed.

Flutter itself is slowly reaching maturity on mobile and is already quite good, if you can live with a few compromises.

[+] jstx1|2 years ago|reply
The mistake isn't investing time into Flutter; it's being "the Flutter guy", only knowing Flutter and only searching for Flutter jobs.
[+] MrDresden|2 years ago|reply
It has been interesting seeing how many interviewees coming in for a mobile app developer positions in the last 4-5 years have made bold claims about native development (Obj-C/Swift/Kotlin/Java) being dead due to Flutter, then fumbling completely when asked to solve problems that would require them to drop 'down' into the native environment.

Having Flutter in the toolbox is quite a good thing, unless there is nothing else in there. Then you are in trouble.

[+] willio58|2 years ago|reply
Same could be said about “the react guy”, which I definitely have been in the past. Of course react has buy-in 10x what flutter ever had but still.
[+] suyash|2 years ago|reply
For anyone reading this and if you want to develop mobile apps, just first learn native iOS/Android platforms, they are not going anywhere before you get tempted by other flashy technologies like Flutter or React Native. Most companies including the ones that created these cross platform frameworks, build thier core apps using native stack for a reason.
[+] m_fayer|2 years ago|reply
I used to say just this. And I did native Android dev for many years, but I gave it up around 2019.

When I finally checked out, native Android was a teetering mess of compatibility libraries, half-baked never-finished “new ways of doing things”, lacking docs, forever-bugs, and overall neglect. Simple ui would take you 5x as long as equivalent css and have you dropping down to low level drawing in frustration.

Back then, I felt native Android didn’t deserve my time or patience.

Has this picture improved?

[+] zukzuk|2 years ago|reply
I'd argue the opposite. For a lot of people, getting quick results is absolutely needed for motivation. Focusing on learning "the fundamentals" before getting to the enjoyable parts is bad advice for most, as it often leads to people dropping out before they get hooked.

I agree that you probably can't be a decent mobile dev in the long term without learning basic iOS/Swift or Android/Java(/probably Kotlin nowadays) but that is not a good place to start for people who are just getting started.

[+] johnnyanmac|2 years ago|reply
>Most companies including the ones that created these cross platform frameworks, build thier core apps using native stack for a reason.

yes, because they are a company and have 2 separate teams maintaining each stack.

TBH I mostly blame Apple for my reluctance. Given the barrier of entry, I'd rather just work with a cross platform tool, launch android, and then figure out any potential IOS issues when I decide I need an IOS port and the need to pay for a license (and find/buy the Apple hardware).

[+] keyle|2 years ago|reply
The mistake is believing that you can ever stop learning. 20 years I'm doing this professionally, 20 years I'm learning.
[+] 0x445442|2 years ago|reply
The mistake OP is referring to is spending too much time learning the wrong thing which is easy to do in the Cargo Cult that is modern Software Development.
[+] bibabaloo|2 years ago|reply
Are mobile stacks so specialised that it's difficult to switch between them?

Out of curiosity, how long would it take a flutter dev to become productive in some other stack?

[+] dcchambers|2 years ago|reply
Why are people so obsessed with hyper specializing in software development? Labeling yourself a react dev or rails dev or flutter dev or whatever is only going to limit your growth and options. Your career will outlive many tech stacks. Tech changes quickly. Never stop learning.
[+] the_only_law|2 years ago|reply
Because once the market goes belly up, being a generalist seems to be a death sentence.

One thing I noticed having been on the job search for about a year now, is the amount of jobs looking for a specialist, whether that be in a particular domain, or technology. Often very obscure or “obsolete” stuff.

I remember applying to a government job, and in their little checklist application, one of the questions was basically “do you have experience writing software for [hyper specific domain]”. Of course, it was the only question on there I couldn’t answer “yes” to. Low and behold I was rejected for that reason. Not sure how they’re going to fare finding someone so unique at the price they’re paying.

I’m frankly ready to leave the industry, but unfortunately, there’s not really any other good options for me at this point.

[+] anon7331|2 years ago|reply
It isn’t clear why the discussion is around flutter.

The problem is when you define yourself by the technology you know. You’re an app developer or an engineer, not a flutter developer. Focus on showing your ability to make apps or whatever the target company does.

[+] PedroBatista|2 years ago|reply
Obviously I feel the pain of the OP but I think he blames the wrong thing.

Flutter is a ( viable ) technology that’s being growing for the last few years. A very significant percentage of new mobile apps are programmed with it these days.

It seems his problems have everything to do with the local job market and not the technology. With the added bonus that you can be a single man operation and release your own apps for both iOS, Android and the desktops.

I’m not a fanboy and even less of Google but Flutter really offers the ability to make lemonade if the job market gives you lemons.

[+] candiddevmike|2 years ago|reply
Flutter is pretty old if you think about it and still has too many rough edges and not a lot of big name adoption. The project is too ambitious, and the features seem more like PoCs than something you can rely on in production, IMO.
[+] scarface_74|2 years ago|reply
As long as you don’t include in that number - most apps built by Google.
[+] sirsinsalot|2 years ago|reply
It mistake misses the point of the investment. The pay-off is experience in new patterns, new tooling, new approaches. The dividend is in the job where you use the tool but the capital gain is in experience.

When I hire for my team, I never mention the stack. I don't care. I am hiring software engineers, and what I value is mindset and ability.

I'll throw you in at the deep end. Learn the language, libs, tooling, infra on the job and the team will support you. Because you're awesome. That's why I hired you.

edit: Sound _less_ unintionally arrogant.

[+] gettodachoppa|2 years ago|reply
That sounds crazy to me. If you throw me at a new language, sure learning the language might only take a couple of weeks (if it doesn't radically depart from what I already know), but learning the libraries/ecosystem is at least 6 months. Probably more for something yuge like Java or .NET.

I'll be referencing the doc and tinkering every little thing for many many months, which is sure to affect my productivity. Append to a file? Make an HTTP connection? Serialize a data structure? Have to look it up.

Then come all the 3rd party libraries a seasoned developer will already know. How do I talk to Postgres? Which of these five 3rd party libraries should I use? Which library do I need to help generate my SQL statements?

It's like you're looking for a journalist for an American newspaper, and you decide "oh, you don't have to speak english, you can learn that later". Sure, you can do this for an exceptional talent, but on average you're better off finding people who already speak english.

[+] nologic01|2 years ago|reply
Developers have a finite useful lifespan and they need to pick their portfolio of techologies wisely if their journey is not going to be an anxious random walk chasing the latest fad.

You cant only pick "winners" but you almost need to develop a sixth sense for what will be a valuable and long term addition to your finite toolbox.

Looking at tech attributes is just the start. business and community context, complementarity with other pieces etc are all the subtle factors that may help avoid wasting energy in short lived pursuits.

[+] somsak2|2 years ago|reply
I don't think it's subtle at all. Pick existing popular technologies / frameworks. If you like to gamble a bit, pick those that you see growing quickly. Invest time in learning new stuff (ideally, on an employer's dime) throughout your career.

If you don't care about being on the 'bleeding edge', you really don't have to think about it too hard and you'll have plenty of job opportunities.

[+] Aulig|2 years ago|reply
As the comments on the post say - it's most likely due to the generally slow job market. 3.5 years later I'm still glad that I chose to use Flutter in my business.
[+] cageface|2 years ago|reply
I recently started building my first Flutter app and overall I've found it to be surprisingly pleasant. I've had no trouble finding good packages for features I need and even though I'm learning the language and APIs as I go I've made rapid progress.

I've done many apps in Electron, React Native & native iOS and at least on a technological level I prefer the devx of Flutter.

[+] ThinkBeat|2 years ago|reply
Id say that its the wrong way to think about it. As long as you are working in the software engineering field change is a near certainty.

You will not hit on a technology / framework / product that will keep you going for 40 years. [1]

Working with Flutter you have learned a lot that is valuable going forward. Learning to adopt new tools is part of the job.

[+] mgkimsal|2 years ago|reply
C, Java, PHP, SQL, Python, Ruby have kept a lot of people going for more than 20 years, and will likely continue to be relevant in some capacity for at least another decade (if only maintenance, not even including new projects started with those tech stacks). I've been working with PHP and some variation of SQL for the past 28 years, and it will go on for a while longer. I've also worked in the Java world, and have done a smattering of other tech along the way as well.

Not everything lasts 40 years, but many things last more than 3-5.

[+] nailer|2 years ago|reply
Time is a limited resource. Choosing to invest in the right technologies at the right time is the important part of a career in tech.
[+] itpragmatik|2 years ago|reply
I started doing Java (and sql/Oracle) development in late 1990s and even today I am deploying REST APIs written in Java, MySQL to AWS. So, yeah, it has been about 23+ years so far!
[+] 5cott0|2 years ago|reply
parsing JSON in Flutter seems like A LOT

https://codewithandrea.com/articles/parse-json-dart/

[+] throwoutway|2 years ago|reply
Just holding down the spacebar to scroll that page made me never want to use Flutter to parse JSON
[+] faitswulff|2 years ago|reply
The job market is pretty rough regardless of tech stack right now.
[+] pjmlp|2 years ago|reply
Flutter and Dart future are tied together, both rescued by AdWords business unit.

It is never going to be beyond a niche thing, unless Google does indeed ship Fuchsia in large scale.

[+] synergy20|2 years ago|reply
I spent quite some cycles into flutter|dart, ended up with React Native for mobile and wxWidgets for cross platform desktop GUI(electron.js is too fat for me and wxWidgets 3.2 looks decent).

RN(javascript) and wxWidgets(c++) are both job friendly, unlike Dart, which is a language I actually enjoy, but there are not a lot jobs for it anywhere.

[+] glimshe|2 years ago|reply
I only invest in company-sponsored tech after the market share grows to a ver significant number. A lot of what is sold as "the future of X" is just marketing. Flutter and Dart in particular failed to thrive, as many of these technologies do, and are evolutionary dead ends (despite the remaining die-hard users).