Skip to main content

How I Started to Learn Android Programming





A lot of people don’t really know how to start learning programming. They don’t know if they should read books, watch Youtube videos or buy online courses for money and they often seem to get stuck.

Now, people have different learning styles and what works for me obviously won’t work for everyone, but I will also try to take general recommendations, that I read often, into consideration in this post.

So this is what I did as a complete beginner, and what I would do again if I had to start over:


1.  Read a good beginner book for the basics (or buy a beginner course)

Books are not dynamic, not interactive and they get outdated, whereas on the internet you can find up to date results to specific questions if you search properly. But when you know absolutely nothing about programming, I think it’s a good idea to pick a beginner book with good ratings and read it through. That’s what I did. But I did NOT do all the exercises in there, if I felt like they slow me down or if they simply were to boring (which would also slow me down, because I would procrastinate). I don’t know if that’s a good approach, but my thought process was, that I had to get to get through a beginner book as quickly as possible, to get an overview over the topic and then build upon that. I knew that I wouldn’t remember a lot of it anyways. At least not enough to actually apply it. But it would help me to get to know all the important basics. There are so many nice things to build, especially in Android development, that you don’t have to waste your time with boring examples.

The book I bought back then was “Head First Java” and i really liked it, because it explains concepts in a more playful and fun way and really knows how to use different resources to make it stick as best as possible. They also have an Android version of their book.


Alternatively you could also buy a beginner video course. I think its worth it to spend a few bucks on a good book or course when you just start out, because searching everything yourself could overwhelm you as a beginner and there is a ton of outdated and wrong information out there. And especially in the beginning this can be very overwhelming. In books and courses, someone else did the work to condense the important knowledge for you and sort it in an understandable way.



2. Start building things, google a LOT and ask (good) questions

This point overlaps all the remaining steps and you don’t ever stop doing this. But it is important that you start early. Build actual little projects, like apps. It’s simply the best way to learn. Reading something in theory won’t stick in your head, you have to apply it. And especially in Android programming it is so easy to build something “real”. Something you can put on your phone, your mother’s phone or even on the Playstore and people can actually use and interact with it. 2 months after I started learning Android programming I had my first app on the Playstore. Of course it wasn’t very good and the code was badly written, but it felt amazing nevertheless. On the way to finishing your project you will go from one problem to another and you will have no clue how to get your code to do what you want. But you can basically find all the answers you need on Google and especially on  Stackoverflow. And if not, you can ask the question yourself. But watch out, Stackoverflow is very painstaking about their question and answer quality. You should only ask there if you can’t find your answer after extensive search. There are some places to ask more basic questions without people complaining, like the Weekly Question Thread on reddit.com/r/androiddev. But your questions should not be too general. Don’t ask how you can build “app xy”, ask about specific problems you encountered while trying to add a feature.

And this process of facing a problem, searching for the answer, solving the problem and then getting to the next problem is what makes you learn so effectively. You don’t look for theoretical concepts, you want answers that you can actually apply in real situations. And you will remember these things much better than what you read in books. When I see a question somewhere for which I know the answer, then it’s always about something I have actually used before and never about something I just read somewhere.

What I also love so much about learning by doing is, that it is so easy to immerse yourself in the process. If you are like me, you can read a book for like 15 minutes before you start getting tired or distracted. Maybe even less. But when you write actual code and search for answers, hours will fly by. And those are effective, well spent hours. The thirst of solving an actual “real” problem that you have right now is much bigger than the motivation for “just learning something new”, which others predetermine for you. You have a clear goal in mind which you want to solve as effectively as possible.

Now you probably wonder what you should build? Build something you would use yourself. Something that would make your life easier or better. Are you not happy with your to-do list app? Does your grocery list app miss a feature? Try to build them yourself. These are good projects to start, because you have to learn about important concepts like data persistence.

However, when you use Google, pay attention to the release date of posts and answers. They could be outdated too. After I ran a normal Google search I usually do an additional one with a filter to the last 1-2 years, so I can get a better overview, if anything important changed. You have to get an eye for what kind of old information is still valid. Core Java concepts like what can you do with an array usually don’t change too much with time, so you can rely on older posts here.



3. Watch Youtube videos

Watch Youtube tutorials to get an idea about a topic. However, I would not rely on them alone. They are often pretty slow and contain mistakes and parts that are not of interest for you at the moment. I usually watch a Youtube video first when I am interested in a new concept or feature, because they are so easy to consume, but then I almost always dig deeper using Google to search for information in text form, with special attention to the official documentation and everything that comes from Google directly.  Text resources have less mistakes in them, because they can be edited and corrected, while Youtube creators mostly go freestyle and don’t cut out mistakes and errors. And texts are much faster to consume because you can skip parts more efficiently. I basically use videos to supplement my learning process. To get an overview and see different approaches from different developers.




To summarize it, I would:

  1. Start with a beginner book/course with good ratings, but get through it as quickly as possible
  2. Start building actual projects as soon as possible
  3. Use Google, Stackoverflow, forums and the official documentation extensively
  4. Supplement the learning process with Youtube videos 

Comments

Popular posts from this blog

Why Ethereum Smart Contracts Make It Hard to Get Payments

  The Unique Role of Smart Contracts in Ethereum One of Ethereum’s standout features is its ability to host diverse applications on its blockchain using smart contracts. However, these smart contracts, while powerful, sometimes complicate simple tasks. For instance, determining the amount of ETH deposited into a specific Ethereum address can be surprisingly complex. This is because you cannot understand the actions of a smart contract without executing it. Synchronizing Blockchain Internals and Externals Smart contracts operate exclusively within the blockchain's data, reading and writing information stored on-chain. This limitation does not prevent the creation of valuable applications, such as multi-signature wallets or tokens like ERC-20 and ERC-721, which rely solely on on-chain data. However, most practical applications also require interaction with off-chain systems. Take cryptocurrency exchanges, for example. Exchanges facilitate converting ETH into fiat currency or vice ver...

Room + ViewModel + LiveData + RecyclerView (MVVM)

Part 1 - Introduction Part 2 – Entity Part 3 – DAO & RoomDatabase Part 4 – Repository Part 5 – ViewModel Part 6 – RecyclerView + Adapter Part 7 – Add Note Activity Part 8 – Swipe to Delete Part 9 – OnItemClickListener & Update Functionality Part 10 – ListAdapter                     Part 1 - Introduction In this tutorial we will build a note taking app, using the Android Architecture Component libraries (Room, ViewModel, LiveData and LifeCycle), a RecyclerView and Java. The data will be stored in an SQLite database and supports insert, read, update and delete operations. For this we will follow the official recommendations from the “Guide to App Architecture” (link below). In part 1 we will learn what the Architecture Components are, how they work and why we need them. We will learn about the problems that arise from the Activity and Fragment lifecycle, configuration changes and bloated, tightly coupled cl...

DodgeInsetEdges

The layout_dodgeInsetEdges together with the layout_insetEdge attribute, to move views within a CoordinatorLayout out of the way of other views. This behavior is the default behavior for FloatingActionButtons and Snackbars , but we will also apply it to views like normal buttons and bottom sheets. In Mainactivity.java add the code below stated:- import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity {     private BottomSheetBehavior bottomSheetBehavior;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activ...