I would estimate that to be good at programming in general, you need 10+ years of practice. After that, to become good at something new, e.g. building mobile apps, 1 year should be enough.
But it depends on how much time can you spend learning. Can you spend all your days learning? Or does your daily job take most of your energy and time, and then you have to split the remaining time between learning the new thing and having a social life? The 1 year estimate is for the best case.
For example, when I started learning programming as a teenager, I had a lot of free time, and I spent a lot of it programming. Later, when I worked as a programmer, I kept practicing my skills almost every day. However, when I am learning something new now, I must do it in evenings and weekends (but I would also like to spend that time with my girlfriend), so it goes rather slowly.
If it's worth saying, but not worth its own post (even in Discussion), then it goes here.
Notes for future OT posters:
1. Please add the 'open_thread' tag.
2. Check if there is an active Open Thread before posting a new one.
3. Open Threads should be posted in Discussion, and not Main.
4. Open Threads should start on Monday, and end on Sunday.