I feel like I made a mistake investing professionally into Flutter
reddit.com
reddit.com
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.
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...
So? You put those buzzwords in your CV. What’s difficult about that? You feel like being dishonest? If so, again, just explain in the next stage of the interview (with real engineers) that you do have real world experience in similar but not exactly the same technologies listed in your CV. You just did so to pass through HR. Not a big deal (as long as you’re confident and believe you can learn technologies easily)
I'm gladly looking forward 3-5 years, when AI will handle this CV analysis and match a project description from a company to a proper candidate. Basic GPT can tell right now if CI/CD matches "Azure Pipelines". Then we can fire the lower 50-80% of unskilled recruiters that do not provide any value to the market right now.
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.
But learning it at an advanced level, is a whole different matter.
I've been writing Swift since, literally, a few hours after it was announced, in 2014. I write Swift every day (like, seven days a week), and have been, since that first day.
I feel as if I have only had "mastery" of the language for the last couple of years. There's still plenty for me to learn, and they keep adding more stuff.
But the language isn't the big deal. The deal for me, is the fundamental SDK/API/Framework. That has been an ongoing project since 1986. As soon as I learn one API, they change it up (and sometimes, the entire OS).
During that time, I've written in 68K ASM, Pascal, Object Pascal, C, C+- (the weird THINK C variant), C++. ObjC, and Swift. I've worked with MacApp, OpenDoc(!), Think Libraries (Pascal and C), PowerPlant, and Cocoa (and its expression in iOS, WatchOS, AppKit, and TVOS).
I've always considered hiring folks to be an investment. As a manager, I always looked for folks that had the fundamentals down, and assumed that I could train them into what we need. Most of the work we did, was way beyond anything you'd find in textbooks. I was under no illusion that I could hire folks that would be able to start on it right away.
That was why my team was always one that I wanted to keep whole and cohesive, over many years. I can't even imagine today's 18-month engineer lifetime. I kept my engineers for many years, and that wasn't easy.
https://news.ycombinator.com/item?id=37099395
But as far as employees being an “investment” let’s look at things from the employee side.
For context: these numbers I’m about to cite are correct to within a first approximation on the “enterprise dev” side where most of the 2.7 million developers work and in most major cities in the US that are not on the west coast or in NYC
Let’s say you hire a Junior/mid level developer and offer them $100K which is fair knowing they are going to do “negative work” for the first few months as an investment. Two years later, they have experience and now can apply for companies that are looking for experienced iOS developers. Their market rate shot up to $135k.
Because of salary compression and inversion, you’re not going to be able to pay them 35% more in two years because of HR policies. Yet you can bring in new experienced iOS developers at market rate. If he’s smart your employee is going to jump ship, wasting a lot of your “investment”.
As a hiring manager, knowing that statistically I’m only going to get two years out of an employee, why wouldn’t I just poach the person you just trained and pay them the $135K you couldn’t?
Another scenario is that now that developer has been reading r/cscareerquestions and decided to “grind leetcode and work for a FAANG”. Now he’s looking at $200K+ as a mid level developer adding yet more bloat to the Facebook app.
You couldn’t compete with that if you wanted to.
Unfortunately, I was forced to.
My company was one that paid “competitive” salaries.
That’s code for “below average.”
This filtered out 90% of applicants, right there.
So the ones that applied, did so, out of genuine interest in the company and the technology (we were a “marquee” company).
I was forced to look for “diamonds in the rough,” and became fairly good at evaluating whether or not someone could handle the tech and the learning.
I kept them, by being a really good manager. I treated them with respect, didn’t burn them out, and shielded them from a lot of the corporate BS. They appreciated that, and stayed.
When our team was finally rolled up, after just short of 27 years, the employee with the least tenure had ten years. These were seasoned C++ image processing professionals.
I had my first house built in the burbs of Atlanta in 2002 making $60k (2500 square feet) and my second house built in the northern burbs (3200 square feet) making $135K in 2016 [1].
I only fell into a remote role at BigTech in 2020 at 46 years old after declining a chance to interview for a software development position and being offered a chance to interview for a position in the Professional Services division doing cloud consulting [2].
I was perfectly happy living the upper middle class lifestyle in 2020 making only $150k with my wife making $20K working part time.
In fact, I’m excited to get back to working at small companies on the high end of enterprise dev comp because my department became too “Amazonian” this year and my shit tolerance level is extremely low.
[1] 2002-2012 was a decade of bad life and career decisions that I didn’t recover from completely until 2018.
[2] I did my bid, saved money and paid off debt and our bills are actually $1000+ lower per month now than they were when I started.
Seems like you just identified the issue. You're right, of course, that the "invest in employees" approach doesn't work at companies that have a corporate policy to not invest in employees.
Investing in employees is a top-down strategy, not a bottom-up one. If there isn't support for it at the top, then you're right, it won't work.
Besides even at BigTech, it’s much easier to get a higher level position at another comparable company than go through the promotion process.
The only reason I don't think I could do iOS is because I'd need to use a OSX, and I think it would take me longer to become productive in OSX.
It also depends on what you mean by "productive", would I want to lead a team to create a new app from scratch? Probably not. Go into an existing app and start fixing bugs and creating new features? Sure.
I did a trial week before joining my current gig full-time. I had pretty much no typescript experience, came into a large TS react/nodejs app and had a pull request on the 2nd day for a new feature.
I wouldn't try to work on a Haskell or OCaml codebase, they are different enough that I'm not confident I could pick them up quickly. But most mainstream languages are similar enough that it really shouldn't be that hard to pick them up and be productive.
As someone with experience, are you actually applying for jobs where you would just be pulling stories off the board doing “feature work”?
And let’s take your example. What’s the chance of me being productively able to create a feature in a Typescript/React app seeing that I haven’t done front end work since 2015 and even then it was server side rendering with ASP.Net MVC and bootstrap.
I dislike the whole Agile stories/points/sprints thing, so probably not those jobs. But if you're asking if I'm applying to jobs where I write code, then yep! I love writing code and building things.
> And let’s take your example. What’s the chance of me being productively able to create a feature in a Typescript/React app seeing that I haven’t done front end work since 2015 and even then it was server side rendering with ASP.Net MVC and bootstrap.
I don't know what other experience you have, but probably. At my previous job, I got a bunch of silicon production test engineers, that spend most of their day writing VBA, "productive" in React within a week.
I setup the base of the application and sorted out the routing, state management and abstractions for dealing with our data. But they were writing views and features after a week pretty well. I had to point out some performance issues in code reviews but that was mainly it.
It depends on your definition of “production”. I got a couple of developers who had spent a decade+ supporting a PowerBuilder app and writing stored procedures.
Their C# code was a horrible mess.
My former CTO (55 years old and his idea of research was coding POCs - smart guy), said he wouldn’t hire “old people” any more to do front end work because their front end designs weren’t as good as people who started out doing front end work and have been doing it for years.
All of his back end developers/architects were older.
If your resume gives me the impression that you are likely to still be working here for enough years, then I’ll give you time to get up to speed. If you were a really great front end developer in 2015, I suspect you can figure out Typescript/React.
I knew enough to copy/paste/pattern match an existing page and make the necessary change. But you start me with a blank slate and give me a mock-up, I would end up using tables and frames like it’s 1999.
Every Android version is basically a reboot in many parts of the framework, the device fragmentation is hardly any better than J2ME days, several features are only documented via samples or Google IO talks, Gradle plugins require rewrites between upgrades, and each Android Studio release is a box of surprises what quirks it has.
Let me try and quantify it. I looked through my apps that I installed from F-Droid, then looked at their GitHub issues and picked one [0]. I bet I could implement that in less than a week with 0 Android development experience.
> Every Android version is basically a reboot in many parts of the framework, the device fragmentation is hardly any better than J2ME days, several features are only documented via samples or Google IO talks, Gradle plugins require rewrites between upgrades, and each Android Studio release is a box of surprises what quirks it has.
Does any of that really matter if you're hiring someone into an existing org? Doesn't Android have amazing backwards compatibility? I'm sure I have some dice app from 2012 that still runs. The company is probably targeting some version of Android and isn't changing to the latest one every time a new version is released.
Would you hire me someone who not only doesn’t know anything about Android development but doesn’t even follow the ecosystem and the current trends?
I mean, in this hypothetical scenario, I've decided that I want a job as an Android developer. So I would take my own time to learn Android whilst interviewing. By the time I got a job, I'm confident I'd hit the ground running.
I wouldn't try to apply for a job to lead an Android team without at least working in one first. I'm sure some people do, but I'm not that confident ;).
> Would you hire me someone who not only doesn’t know anything about Android development but doesn’t even follow the ecosystem and the current trends?
I wouldn't hire you because you don't sound like you think you could do it.
If I was interviewing someone and they said something like: "I have no experience with Android, but I know Kotlin and I'm confident I could pick it up. I did a similar thing with x,y,z" then sure.
I can say I’m a little teapot. But without demonstrated experience, why would you hire me over one of the million developers with experience and have at least shipped an app?
> If I was interviewing someone and they said something like: "I have no experience with Android, but I know Kotlin and I'm confident I could pick it up. I did a similar thing with x,y,z" then sure.
Yes because “positive thoughts” without experience means you can be effective
No it doesn't have an amazing backwards compatibility, specially depending on what is cool in one Google IO, and already legacy in the new one, without replacement, like e.g. Tango, Sceneform, Fragments.
There are policy rules how old an Android app is allowed to be in Play Store.
Regardless, while Android requires you to compile new apps with the latest toolchains to release, and you might have to update some stuff in your manifest, they do not force you to use new APIs, they do not require you to stop supporting old versions of Android, and I've seldom run into a backwards compatibility issue that wasn't some corner case involving the weird intents we have to use (as our app relies on being a VPN).
Here have a go at it, https://support.google.com/googleplay/android-developer/answ...
Besides the whole Android example, was just that, I can give several examples of technology stacks where having a passable knowledgeable of a programming language, without the associated frameworks that are being used in the company, makes the candidates a no hire, unless they really excel themselves at the interview, assuming HR even cares to call them in.
FWIW, I am seriously the build engineer for an Android app distributed in the Play Store (and have maintained apps for Android since the platform launched and it was still called the Android Market), and I'm telling you: you are not just wrong, you are being loudly wrong... not just about this (where the wrongness frankly feels egregious at this point), but your entire point: I have taught classes at the university level on how to rapidly pick up programming environments, and the lead UI developer I hired for our company had almost no experience in the toolkit we are using before we hired him and he's doing fine with it.
As of the rest, in most companies I worked on, unless the higher ups are bypassing the hiring process, due to networking and acquaintances, such CVs never get through HR first round of filters.
yup, but we're not talking about new feature to removed in 2 years level of radical changes. It's still something coporate uses and coporate doesn't latch on every cool feature.
You can probably expect your newest API app to work in 5 years if you don't touch it. You probably can NOT expect it to work in 10 years. That just means you need to make sure you're never 3+ years behind on using deprecated features.
In a timeframe of 1-2 weeks he was making PRs. It needed quite some reviews from me, usually because he didn't know about "how it should behave" on Android, or what the best practices were in terms of using Kotlin or following our architecture. After 2-3 months he was as proficient coding as I basically (but we all know, coding is 50%).
at another job i started with only some rudimentary python experience. they had an inhouse framework, so being deeply familiar with python frameworks and libraries would not have even helped me. they knew i had experience in other languages and it worked out pretty well.
most recently i had an interview where it was very clear that i haven't done any work on go before. at least during the interview that was not an issue. after the interview they wanted me to send them code examples of previous work. i didn't get the job, but i don't think lack of go experience was the problem.
I recognize that there are a lot of different niches in our industry, and presumably in some of those niches this narrow focus on what technology is being used makes sense, but that hasn't been my experience.
In my experience, you want people who are both pragmatic and flexible about learning, evaluating, choosing, and teaching others new tools.
I do recognize this may be a somewhat privileged view. I think I've been fortunate to spend my career in organizations where software is the profit center rather than a cost center supporting the rest of the business. My experience is that these companies have focused their hiring, compensation, and performance expectations on fundamentals and figure-it-out-itude rather than any specific technology stack.
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.
Yes. The skills are fungible.
When companies were looking for “a C# developer who knew the latest front end framework who was willing to commute to the office in midtown Atlanta” the pool was a lot smaller than “someone legally allowed to work in the US”
In the real world, I’m interviewing for positions where they are looking for leads at cloud consulting companies who can mentor juniors and that they can put in front of customers for recommendations, estimating statements of work for implementations on AWS and it’s specializing in application development where you are integrating with AWS services. I have lots of experience with most things AWS.
No one should hire me to do the same for either Azure or GCP. Sure I could do the initial discovery, pre-sales, needs analysis, business outcomes, etc. But I wouldn’t have a clue about what services to use and i definitely couldn’t mentor and help troubleshoot implementations on Azure or GCP.
Other than awful, unsuitable for production languages like ruby.
On the other hand, would you know the limitations of Dapper until your system grew and you found out that you really needed EF but because you didn’t know the tradeoffs you didn’t know what to look out for?
They will send your next of kin “thoughts and prayers” and you will soon only be remembered when someone sees your name while doing a “git blame”
A less morbid example, what I call the “are you replaceable test”. Can you can hit on your boss’s spouse repeatedly at the Christmas party and have a job the next year?
GitHub, Discourse, and Basecamp would like to have a few words with you.
I kid.
Sure, you wouldn't be as fast as someone who has worked with these tools a million times, and sure, that would matter if you're being hired on a three-month contract to build something and part ways. But if you're being hired to be a valuable contributor and leader at a company, this learning period is going to come out in the wash.
Let me give you an example: At my current company, by my estimation our MVP employee on the engineering side spent most of his career making video games, largely within the Microsoft stack. We do python, go, and React. If we hadn't hired this person because he had never used any of those technologies, that would have been, by a very long shot, the stupidest decision we ever made. This stuff just. doesn't. matter.
And at this point in my career I’m looking for lead positions. Would you hire me to lead your front end efforts?
(my area of expertise is enterprise app architecture/dev + AWS. As a developer I spent most of the modern era of my career working with Node, C# and Python).
You are right though that I wouldn't hire you to lead a dedicated front-end team. But I'd prefer not to have such a team to begin with. But I'd be happy to hire you[0] to lead a product team working on a product that requires a front-end to succeed. Either other members of your team will know how to make that part work well, and I would expect you to learn quickly from them, or I would expect you to figure it out and then teach the rest of the team.
[0]: I'm using "you" as a stand-in for someone with your experience, who is otherwise a good fit for the organization. I may well not hire you in particular and suspect you would not take a job from me in particular, since we clearly have very different philosophies on specialization vs. generalization and investment in employee training, such that we may not enjoy working together :)
The software dev job market is cooling down. Making good choices on what to build experience in is more important than it has been in recent years.
I think many companies, including mine, are thinking they have only a few spots to fill and a lot of candidates to consider. I know we consistently say things like “who will be productive quickly?”
The model I've seen at startups is an approximately two-year cycle of 1. raise money against a couple year plan of milestones, 2. hire quickly on the back of that raise, 3. use that personnel growth to hit those milestones, 4. go back to 1.
Importantly, the large bulk of the hiring happens around those post-raise points, when there is a couple years of runway. And the idea of startups is to be ambitious and forward-looking, not myopically churning on short term features.
I would submit that it's even more important for startups to be focused on investing in the right team during those scale-up periods, because many of those people are going to be the leaders during the next round. You want people who are going to be strong stewards of your business as it grows, not just people who see themselves as "react devs" or whatever.
I'd love to have someone apply to a .NET desktop app position with 5 years of solid experience building Java web services. I'd love to fill a Node.js web service position with at least someone who spent 10 years writing embedded C for home automation devices. Hell, I'll take a brand new CS grad who built a janky Unity3D app in their spare time, not because it was a school project, but because they just wanted to.
What I get is IT network technicians who took a programming certification, substitute teachers who 15 years ago did software QA testing, public policy majors who dabbled with Matlab or Python in grad school, boot camp grads who haven't touched programming again since they finished their 8 week course 10 months ago. People who have never had any experience with the care and feeding of any kind of software project that other people had to work with them on for any significant time.
I'll get 1 resume out of the batch (and they always come in groups of 10) that is just a software developer: for whatever N years of experience, at least the most recent .8N has been software. Then it comes down to figuring out if they were actually a contributing member or spent most of their time hiding in a large team.
We're all out here shedding a tear for you. Not too sure what you expect, as they say, the real talent doesn't need to apply to job postings and submit resumes blindly. With that said, is there anything in your .NET desktop job posting that would encourage a Java web service developer to apply? The first day of every month a bunch of people with widely varying backgrounds and experience post on this very site that they are seeking work... ever reach out to any of them?
I’ve been warming up my network like crazy over the past four months, preparing my resume and career document, etc. I keep my network semi-warm regardless.
When the day came and I had the offer to quit and get big check or stay, I chose the quit option, before my last day, I had one manager trying to create a position for me, a second round scheduled with another former company and a third and final round scheduled at a third company.
All based on networking.
It’s foolish in this market to hope something is going to happen quickly by randomly uploading your resume to an ATS and keyword stuffing your resume like an SEO technique from the 90s trying to juice your position on Altavista.
On the hiring side, a hiring manager also needs a network that they can call on when trying to find candidates.
I think there's a huge valley of difference between "no relevant job experience" and "real talent". I do a mix of job postings to stuff that looks interesting while also talking to my network.
I mean obviously it depends on a bunch of other stuff in the resumes and during the interview process. But no, it's not a huge advantage to know React or have done front end development recently, just because we do some front end development in React. It's like the tenth most important consideration for whether someone would be a valuable contributor.
> Learning a language is easy. Modern development requires knowing the toolchain framework, idiosyncrasies, foot guns, best practices, etc.
That said, I still nearly always hire for general skills and not specific technologies, as long as there is at least one expert in the specific tech under consideration on the team (which there nearly always is). And I budget anywhere from 3-6 months for a person to become truly proficient at a new platform technology.
Because of the stupidity of hiring and raise practices (not your fault as a hiring manager), you can get HR to open a job req at market rates. But it’s a lot harder to get HR to allow you to give your current employees raises to get them at market rate.
That investment is then lost because your employee is going to jump ship.
if someone gives you two years of good work and moves on because you aren't giving them what _they_ need, or because their father got ill, you still came out way ahead. you should be a human and accept that.
If I hired someone with the experience I was looking for, then they gave me 2 years of productive work.
Why would I train someone new instead of just poaching your developer at market rates?
streamlining onboarding and extracting the secret recipes from the seniors is really valuable
there is no better understanding than that gained by teaching
its clearly a higher risk investment, but often times that one super workhorse and brilliant jewel is the one that you helped grow
but yeah, I've had employees that just sat around learning the latest fad and left. it happens. but if it happens a lot then maybe you should look at your hiring and management
if I convince someone to come work for me, its not poaching. its life.
You as a hiring manager only have power of hiring and management. Your HR department at the behest of their management controls how much of a raise you can give your employees.
You can give them the meaningless platitudes of “we are family” for only so long.
Because you pay more, and still have the risk of less/negative productivity anyway? Who says experienced dev won't do 2 years of resume driven development instead? Who says they won't simply zone out and spend their last 6 months being poached the same way you poached them from the last company?
your argument works under the assumption that your experienced hire has no downsides, and there's no risk of upside for the less experienced hire.
and when I read it that way I agree. Some of the best devs I have hired had no prior experience in the stack.
I'm not hiring for Python or C#, I am hiring a software engineer and the skills I value are all transferable.
The language or stack is irrelevant.
A good lead knows the right questions to ask, understands they don't have all the answers and plays to their own and the teams strength.
Honestly the last thing I care about, especially here, is if they know the stack.
What good is a lead if they can’t answer technical questions and can’t help other developers with technical guidance?
What will it do for team morale on your iOS team when they know you bought in a “lead” who couldn’t actually help them with the tough technical problems?
I'm not saying this is right in all circumstances. I wouldn't do this with, for example, realtime embedded.
For what I operate in, fairly bland web applications and stacks.
It works fine, exceptions excepted.
I think that for architecting systems that's probably true, but as technology becomes more specialized and ecosystems become more complex it's harder for individuals to pick up and run with.
Consider if someone has written lots of PHP and jQuery
Now tell them to write a NodeJS server, React Frontend using NextJS.
It's not just "Oh I need to pick up ExpressJS" anymore. It's a whole beast.
Yeah the fundamentals stay the same. REST is still REST, SQL is still SQL, but actually writing lines of code is still a key activity of the job which people familiar with the technology will be better at.
Personally I run into this any time I try and write C#. There's a massive undercurrent of stuff that I feel I don't understand about C# and I bounce off that ecosystem every time I try
And you’re going to hit a brick wall at 100 mph thinking SQL is still SQL once you try to treat a columnar database like Redshift or Snowflake like you would a traditional database.
That would be an expensive lesson to learn on the job. That’s just one example of trying to pattern match based on what you know when you hit a new to you technology.
It’s like the old school operations people who study one course of ACloudGuru, get a certificate, call themselves “consultants” and duplicate an on prem infrastructure and internal process and their poor clients wonder why they are spending twice as much and not moving faster.
I will say that even moving from Postgres to MySql has a speed bump or two, so I completely agree.
Tech knowledge just isn't as interchangeable as hiring managers sometimes seem to think.
The lead may know less than them about some things. That's OK for us. But what's important is they know more than the team about other things.
For example, we would rather have a lead that knows when to say "How do you know this is performant? Show me." and understands statistics and how to read perf dumps ... than how to profile whatever PHP script or whatever hands-on.
Sorry that contradicts the black-and-white world view you're holding.
I also strongly believe good technical leadership is about accepting you know _less_ than a team, and being able to ask the right technical questions to the right people who know more than you to ensure the best outcome.
You can do that with a ground knowledge of the stack, picked up on the job, along with learning the application's code and architecture. What a good technical lead brings is a deep understanding of how to manage complex people and systems by having done so across different languages/stacks/architectures many times.
Why would I turn away someone brilliant at that because they happen to know Java but not Android development? That's the easy bit to solve.
The reason you would is because while I don’t know Android. I do have years of experience designing systems for field service workers where they go out on the field with mobile devices in places where they may or may not have connectivity. But they still need their applications to work and they work in a “semi connected state” [1] and be able to sync and handle conflicts.
Then you need to know whether the feature you’re going to spend man hours on will break App Store rules. Someone needs to know how long the process usually takes, etc. knowing how to write a complex mobile app is not “easy”.
[1] My four experiences with dealing with mobile implementations
1. Windows CE ruggedized devices back when trucks had satellite dishes on them to get a signal and some customers didn’t want the extra expense of early cellular data plans. These were trucks that delivered propane and other field service work to rural areas or they were in basements
2. Railroad car repairmen in a rail yard
3. Doctors in hospitals that often didn’t have great reception. I wrote the backend syncing protocol for the iOS and Android apps. But I knew the design constraints.
4. Home nurses for special needs kids and often the signal wasn’t strong at home or at the school when nurses would go to the school with the students. This was built on top of a third party forms engine. But you could customize it anyway you wanted using web technologies and it had an API where you could save local data and sync it.
I can tell a paper tiger from someone who just went through ACloudGuru and memory enough to pass an exam.
It is, maybe you aren't a good developer (yet). The more you do it, the easier it gets. It took me a good time to change from PHP to Python, but from there to Java, JavaScript, C#, Clojure and some 10 more, it only got easier. Toolchain frameworks, idiosyncrasies, foot guns, best practices also follow patterns and gets easier to learn.
All this stuff is the same as learning the details of the language. Once you know the pattern it’s not hard to use it in a context with incidental differences in details. It’s usually more than days, but can easily be weeks or months — it depends on how well you really know the patterns. If you really know them it is just days.
But being hired is a completely different thing. Hiring managers (1) don’t understand any of this, generally; and (2) in any case, have no way to directly determine whether a candidate really knows all the relevant patterns. They use past direct experience with the technology as an approximation (a pretty poor one, but it’s easy).
Personally, I’ve done many jobs successfully on stacks I didn’t have previous experience with, almost always as lead or sole. But of course, I got these jobs through people who know me, not a random hiring manager.
(BTW, the skills most important for a lead/architect type have nothing to do with specific technologies. You’re making sure the project/team/product/business doesn’t run into dead ends and progresses efficiently, daily, in the short term, the medium term, and the long term, and balancing their conflicting needs. Probably less than half of this is tech at all.)
In my time, I have been an embedded C developer, a kernel developer, MFC C++, then J2EE, then Mobile C# .NET, then Python we dev, Python DS, Python Scientific, DevOps, WebDev
These aren’t trivial projects, but entire systems, E.g. I solo built https://atomictessellator.com just to scratch my own itch learning quantum chemistry simulators.
I think you are 100% right, at about the 10-15 year mark learning new languages and tooling really is a matter of days, maybe a week if the tooling is very different. That’s 1 week from no experience in a language to “employable, productive member of a team”
At some point it all just clicks, I suspect the people above who are disagreeing and likely devs with maybe only 5-6 years experience who this hasn’t happened for yet.
BTW, I’m using the definition of senior developer as defined by large tech companies - the whole “scope”, “impact”, “dealing with ambiguity”, “leading initiatives” metrics not “I code really well”.
My experience on the enterprise dev side (1996-2020 and going back on that side now), is that titles mean very little outside of tech companies with leveling guidelines.
BTW, the last time I had only six years of professional experience was 2002.
The last time I only had six years of programming experience was 1992. By then I had done assembly language programming as hobby on four architectures (65C02, 68K, PPC and x86)
1. Working with external/internal stakeholders to define business outcomes and deal with ambiguity and doing project management - from my experience at AWS (ProServe) you can be really good at this with hardly any technical proficiency
2. Determining what is the right service or combination of services to use and the overall architectural design. I could do this without any specific platform knowledge - I know what type of database I need. I know I need a messaging bus. I know the trade offs of different types of technologies.
I was able to go from never opening the AWS console to working at AWS in the cloud consulting department within 2 years. But I sucked during those two years while I was learning the ropes.
3. Using the “right” one of the literally 100+ services and being able to mentor junior consultants and help them troubleshoot complex issues.
The 3rd bullet point is where you need someone who has the specific skillset.
My experience at the second bullet point is the downside of hiring someone based on “potential”. The CTO who hired me threw me at the cloud initiatives without experience and let me figure it out. But paid me $30K less than he would have had to pay someone with experience. He would have never been able to push through the 20%+ raise I would have been looking for when I left 2 years later if I had stayed on that side of enterprise dev/BigTech compensation side.
He definitely couldn’t push through the 50% raise I ended up getting at BigTech.
Now that I did my bid and the pay/bullshit ratio is going too much in the wrong direction, I can go back to my former company (since been acquired) and ask for about the same I would have been asking for three years ago (a lot less than I was making at BigTech)
I've long said, and would stand by: Programming/Development is logic; learn logic. Languages are just syntax; if you understand logic, you _can_ learn the syntax.
Taking concepts from one language to another shouldn't be an onerous task.
Of course, none of that means you'll get that _senior_ language -focused position, or any particular position at all.
But let's not act like picking up a new language, for a developer, is the equivalent of switching from development to medical practices, or even networking/system administration/etc.
Guess how long the learning curve was at my next job where I had the learn the intricacies of Win32/MFC, COM and DCOM, when to use which of the 8 different methods that Microsoft had of defining a string and how to safely convert between them, why my C++/ATL COM object kept crashing the other developers VB apps because I wasn’t doing reference counters correctly…
No, but you probably can in 6 months. Whereas if you hadn't even touched any language and UI framework before, it would have taken you a few years.
Does it have to happen "in a few days" to matter? Or the hyperbole is to argue that past experience with different languages and their concepts, and SDKs and their architecture doesn't help going forward, because each of them is some kind of unique snowflake?
If you havent' done that with any technology for a full 15 years in some domain, and so can't adapt to the current framework used quickly, it's not like this refutes the parent's comment.
The parent described a situation where you serially learn new technologies and move on, which means there's a lot of concepts that transfer fine, and things that gradually change that you can more easily pick up in much smaller time. If you had done Android development in 2018, it wouldn't be that different to 2023.
I'll wager that you can't. Android development is Kotlin nowadays with Jetpack Compose.
Efficient, hardly. Not "in a few days"
You can become whatever you want to become. Hiring is a totally different thing altogether.
Did A for B years is how you get hired. Not what you can do.
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.
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.
Working with senior devs who have only been doing it for 1-2yrs is where you see the small productivity differences that aren't simply being a newbie programmer.
Let's be real here. What percentage of companies are in dire need of 'experienced [language] programmers' who know these specifics that haven't already been set by previous devs or have another developer present to make the decisions? That's a tiny, tiny percentage of the entire job market, with much of the demand coming from companies with incredibly shaky foundations.
Almost the entirety of this is a luxury problem put on the individual. The moment the job market says they can't demand it anymore, they won't.
Last week I talked with a guy who was pitching to rewrite their entire product in another language because he never heard of python GIS ecoshst and was doing spatial calculations by hand. Would cost hundred of thousand euros.
The HN bubble strikes again.
However if I need to do quiz, or coding exercise, closed book style, only Java and C#, to a lesser extent C++, would be a viable option for me.
Extremely deep knowledge of a language is very rarely needed, even when it is as long as you can somewhat vocalize the problem it’s just debugging
It isn't 2020 anymore. No. No, one is going to hire someone that is going to learn "react on the fly".
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.
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.
I never have any clue what this retort means: when exactly are semantics (the meanings of things) not important?
> Ford motor plant closes and the only places hiring are software shops, you'd also be "fucked".
That's one hundred percent true but the difference is I don't see assembly plant workers going around claiming they learn technologies for breakfast (or lunch or dinner).
arguing over meanings when we should understand the meanings tends to mean you're nitpicking instead of clarifying. There's clarification and then there's bike shedding.
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.
Flutter itself is slowly reaching maturity on mobile and is already quite good, if you can live with a few compromises.
JSX is conceptually the same but somehow seems easier to read. Maybe it's the close tags?
Its Flutter:
``` class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { var appState = context.watch<MyAppState>(); var pair = appState.current;
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
BigCard(pair: pair),
SizedBox(height: 10),
ElevatedButton(
onPressed: () => appState.getNext(),
child: Text('Next'),
),
],
),
),
);
}
}
```versus SwiftUI:
``` struct MyHomePage: View { @StateObject private var appState = MyAppState()
var body: some View {
VStack {
BigCard(pair: appState.current)
.padding(.bottom, 10)
Button("Next") {
appState.getNext()
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding()
}
}
```versus React Native:
``` const MyHomePage = () => { const [pair, setPair] = useState(/* initial pair /);
const getNext = () => {
// Logic to get the next pair
// You'll need to implement this function
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
{/* Replace BigCard with appropriate React Native components */}
<BigCard pair={pair} />
<View style={{ marginVertical: 10 }}>
<Button title="Next" onPress={getNext} />
</View>
</View>
);
};
```That said, SwiftUI is clearly the supreme leader in this declarative approach.
The Flutter looks the best to me, out of those, hands down.
1) SwiftUI feel more like jquery so that you can chain styles like padding, color, font etc. Because of that :
- code completion just works and is fast you just press a '.' and see all choices
- it's easy refactor the code if you wan't to change styling or layout
2) Flutter abusing too much composition and adapter pattern to the point they using refactoring in VSCode to add simple padding etc. Just have look at this official GIF from 'Test Drive' - how many times 'down arrow' got pressed:
https://codelabs.developers.google.com/static/codelabs/flutt...
Now imagine designer come to you and telling you we change layout and styling slightly - in flutter I feel it's easier to throw away such layout code and start from scratch than trying to refactor it. In swift UI you just change VStack to HStack, change maybe some parameters and move around chain of .padding().color() around and are done with it.
What would improve flutter readability is extending Dart to have something like Swift:
- first parameter can be marked as optional specifing parameters name such as '_ child:'
- escaping parameters in Swift so you instead of doing ... children: []) you can just close previous Widget and make also 'children' parameter name optional so that you can write :
Row(.min) { ElevatedButton( onPressed:() { appState.getNext(); } ) { Text('Next') } }
- similar enum behavior like in Swift when you can just type '.red' instead of 'Color.red' - this is even more useful for more nested enums.
edit: I gave up with proper formatting of code here in HN, super annoying.
Is this supposed to be a bad thing? :(
Code generation (and modification) tools are there to help you. You can choose to walk everywhere but once the car becomes ubiquitous, why walk?
* The support for tagged unions (Rust style enums) is pretty nonexistent.
* `int` is 64-bit but not on the web. I totally get why they did that and hopefully they can fix it with wasm at some point but it's very annoying for interop with languages that have the full range of int types.
* As many many people have said, it's quite verbose to make dataclass style types.
But it still deserves to be way more popular than it is. It's basically what JavaScript would be if it was designed by someone with taste.
For the record, Swift suffers from this problem as well. Kotlin only avoids it because of Java interop, although even this becomes complicated because of Google’s half-assed implementation of Java on Android.
I think this is one of the biggest reasons to reach for JavaScript instead. It has a lot of flaws, but it has a huge ecosystem that works nearly everywhere.
Compiles to Wasm and can work with other compile to wasm languages.
Has quite good support for C, C++, JS, Swift, Java and Rust interop where they have tools that will write all of the glue code for you.
Also has decent gRPC support meaning you can use any other language that also fits that category.
It’s a small Dart ecosystem but it’s fundamentals are great and it’s extension points are much better than you will likely find elsewhere.
It's not a bad language. It just lacks some needed features. They'll probably get implemented over a span of a few years.
Ecosystem is small, but at least there's FFI interop.
It also has some baggage from it's early days when it was meant as JavaScript replacement. Since we now have WASM (and soon WASM-GC) I think it would be best, if compilation to JS would be dropped, so more low level features can be implemented.
FFI continues to be a disaster (to be fair, this is not unique to Dart/Flutter).
The biggest problem with any cross-platform system on mobile is always getting performance out of the native interop. It's often easier to ship a computation to a server on the web and ship teh result back rather than execute it natively on another thread on the bloody phone. It's infuriating. We have a zillion cores, and every single phone OS tries it's damnedest to prevent you from using them because, heaven forbid, you might actually use up some of the battery. The Horror! The Horror!
The cross-platform systems for phones are really good at doing puzzle games or CRUD. Step outside of that and you enter "Here Be Dragons" territory very quickly.
I agree. The team behind the language is the real problem.
> It just lacks some needed features. They'll probably get implemented over a span of a few years.
For years they have dismissed calls to add multi-threading in the language, despite it being sorely needed for anything computationally non-trivial (isolates have ridiculous overhead).
When Flutter came around, for whatever reason they decided to pick Dart, the original prototype was in JavaScript (the official reason being it wasn't good enough given the language semantics), and Dart 2.0 effort started, with the language gaining strong typing (it was dynamic with optional typing in Dart 1.0), and AOT compilation support.
Having Flutter in the toolbox is quite a good thing, unless there is nothing else in there. Then you are in trouble.
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.
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?
It’s better than non native for performance and experience but many companies will of course care more about the money saved from a sub native experience with fewer developers.
I currently work at an agency doing Android apps (not a typical pump and dump agency mind you, I've been the lead on this single project for 5 years and we've had them as a client for 8+), and I'm so happy to see our client buck that.
They've had us on a native app that we've been supporting for the entire 8 years, and had deep technical issues from before us ("lets reinvent the web browser for UI"). They had a secondary internal team (known to us, no hidden surprise, you're gone stuff) working to replace us with a greenfield cross platform app (I think react native). That project went on for a year before they cut their losses and said "cross platform can't be good enough."
We're now in the planning phase of a complete greenfield rewrite of the existing app to take advantage of Compose + Kotlin, and ditch 12 years of tech debt and I'm practically ecstatic.
I'm thinking more smallish companies with simpleish apps mostly (with Flutter anyway; I've never been fully convinced by React Native)
I say this as someone who has mostly done Android dev since '09.
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).
it's arguably one of the strengths of Flutter, regardless of where you come from there's nothing esoteric to it, so it's not like you learn the wrong thing. Learning Programming isn't about memorizing APIs or libraries, it's about concepts.
If you've done Flutter for several years your experience translates just fine to say React native, you just gotta learn Javascript
Maybe not, but interviewing often is.
Out of curiosity, how long would it take a flutter dev to become productive in some other stack?
It's not that competent engineers can't become quickly productive in a new/stack language, it's that business don't understand that and/or don't want to risk it with switchers, and so prioritize hiring only those already experienced in that stack, creating employment bottlenecks where there's simultaneously a shortage and enough people willing to switch.
Same when talking to recruiters: "oh you only have experience in X (which is similar to Y), sorry but the hiring manager said (s)he wants someone with at least 3 years experience in Y".
Your only escape is having a solid network so you can push your resume directly to hiring managers who understand technology and your adaptability, and this way bypass the hiring shit-show.
1. You’ll need to put whatever is needed in your CV to pass through HR
2. You can explain yourself to the actual tech people who interview you in the next stage. For example, if you know Ruby and RoR, but there’s an excellent opportunity to work in a cool product for a company that does Python and Django, well, apply! Obviously you’ll spend a couple of days with Python and Django and notice the similarities and differences with Ruby and RoR. You will add to your CV the keywords Python and Django and you’ll get pass HR (if HR asks you about your experience with such tech stack you can always say that, indeed, I have plenty of experience with MVC web frameworks and blah blah blah). When you pass to the next stage of the interview and get to talk to real engineers, then you can explain that you have many years of experience working with RoR and that learning Django will be a pleasure.
What else is the candidate lying about?
Of course that depends on average expectations. Some people may learn and do and relax and still outperform if these are low.
From what I understand modern Android has become much more pleasant to develop for.
I started with Blackberry SDK plugin with Eclipse, then to Android, Windows Mobile (UWP) and iOS in that order. Majority of those projects I have worked are written in native. It's not that hard to switch since you can find familiar concepts in each frameworks and stacks.
Of course, I have been also part with cross-platforms solutions but it just cannot cope up with the yearly updates and deprecation especially if your apps are critical.
The person with one year of experience selling cellphones who now does the phone screen needs to see the exact tech listed on a resume or they pass.
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.
"I built X system in [somewhat adjacent domain]", "[hyper specific domain] is a subset of my work in [more general domain]" etc.
May be this doesn't happen in FAANGS but I see it is the usual thing around.
At the same time, there is definitely some grandeur in top companies in being "the C++ guy". Or The COBOL guy: https://www.acsu.buffalo.edu/~uoi/Jokes/Cobol.html
And I'm saying this as somebody who worked across a lot of tech stack levels
from writing c# backends + even c# webassembly running in browser (high level), to some dekstop, to background workers / cli tools, to having my own OSS lib, to compilers (using llvm), to uefi / firmware C development.
Sure, it is interesting to work across all those levels, you get a lot of understanding how things are connected or you're just aware of how this work, but very often this is just shallow knowledge. Strong knowledge and experience requires time. If you switch, then you ain't gonna learn.
When trying to find a job there's almost never such a overlap which requires those.
https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...
> You are not defined by your chosen software stack: I recently asked via Twitter what young engineers wanted to know about careers. Many asked how to know what programming language or stack to study. It doesn’t matter. There you go.
> Do Java programmers make more money than .NET programmers? Anyone describing themselves as either a Java programmer or .NET programmer has already lost, because a) they’re a programmer (you’re not, see above) and b) they’re making themselves non-hireable for most programming jobs. In the real world, picking up a new language takes a few weeks of effort and after 6 to 12 months nobody will ever notice you haven’t been doing that one for your entire career.
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.
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.
Any platform that tries to support web, mobile, and desktop all at once, of which there are many, are destined to this fate of being spread too broadly and thinly.
Stadia and Google Pay are the only consumer facing Google apps I’m aware of that are made with Flutter.
Fuchsia is an OS that is also using Flutter for their entire UI layer.
I think there’s more a case of there isn’t an argument for doing but rewrites just because Flutter is now a thing but in a greenfield scenario it would be a serious contender
But that’s not demonstrating the promise of a great cross platform experience.
I have some context as to why it’s both a wrong and misleading statement.
When it came to the biggest money maker of the entire business this is what they picked. When it came to a new greenfield project for an entire OS… this is what they picked for the UI.
The statements you made about “the lessons they learned” is just some stuff you made up and isn’t actually supported by facts.
Can you afford to spend money developing same thing twice forever?
Similarly there were 3 iOS devs.
The feature set was enormous but we did fine.
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.
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.
All of them got productive rather quickly and had PRs shipping to prod in the same week, if not within a couple days.
I’m not saying it _will_ go as smoothly for anyone else, but if you have the right environment and pick the right people, as an employer you’re better off being flexible with experience.
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.
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.
I've done many apps in Electron, React Native & native iOS and at least on a technological level I prefer the devx of Flutter.
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.
Not everything lasts 40 years, but many things last more than 3-5.
But Java 2023 is quite different from Java1. The tools you use now are different (unless vi) You have had to learn a lot of new technologies, frameworks, syntax to keep up.
PHP has also gone through so many changes that it is near a different beast these days than when it first appeared.
So if you had relied on your skills you learn as PHP 1.0 and Java 1.0 today you would not be very productive.
I've watched people go through Flash/Silverlight/Actionscript, multiple MS tech stacks, and many many other promising tech. Many have had to large scale reinventions of themselves and cram 'new to them' tech as the old stuff has gone away.
It's definitely easier to evolve with a tech stack over the years. You get a better sense of idioms, best practices, etc. that is hard to replicate overnight.
And yeah, some tooling is different over the years too, but yeah, vi still works :)
Shiny new 'hey look at this' ideas can pop up in newish langs, but diving deep in to them isn't often the best path for most people. The truly good and impactful ideas tend to get recognized and adopted in the more mainstream ecosystems over time, giving you most of the benefits without needing to throw out much of your experience.
Actually it won't, past Java 9, as after the modules introduction it was also decided to take action on deprecation, now things get really removed after a couple of releases.
It is never going to be beyond a niche thing, unless Google does indeed ship Fuchsia in large scale.
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.
There’s barely any Flutters devs out there, definitely few with Dart experience. You’re dooming your project to die based on churn, so definitely a bad business decision.
There’s thousands of Reacts devs out there that picking RN will guarantee that you have your “one codebase” and will be able to support it long term.
What’s the benefits of Flutter? A nicer dev experience? No customer cares about that.
And you obviously don’t care about the best possible user experience or you would’ve gone native.
And that’s even before the whole “one day Google will wake up and kill it off on a whim”.
But the real magic comes from the tooling. I've also done some Android development, but Flutter's iteration times were incredibly fast. This combined with the lack of aforementioned CSS Jank made it feel like I could actually be productive without getting bogged down in all sorts of weird layout edge cases.
Also, Google support in theory means that there's (relatively) little risk of abandonment.
>What’s the benefits of Flutter? A nicer dev experience? No customer cares about that.
You're asking a dev why they like flutter, not a businessman. Why should I take into account customer care when determining my tooling? As we both agree, they don't care anyway. If I made a usable website in Microsoft Word, then mission accomplished as far as the customer knows.
Dev marketability is important as a professional, but TBH you couldn't pay me to be a web dev to begin with. So that's not a factor in my answer. The only reason I'm using React right now for some current hobby projects is due to the lack of maturity for Flutter Web (at least, 2 years ago. But nothing in the current docs make me think it's better today".
>you obviously don’t care about the best possible user experience or you would’ve gone native.
native doesn't guarantee the best UX. Even RN's maintainers break their own established rules on their websites. don't take my context menus and navigation away from me without a very sensible, intuitive reason (e.g. Google Sheets)
I don't know, Google's known for abandoning things left and right. They bought Fastlane and proceeded to abandon it.
> You're asking a dev why they like flutter, not a businessman.
It's more of a comment on the original post where OP is looking for a job as a Flutter dev - why would anyone choose Flutter to base their product on, if they can't find devs and all the other reasons I mentioned.
As a dev - I really like Flutter - no doubt there, but it just doesn't make a lot of business sense due to a chicken and egg problem and likely won't for a while.
> native doesn't guarantee the best UX. Even RN's maintainers break their own established rules on their websites.
I meant native as in Swift and Kotlin - even splitting it in those two avenues makes you think more about the respective platforms and their expected quirks. I've yet to see a RN and Flutter app with a live activity, for example.
All the sports apps out there that are crossplatform don't have a widget, etc
house <- resource accumulation <- in-demand skills <- study
I learn what is in-demand. And then I acquire those in-demand skills. Then I practice those skills to earn the money I need to attain my goal.
But that's just me-- my goal is to earn money quickly.
This is why I focus on in-demand, popular, low-barrier languages & frameworks: python, javascript, SQL related ones.
Having said that, I have just recently got into Flutter/Dart and I found the experience quite enjoyable and the resulting app very polished. From the tooling to the language itself and the Flutter framework - it's a joy.
- prefers to work in a Unix-like environment (e.g. Linux);
- prefers to code in Vim;
- prefers to have a single unified codebase for different mobile platforms;
- prefers to test applications on a Linux machine running an X server.
Your questions sound like a plumber asking how can he repair computers with a wrench and a saw. Don't get emotionally invested in tools.
Apple won't allow you to do that. Any binary submitted to their app store must be built using Xcode running on MacOS on genuine Mac hardware. It's a tax they collect from their developer community; if you don't want to pay, you won't get to play in their walled garden.
Android is also terrible. As an Android developer it's the absolute worst when compared to iOS development. Google is an Ad company, everything else it does is a hobby.
Thankfully Skia+React metaphors are being actively developed in more mature and healthy language ecosystems.