My first experiences

Photo by Guido Coppa on Unsplash

My first experiences

- As a hobby developer

·

8 min read

My really first experience with a programming language (Scratch excluded), was on the 15th of February 2022. I got bored using Scratch, which, until this date, was what I needed to use in school. Excited for writing codes in the next language, we would use (Java), I asked my teacher about what IDE to use. Since I was relatively unsure, I also asked in a Discord server for help.

Said Discord server was a server for the custom ROM I used on my phone, and I was curious. What IDE did the developers use to create apps?
The simple answer: Android Studio.

For sure, I didn't even cover the basics of programming, yet I installed the IDE, set it up and started using it.

The first Android app

Usually, one is supposed to start with the basics of a programming language. Looking back, starting directly with Android might not have been the best decision, and you'll later know why.

Although I was really hyped to start programming Android apps, I just started on 22nd of April 2022, more than 2 months after requesting the IDE, the ROM-Dev used.

I'm rather happy to see my old messages on Discord, that I sent to clarify my questions about Android app development. I had serious problems creating an app, since I never covered any basics and jumped right into it.

A screenshot of an app on a phone with the text "com.example.myapplication.MainActivity" and the buttons "App" and "Open". The screen is black with white text.

This image shows the struggle. I did not know why the toolbar showed the package name instead of the app name and the black bar just showed app, yet, thanks to the help of the developers, I was able to fix this issue.

The second Android app

I was still testing a bunch of things and I got much help from the developers in this server. Learning by doing was the new way I learned things, and quickly I realized how efficient I could learn with that. I was able to create an app, that did not have a design that looked as if a child drew something. Of course, the struggle did not really end, but at least I knew where to find answers.

This screenshot was created after making some adjustments. It was the first time I worked with fragments. I used activities every time before.

As a result, I finally had an application that looked like this:

Yet I found this design boring, so I created a new project and watched a tutorial online for a design I found rather simple and beautiful. Looking at it now, I don't really understand why I found it beautiful, and I honestly wouldn't use this design ever again. (But I saw that an app for checking the result of my driver's license test used it).

My third Android app

I was no big fan of rewriting everything. It never came to my mind to just delete the whole code, instead I created a new project for every new layout, etc. It was stupid but anyway. Almost two months later, I added another screenshot to the server. I changed the layout again. This time it was more colorful and looked childish:

Now, the rounded corners were not initially there, but I had no other screenshot.

However, this was the first project I did not rewrite when I changed the layout. This image shows, what the app looked like immediately after adding the OneUI design library to it. Of course, this app was the contrary of what one would think of when thinking of OneUI, so this colorful and playful design needed to disappear (believe me, it was better that way).

The third Android app was recreated and now followed the OneUI design. I spent five days on creating this:

Luckily, I still had the devs, otherwise I would have failed completely, I guess. Since this Android app now was done, or at least for now fulfilled its Job to be a kind of rule book for my family, it was time to go on.

The fourth Android app

Now, we are talking about an app, that was later published on GitHub: Quotes.
The first time I used the OneUI library, I kind of cheated. Since I did not plan on publishing the app, I didn't really care for non-static changes. Everything I needed was hard-coded in this app.

Now for this app, I wanted to follow the same idea, hard code everything and update it as needed. But this time, a developer told me, to not do that and instead make it possible to parse the items from a repository on GitHub. This idea sounded fantastic to me, but I had to learn a bunch of new things. Some of it, specifically ItemDecoration, I still don't really understand to this day.

It was necessary for the developer to teach me some basics and even with these, I wasn't fully able to create what I wished. The lack of knowledge of the basics I did not cover was making it hard to nearly impossible to understand what was going on. The basics the developer wanted to teach me were not even covered until about a whole year later in school.

However, one day, after trying to understand the entire process of constructors, getters and setter and what not, I finally managed to at least understand the basics of a recyclerview.

This message on the 28th of July 2022 marked the day, where I finally was able to use the recyclerview to dynamically add and remove data. The little reaction by the developer made my day and gave me new motivation to continue.

The fifth Android app

Well, I wasn't even done with the fourth Android app, but fascinated by the Material 3 design, I tried to recreate something and came up with a completely strange and new design for the app. This time, however, I did not want to lose the OneUI design, so I continued the new design as a side project.

After some talk to the devs, the final result for the 30th of July 2022 was this:

This all however still used two hard-coded arrays, neither a custom item (quote) nor a dynamically changeable file on GitHub. So I had to create that too.

Creating and parsing it seemed to be relatively easy after watching some tutorials, however I somehow messed up, and the app was black and white instead of using what I wanted: Dynamic colors.
Thanks to the developers, the issue got fixed relatively fast, and I was able to continue.

Three days after that, could share the first screenshot of the new look:

Every card looked the same now, but they still didn't follow the system's color, so I tried something else. This time, no tutorial could help me, and although I had the help of the developers, I had to think of something myself. The help the developers offered were indeed the solution to my problem, but I wasn't able to comprehend it and I felt like if I continued asking, they might be annoyed or something like that.

At the end, I managed to make it work et voilà, there we are:

I remember, that a tester told me, that my app crashed on devices running Android 11 and lower. And why was that? My idea on how to enable dynamic colors was not working, since the values I used for the colors weren't present on devices running Android 11 and below. So I had to fix it. Instead of (finally) reading online on how to enable dynamic colors correctly for only devices where this is possible, I just have overridden the color values for these devices and set the color to blue, now the issue was fixed.

However, what I am proud of was my implementation of the background color of my app icon, since this also was able to change its color based on the background.
However, it either required the app to start after the change (this option only worked for some devices) or to be reinstalled. But it worked.

Now what?

Well, this is not the whole story. I had many ideas left, and we are currently on the 11th of August 2022, so there is more than one year I still need to cover. But this will happen in a second part or so. As for now, the main idea was done and the rest were features.

Anyway. The most problems I had were avoidable by learning the basics. The most of my issues today are avoidable too if I just learned the basics, but I keep studying them now, it is never too late.

I have some projects I am working on while learning the basics, and they adapt the new changes if necessary. Also, I am always open for new suggestions or things I should learn and thanks to the developers, who still help me to this day, I am at least able to get a quick understanding of everything.

Anyway, I hope, you liked this blog entry about the first part of my life as a self-taught hobby android developer (that's a long kind of title).

Be nice to each other and see ya,
Lijucay