Every journey begins with one step
I took that first step of my Flutter Development journey, which actually felt more like a leap of faith in December 2019. At that time, I reached a point in my life where I felt frustrated that my efforts weren't producing the desired results.
A decision had to be made, either I make a career change or figure out a way to make this software engineering thing work out. Well, turns out that I managed to do both of those things within a year :)
Let me share with you :
- 1. How I learned the basics of Flutter in 1 month
- 2. The apps I made throughout the year
- 3. How I got my first full time contract
- 4. Conclusion
It wasn't hard to find resources to learn Flutter at the time seeing that it had reached the first stable version. The tricky part was finding something with a learning approach similar to the Android courses on Udacity that I had become accustomed to.
Fortunately I came across the Complete Flutter and Dart Bootcamp by Angela Yu . The curriculum included learning Dart from scratch and building up to 15 apps with Flutter. Consistency was key, spending about 3 - 6 hours a day watching the videos and completing the challenges. The reason why I decided to pay for a course instead of learning it for free on YouTube was because you're more likely to take something seriously once you spend money on it. This helped me to fast track my learning and stay motivated. By the end of the month I had completed the course and later received a certificate :)
Now the hard work really begins, putting what I've learned into practice. The goal was clear, make at least 3 solid apps to show my skills in a portfolio. My hope was that I'll be able to work on Flutter projects for clients or secure some sort of contract work. You'll notice that I posted almost everything that I made on Twitter. Documenting my journey helps me to see if I'm making progress and serves as a reminder of my capabilities. My contribution in the Flutter community led me to becoming one of organizers for Flutter Zimbabwe and Flutter Africa
At the start of the new year (2020), I got into grocery reselling and decided to make a companion app to place orders for items. Little did I know that in order to create an Add to Cart feature, some sort of state management needed to be used. So that was a set back, but I got to learn how to use packages like carousel_slider and make a horizontal ListView with Firebase data.
Things started to get interesting after doing some tutorials. Finally made an Add to Cart feature in a Sneaker Shopping app by using Provider, some dependency injection with Get It and used an architecture similar to MVVM.
Came across this clean UI for a Plants App and I had to make a UI Clone with Flutter. Used Stack and Positioned widgets for the first time in this one.
This project was fun as I created a GridLayout and used the Square Payments package along with the backend server to handle payments.
Made a code sample for creating an onboarding flow for welcoming users.
Took a different approach with one. Using the Shrine sample app as the base, I made this Cosmetics app that integrated all the previous features of my other apps. This was a good lesson in going through a codebase that you're not familiar with while adding features as you go.
Decided to hop on the Flutter Web train by making a portfolio site. The process was the same as making an app really, although you need to keep in mind responsiveness for different screen sizes. Sadly after deploying, my site was very slow. My guess is that my images were not optimized and probably needed to improve the performance of my code.
Participated in the first Flutter Zimbabwe Dev Challenge by making this Login Template with Firebase Auth. I paid a lot of attention to detail in the design here, especially for styling the TextFields.
This was a hectic month. The Flutter Zimbabwe Organizers came together to participate in the Hack4Covid hackathon. It was a first for me as I had never been in a hackathon, but nonetheless it was an awesome experience collaborating with other devs on the project.
By this time, the pandemic was in full swing in my country. We've always been encouraged to look for solutions to our problems, so I came up with an app idea to connect people with their local hair dresser. In about week, the Sika App was born. A simple UI integrated with Firebase as the data source.
A lot of time and effort went into this. From making pitch decks, interviews with tech publications to building the entire app landing page, this was essentially my first go at building my own startup. Things didn't really work out though as integrating local payments in the app wasn't possible at the time. I have no regrets though as I learned a lot about how start ups operate.
Gave my first Flutter talk at the Android 11 GDG Harare Meetup
It's that time of the year when everyone comes together to contribute to the Open Source Community. During Hacktoberfest, most of my contributions were made to the Appwrite.io organization which is a great alternative to Firebase.. My login template was modded to suit the Appwrite library and I made a social media app using CRUD operations with the Appwrite SDK.
How I got my first full time contract
Sometime in June, one of the Flutter Community members referred me to the boss of an agency that he worked for. They needed someone that was experienced with using Flutter that could join the team and start working on some projects. The boss emphasized that they wanted to use Bloc for state management and to follow a Test Driven Development approach. These were areas that I wasn't so familiar with, but I was willing to learn.
In July, I started my first role as a Flutter developer :) I'm grateful to the people that put in a good word for me, it just goes to show that your network can help you get opportunities but you also need to put in the work to show that you are competent.
Time was mainly dedicated to work as we had daily stand up meetings and had pressure to deliver on a daily basis. This meant that I had less time to focus on personal projects and other hobbies. I was getting a lot of experience on the job as I worked with other talented developers that helped to build out features.
It wasn't all rosy though. . Burnout started to creep in and frustration too as my salary was often late or less than the agreed amount. This lead to series of desperate decisions where I started applying for other jobs and working on some side gigs. In my mind I thought well, it's better than nothing at least I'm getting something, but I wasn't happy. To my surprise I was promoted in December to be the Lead Mobile Dev on the Ciibo Driver App where I helped to bring the app to market by adding features to improve stability.
Things seemed to be working out. . . But things are not always as they seem, which I soon realized. Stay tuned for the next edition of this series to find out more ;)
Overall, I would say that my first year as a Flutter Developer was very productive. Not only did I learn a new skill and make a span of apps, but I also got involved with a community that was enthusiastic about sharing knowledge and helping others succeed in software engineering. The main takeaway is that putting yourself out there leads to opportunities. I know this can be challenging, but do whatever works best for you. My hope is that my experience will inspire someone to step out of their comfort zone as that is how you will grow as a person. This is only the beginning and I look forward to improving my skills as well as giving back to the community :)
Enjoyed the article? Follow me on Twitter