What (almost) 2 years using Flutter had taught me
It was a long time ago since my first Flutter’s hello world and from that day until now, a lot of things has changed, as a developer and with Flutter itself.
We all had a start in our careers, mine, of course, it wasn’t with Flutter, as I wish, but, learning other technologies and never stop trying became an effort for me and my company.
In 2017, I was at college, had just arrived, and knew almost nothing about mobile development or how a tech company worked, it was all new and exciting. At the second semester, I’d got an idea of a product, a silly one, but in my head it was a breaking changing app, a revolutionary product. No. It was just another app among the others on the market.
I always were very stubborn, didn’t allow a NO as an answer and persisted with my idea. Before my day’s last class, me and a friend, who are my partner at my company, we decided to look and talk with people who have already started some business while was at college. Then we found one! It was a teacher of ours and was a very cool guy, very modest and simple which made us go talk with him.
Arriving at his office, we started talking about technologies, business and after started telling him my idea, he conviced me in very different ways that was not going to work as I expected and he has proved it as well. Of course I was upset with the feedback, but, this happens, we need to have some ups and downs in our lives.
Then, me and my friends started to looking out for more ideas, more projects, build a portfolio but… In what stack? At the time, mid-2017, we didn’t know about Flutter or that Google was developing/ had developed a SDK for mobile. We’ve had a few market options like: Native android, Ionic, Cordova, and of course, the market’s favorite, React Native.
We have analysed every one of them and we chose React Native as our main stack, after all, as everybody say, it’s a cross-platfom framework, works on both Android/iOS and of course, the very good-old-motto was applied:
Code once, run everywhere
Well, that motto didn’t work out for us as expected. First of all, we were expecting the same components we saw on the emulator to be shown on both platforms, that didn’t happen until we found a library that build components using another UI abstraction for it.
Second, the learning curve for a beginner was a bit too harsh, the documentation was not helping us at the time and I’ve felt most harmed than helped, because I was/am the front-end at the company.
It’ll be a third point in just a second.
All of that has been overcome after a certain while, it was the only tool that fitted our needs, so, let’s get it on.
We have managed to build some internal products, mostly to build portfolio, learn and gain skills but nothing too serious like a production-ready software, we were only learning and trying to get some money or be hired by someone.
On June 23rd (2018), my birthday, a unusual event occurred, beyond my birthday. Me and other 2 friends were trying to upgrading a internal product with some HTTP requests, and we were using Axios for it, so far so good, right? For me it was OK too, but then something weird happened, we got stuck in a GET method, a very simple get method using some generic fake data API, just to test it out, but nothing worked for us that day.
My friend, company’s CTO, tried to figure it out after I tried for 3 hours and fell sleep in the couch, when I woke up at about 5am, he was still up and very angry and then I asked him what happened. He told me that Axios was outdated, and that’s why wasn’t working as expected.
It was a very sad day, we have all got a bit depressed with the result and we thought to give up and focus on college again. Since that day we haven’t code anything more. But, just like a magic, something happened, in early July we received a call from a entrepeneur which was interested in developing an application with us, of course we got very excited, it was gonna be our first project and a real one.
We talked for at least one hour with him and, at the end of our call, he made a peculiar question for us, he asked if we have already heard about a new techonology called “Flutter”, at that time we have only heard and haven’t coded anything at all to know more, we said “yes, but we have never done anything with it”, so, he gave us one month of full practice to adapt to the language and syntax.
At the same night, we bought a Flutter course at Udemy from Stephen Grider and it was phenomenal, everything was so smooth and easy to learn, we haven’t have any difficult with the language and our learning curve was at the top.
Fast fowarding this month, at August, we have had finished 50% of the design he told us to do and we didn’t have officially begun yet. That’s crazy. I have never had this experience with any other language or framework like I had with Flutter & Dart.
Unfortunatelly this project didn’t launch because some internal problems with the executives but it was a very good and practical experience that we had.
In mid-August we were hired to develop another project, at first, it was going to be developed in React Native, but, since our very successful feedback, we have told him about Flutter and the smoothness and he got very excited and let us to use Flutter.
Oh, PS: Flutter was at 0.5.3 Beta version at the time.
We have spent one year developing this project and particular saying, was a great improvement in my carreer, but of course, it was not happy all the time, somethings I got a bit struggle, basically because I didn’t had a variety of content like we have today, if you wanted to go fancy, you are gonna go on your own, because almost no one was coding with Flutter only a few folks and witha little few examples.
You guys now can learn managing state with BLoC much easily, there’s a lot of content, a library to abstract all the boiler plate, but, I didn’t get all that happy path, I’ve managed to learn BLoC, step-by-step, for among 2 months at least, to learn well, that’s why I have written this article, to spread the knowledge and make and easy introduction for new users.
I can consider this two/three months as the most satisfy and yet, most overwhelming, because we were at college yet and we were dealing with real world projects and real world deadlines, so, was tough but we managed as well.
After dealing with state managing, everything became a lot easy to do, the most difficult part was done and I could focus on learning more about the SDK and that’s what I did. Since the beginning until now, I’m impressed how I learn something new from Flutter at almost every week now, it’s like I’ve started two weeks ago and there’s a lot to learn yet.
My particular feedback about everything that has been through since mid-2018, where I started with Flutter:
- If you want it, you can do it;
- Don’t give up because you got stuck at some problem or implementation;
- The language is great;
- The perfomance is outstanding
- Productivity is always at a high scale
- Less and less boiler plate then the others
- Goodbye npm-install
- A very richest documentation
- Very receptive community which is growing every year ❤️
Talking more about what I’ve did with Flutter, me and my company had built two urban mobilities apps, using WebSockets, multipart requests, very fluid animations, like Uber using Flutter, unfortunatelly both only work locally now for testing, but it was a great surprise to see how Flutter it well built and made it easy to build beautiful and fast apps.
I can’t imagine what Flutter can’t do, because we’ve did (almost) everything we could think to push the SDK to the limit and we always get very impressed with what we can achieve every time.
All of this feedback and knowledge had gave me opportunite to speak for some audiences at my city, a lot of meetups and even at our GDG DevFest to speak about this great tech and for that I’m really grateful for all this that’s is happening.
However, this fires up my teaching skills and thanks to that, I can see that my path it’s not write code forever, but teach others and teach about Flutter, not because it’s the technology that I use at my company or something else, it’s because I know that’s worth it and if it’s worth it, I’m going to share my knowledge, the new folks don’t need to take the harsh path, I’m here to teach them.
To finish it up, I learned a lot of things in these years, but with thing that I’ll carry along side with me is that you CAN write good and easy software mobile projects and won’t need to write a lot of initial boiler plate setup to get stuff done. Just write and have fun.
If you’re a new user, just started learning, don’t be afraid, the community, documentation, support are all great, we’ve got a lot of content such here and on YouTube and more of it are been produced. If you’re an “old” like me in Flutter, I’d like to see your comment and share your experience with us.