Having read two chapters of “Think Like a Programmer: An Introduction to Creative Problem Solving”, I have an appetite for more. I already possess some good cognitive skills for problem solving, but this book offers opportunity to further develop my capabilities. I’ve previously undertaken a generic Neural Linguistic Programming course, which introduced me to a variety of effective problem solving techniques, but seeing these, and more besides, applied within a programming context is really helping my coding progress.
Being relatively inexperienced with object orientated programming, expanding my problem-solving skills will expedite coding advancements, and increase my progression rate along the Flutter development learning curve. I will read the rest of the book and apply the concepts to my coding practice, and discussing the content with study group members who have read it will also be useful, to reduce the thinking time required to solve problems and make decisions in a coding context.
So I’ve put together a SMART goal:
Specific:
I will develop my problem-solving and decision-making capabilities bu applying the concepts from “Think Like a Programmer: An Introduction to Creative Problem Solving” to my coding activity.
Measurable:
I will assess advancements in my heuristic approach in coding situations, based on my ability, and thinking time required, to identify and implement effective solutions.
Achievable:
I have the book, so the only constraint is time. I will take the book on holiday in May, so there’s plenty of time to read it.
Relevant:
Improved speed and effectiveness in solving problems and making decisions will have a direct positive impact on my app development capability.
This course is exactly what I need in order to commence my Flutter development. I’m only half way through, so far, but this is enough to convince me that Flutter is indeed the best way for me to proceed.
There are step-by-step instructions for building a number of simple apps. Although I am copying the code provided, it is helping me to gain an understanding of how the Dart language is used to nest widgets in order to build up screen layouts. Here are photos of the two apps that I have built with this course to date:
A basic (non functioning) pizza ordering app
A basic (functioning) journey cost calculator
The tutorial uses Visual Studio Code as it’s IDE, whereas I am using Android Studio, due to my familiarity with it. There have been a few instances where I’ve needed to use Google to find the AS equivalent of a VSC keystroke or function, but on the whole, it hasn’t really posed much of an issue.
The tutorial also uses an earlier version of Dart. I came across a situation where a void class was used in the tutorial to return a null response, which worked fine for the instructor. But when I came to run the code, Android Studio flagged an error. A little research informed me that Dart version 2 treats void classes differently to version 1. I need to find and take a general Dart course to help me to become comfortable with Dart, and fully understand this void situation. However, I managed to overcome the runtime error by bringing the commands within the void class into the main class. I know that this is not the optimal solution, but with my current lack of Dart knowledge, it was the best fix that I could apply to make the app work as it should.
When I compare my (albeit, currently short) experience of Dart and Flutter to a similar point in my learning Java for Android, Dart and Flutter seem to be so much easier to take on board. It took me a long time to get to grips with Java (the first real Object Orientated Programming language that I had experienced). Although I was beginning to feel some semblance of a level of confidence with it come the end of my nanodegree course, I was still unable to build complex code structures, such as recycler views, asynchronous tasks and JSON readers, without following along with a tutorial. I’m sure this will be the same with Flutter, but I suspect that this stage will not last nearly as long, as the code seems to be far simpler. Flutter also offers on-screen options that appear as you commence typing, making it a far more intuitive coding experience than Java is. Having said that, I fully appreciate that the Java learning experience is helping to make learning Flutter easier than it otherwise would have been, so i still consider that to be time well spent.
The hot reload function that Flutter offers is also a huge development-time advantage over the Java method of rebuilding the app every time you want to see your code running on a device or emulator. After the first load,hot reload simply sends and implements just the changes that have been made to the code, and so it is infinitely quicker, less than a second in some cases (as opposed to minutes), saving a considerable amount of development time over the course of a project.
This early on, the one area that is causing me problems (so far) is using the correct bracket type – (,{ or [ – and punctuation marks – colons, semicolon and commas – in the right place for the widgets to be properly nested. It can get quite confusing, but it’s just a case of practice makes perfect. Completing this course and going through the other 2 Flutter courses will provide me with plenty of practice in this area, but I also think that a general Dart beginners course will be really useful with this too, so I will seek some out.
In addition, I have sourced a kindle book for Dart, which I will start reading soon. I have also just discovered an article on Medium that lists a number of IDE shortcut keystrokes that will be very helpful with getting this right.
I can see a lot of potential for Flutter. I have very much enjoyed my first real experience with it, and I’m looking forward to spending a lot more time learning. Disappointingly, for the next couple of weeks, the app jam will have to take priority and so I will be unable to afford as much time as I would like, if any, with Flutter tutorials. I’m hoping that the workload will calm down a bit after that, so I can get the opportunity spend some good quality time establishing some solid Flutter skills.
This course runs for less than an hour, and so I wasn’t expecting too much from it. It was too early in my learning to be looking at integrating Firebase with Flutter apps really, but it was worthwhile in so far as I now have a conceptual appreciation for the functionality, and I can always come back to the video when I am at a point where I need to integrate Firebase.
This course runs for less than 2 hours, so I didn’t expect to emerge from it with any level of expertise, but I was still left a little disappointed. While it was interesting, I didn’t find it particularly instructional. It did, however, give me a flavour of what to expect from Flutter, which was good, but I certainly didn’t feel equipped to start coding afterwards. Not to worry, this just the first of 5 courses that I have lined up…
Following last week’s in-depth research into development strategy options (which actually ran well into this week too), I’m keen to roll up my sleeves and get stuck into learning how to develop Android & iOS apps with Flutter.
I’m sure there will be a certain amount of commonality between them, but going over the same things a few times can only do me good in the long-run, and it will be interesting to see different perspectives, and whether there are alternative ways of doing things.
On the flip side, I am expecting each course to have at least some unique content, and so I think it will be highly beneficial for me to work my way through all of these courses, and more besides.