Langsung ke konten utama

How To Combine Learning And Developing part 2


Read 1'st part of this post where I talk about Learning While Developing.

Hi! Today I'll tell you about the second (and I think the right one) way of combining learning and development. This way I call Developing While Learning.

Oh wait, sounds like it is the same thing as Learning While Developing, isn't it?  Yes, it might sound like the same thing, but in fact, it's opposite. Let me explain what it all means.

The essence of Developing While Learning

As I said Developing While Learning is the opposite to Learning While Developing, so you might already guess the essence by yourself.

Developing While Learning is about creating some product while learning something. But it shouldn't be your dream project. It should be something appropriate for your level. With time, probably your learning projects will be more difficult, but when you're starting out don't go right off the bat. Even most experienced developers start with "Hello world!" app when they start to learn  new technology.

Defining a success project

When you learn something you have to define your success project. Like the end point of learning, the point where you know you learned what you wanted to learn.

This project should be something really specific because when you trying to achieve something blurry and not concrete you still don't know where is the point of success. 

Here's the example of good success project
  • Weather App
    • Fetching forecast data from API
    • 3 activities
      • Weather forecast for the week
      • Details about weather for specific day
      • Settings
This project used in Developing Android Apps course at Udacity (which I encourage you to enroll).
And here's the success project that can actually harm your learning process.
  • An Android app
You'll never find something like this in any course at any University because it's too broad. I can build "Hello World" app and I'll be happy with it as an elephant (it's the Russian phrase, means very happy)  or I can try to build something with 3-5 killing features, bells, whistles and brilliant design and still not be satisfied with it. So be as specific as possible when defining success project.

The other reason why your project should be specific is that you can break it up into subtasks and for each subtask you can find out what you should learn to perform it. It's psychologically easier to perform multiple small tasks than one tremendous one.  

How to define your success project

I think the best way to define your success project for learning is to steal it. Yes, you read it right, just steal the idea from some app. Steal from Gmail, Dropbox, Instagram, Facebook, any app you know. Just take something for your level.  

It's sounds like reinventing a wheel, but it's actually reimplementing a wheel because to learn how to make a good wheel you should make some wheels (probably bad).

With this approach, you will not spend your time on thinking up and sifting ideas to just learn something. 

And who knows, maybe you'll make a better app than one you stealing from.

You also can implement your own idea, of course, just make sure that it's appropriate for your level and for what you want to learn.

Benefits of Developing While Learning

The most evident benefit is an experience. You're facing challenges that you will face in real development, but when you'll face it in real development you'll already have a solution for it.

Another benefit is your very own code. Anything you developed that way is now yours and you can use it any way you want. You can rebuild using your new skills you acquired or improve it some other way and publish it. You can take some parts of your code and make a framework from it or contribute to an open source framework. Now you can use it the way you want it to be used.

And last but not least benefit is that one day you can set your dream project as success project for your learning. With any app you develop your knowledge gets higher and higher, and there will be the moment when your dream project is appropriate for you as a success project so why not to try it?

Learning 4 life

Actually, I think that developer's professional life is about constant learning. Every developer learns something new with every new project (if it is not routine, of course). Some developers just know more than others, but there's plenty thing that they'll learn in their professional life.

So don't be afraid of saying that you just learning, everyone is just learning! 

Overview

So here's what we know from 2 parts

  1. There's 2 ways Learning While Developing and Developing While Learning
  2. Learning While Developing is not as good as may seem (but it's still a way)
  3. Developing While Learning is beneficial and actually fun!
  4. Define your Success Project! (you can steal it, nobody will know ;) )
  5. Make it as specific as possible! 
  6. Have fun learning!

That's pretty all you should know about combining learning and developing.


See you in the next one, peace!


Komentar

Postingan populer dari blog ini

FlatBuffers Android Tutorial

FlatBuffers is an efficient cross platform serialization library for C++, Java, C#, Go, Python and JavaScript. It was originally created at Google for game development and other performance-critical applications. FlatBuffers is Open Source (Apache license V2) and available on GitHub . It's currently used by:   Cocos2d-x , the open source mobile game engine and used to serialize the game data. Facebook uses it for client-server communication in the Android app (see the article) . Fun Propulsion Labs at Google in most of libraries and games. Solution overview  The schema will be defind in JSON format, then it will be converted to FlatBuffer format outside the application The Java classes of the Data model will be generated manually using flatc (FlatBuffer compiler) Step 1: Build FlatBuffers Download the source code in Google’s flatbuffers repository .  The build process is described on Google's documentation FlatBuffers Building .  On MacOS for example: Open the xcode proje

QR-Code Generator - Library

In this Post, I introduce my new Gradle Library. This Library is used to Generate QR Code Automatically for our specified input. How to Import the Library: Gradle: compile 'androidmads.library.qrgenearator:QRGenearator:1.0.0' Permission: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> How to use this Library: After importing this library, use the following lines to use this library. The following lines are used to generated the QR Code // Initializing the QR Encoder with your value to be encoded, type you required and Dimension QRGEncoder qrgEncoder = new QRGEncoder(inputValue, null, QRGContents.Type.TEXT, smallerDimension); try { // Getting QR-Code as Bitmap bitmap = qrgEncoder.encodeAsBitmap(); // Setting Bitmap to ImageView qrImage.setImageBitmap(bitmap); } catch (WriterException e) { Log.v(TAG, e.toString()); } Save QR Code as Image // Save with location, value, bitmap returned and type of Image(JPG/PNG). QRGSaver.save(s

Download file using Okio in Android

Okio is a library that complements java.io and java.nio to make it much easier to access, store, and process your data. Simply Okio is a modern I/O API for Java.  In this post, we will see how to download image or any file using Okio. Okio is component for OkHttp Coding Part Create a new project in Android Studio. Add following dependencies to your  app-level  build.gradle  file. compile 'com.squareup.okhttp3:okhttp:3.6.0' Don't forget to add the following permission in your AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Implementation Paste the following code in your Activity and Here, I have kept as MainActivity.java public void downloadImg(View view) { try { Request request = new Request.Builder() .url(imageLink) .build(); new OkHttpClient().newCall(request).enqueue(new Callback() { @Override public void onFail