Why is it so hard to find a junior developer role?
Professional software development requires a lot of knowledge and a mix of hard and soft skills. Understanding how to make a computer work is something that many people find difficult, which is fundamentally different in nature to most subjects taught in schools, and which takes a long term to learn. While courses and books often promise to teach software development quickly ("in 24 hours" according to one popular book series), this is usually not much more than the absolute basics; to actually be able to turn software development into a career takes time, effort, knowledge, skill, and experience.
In addition, competition is fierce, as it is a well-paid, exciting career (and likely to be resistant to automation for at least the next decade or two). Other people going for the same junior roles may be graduates with full degrees, or have years of real programming experience since they were children, or both. A would-be junior developer doesn't just need to be good, they need to be able to demonstrate that they are better than the other people applying for the same role.
What's the point of having a github account then?
Github (or any other version control system) helps you keep track of your code and how it changes over time; it's even more useful when working as part of a team, not as an individual. It is not a box you can tick to guarantee someone will offer you a job.
I know that I am not experienced, and need to improve skills [...] but shouldn't I work in a real team environment to improve them?
This is a common problem when starting out in any career. It can often seem unfair - "all jobs want to hire someone with experience, but how do I get experience without a job?". Nevertheless, the only way to overcome it is to find ways to gain that experience anyway - in the case of a software developer, to write code.
Consider two candidates, both similarly qualified, who want a junior developer role. One has written his own versions of Tetris and Space Invaders for his mobile phone, and a command-line app to organize his music collection on his PC, and an interactive website that hosts his CV. The other hasn't written any programs of his own, but says that he expects to do all that after someone has given him a job. Who do you think will have learned more about coding? Who would you employ, honestly?
What exactly are the expectations from a junior android developer?
This varies from company to company, and will depend on salary and many other factors. Broadly speaking the following list would usually stand a candidate in good stead:
- Demonstrate a basic understanding of at least one programming language - to be able to write simple but complete programs of their own, not just follow tutorials.
- Demonstrate a basic understanding of the software industry, and what is involved in development as a career.
- Demonstrate good general problem-solving and mathematical skills.
- Demonstrate good teamwork and interpersonal skills.
- Demonstrate a drive to learn in their own time and for its own sake.
It might also be helpful to open the search a little. A junior developer position is a starting point for a career whether it's working on Android, iPhone, web, Windows, the cloud, or basically anything else. And if you are looking to move country anyway, perhaps look outside the UK.