When I think about it, the main difference between a native speaker and a fluent speaker is how much time they spent using it. A native speaker breathes the language, while the fluent one struggles because they use it rarely.
When I program, for instance, I'm not using English or Brazilian Portuguese (my native language). I'm using, in my head, a language my mind made up for me, with understanding of the abstract CS concepts. My mind translates the syntax I'm reading to this internal language, and translates this internal language to syntax I'm writing or reading. That's why I feel people have a difficult time going from imperative programming <-> functional programming, because your internal language must evolve and change to get used to these new concepts, and that takes time. It's not just syntax.
With this out of the way, I don't know the current scientific view on it, but I think that the biggest challenge for adults learning a new language is not a technical one. It's an emotional one.
Adults don't think like children. They are afraid to explore and make mistakes, because they think will be judged by others. As we grow, we tend to shake off our child behaviors, and become closed in our bubble and "the box" we created for ourselves, which becomes our reality and our world. And this world says that no, you can't become a native speaker in another language after you grow up. Then, you use your native language as a crutch instead of living this new language you are learning. You try to translate words, you try to map the concepts from your culture to this language (language and culture seems to be so intertwined -- what is "idiomatic Rust", after all?). You want to communicate the way you communicate in your native language, and it frustrates us so much when we can't. A child is not having any of it. He or she is just playing, enjoying the process, and learning day after day.
Right now, my co-founder and I are preparing for a YC interview and it's funny trying to explain, in English, concepts that we have been explaining in Portuguese for years. We don't throw away all our existing knowledge. We try to map our current vision, in Portuguese, to English. Sometimes it works ok, but sometimes the message doesn't get across.
I studied Japanese for a few years using Anki and WaniKani, and the results were amazing. When I wrote Japanese, people didn't believe I was studying for only months and could write what I wrote. However, I didn't do anything special. What I did, or rather, what I didn't do, was try to translate English or Portuguese into Japanese. I used Japanese. With the concepts the Japanese language gives us. We could say... idiomatic Japanese. But, when it came to speaking... oh boy, was I a mess. So afraid to say something wrong, that I couldn't even speak at all! And as Portuguese has all the phonetic sounds the Japanese language uses, my pronunciation was very good. Sorry for the native English speakers out there learning Japanese, you got the short end of the stick, but hey -- at least your countries are rich!
When it comes to English, my reading and writing ability is very good, but when I try to speak, what trips me up sometimes is pronunciation. My mind wants to say something, but when I try to use the word I'm going for, I realize I have no idea on how to say it. And then, paralyzed by my inability to do what I wanted, I become a deer in the headlights. An emotional problem, not a technical one, because I could just use another word. To improve this, I'm thinking about practicing shadowing daily.
To sum it up:
1) Do you think we can become native in another language after we grow up? Do you not? Why?
2) Does someone have tips on how to improve pronunciation? It's not that bad, it's just a word here or there, but I do have a small accent which I'd like to shrink even more. Maybe even learn how to speak in a British accent... you folks like that, right? I reckon it's rather charming. :)
Two quick examples, that I've noticed over the years.
Most non-native speakers pronounce the Italian ciao as "chow". But I noticed that a woman in Capri pronounced it as "chah oh". Not as separated phonemes, but as a smooth, quick transition from one to the next.
Similarly, most non-native speakers pronounce the French oui as "we". Instead, it is pronounced as "oo ee" - again, a smooth, quick transition from one phoneme to the next.
(I'm compelled to confess that I only speak English. But I have some understanding of Romance languages (and took a few years of French, decades ago). And, like many other programmers, linguistics in general is an interest of mine.)