Sunday, April 3, 2016

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! 


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!


Post a Comment