Kotlin is a statically typed, and cross-platform programming language. It fully interoperates with java which makes it more attractive for me. Building a mobile app is now easy, with many programming choices to choose from, react native, ionic e.t.c. However, if you are an amateur like I'm, and you want to build a high performing, small in size app, then your option is to go native with Java or Kotlin.
And the wise choice will be to go with Kotlin because, in 2019, Google announced that the Kotlin programming language is now the preferred language for android app developers. In addition, Kotlin combines OOP (Object Oriented Programming) and functional programming. Java is limited to OOP but kotlin can allow a programmer to create an extension function.
Then there is jetpack compose, a modern android UI toolkit.
This is an android toolkit for building a user interface. It simplifies the building process since you reuse some of the components, think of it as a react material UI for android native apps. If the XML based UI development for android bothered you, jetpack compose is there to rescue you. Since I started learning kotlin, I didn't stress learning XML based designs but jumped right into building UIs with compose and I loved it. Check these apps I've built using jetpack compose, Pindula App and Workly Jobs.
I'm still learning this and intend to be better every day. There are a number of things I still don't understand like state management and in app routing.
Docker is a tool used for OS-level virtualization. Since docker came in 2013, I never had the chance/opportunity to learn it. I've spun a few docker containers a couple of times, but stackoverflow knows how I did it.
Docker helps to deliver software in independent packages called containers. The containers are isolated from one another and have their own set of software, libraries and configuration files. This isolation allows the application packages (microservices) to run anywhere, public, private cloud or on-premises.
Docker containers are lightweight, and a single virtual machine can run several containers simultaneously.
Kubernetes is an open-source tool for automating the deployment, scaling, and management of containerized applications. It works with container runtimes such as Docker, Containerd, and CRI-0.
Linux Filesystem & Commands
Every developer must know Linux. It's the server OS choice for a lot of companies. You can't deploy an app without going through some Linux terminal unless you're deploying on modern automated hosting services such as Heroku, and render. Knowing Linux allows you to manage servers and it's a superpower for any developer.
Embarrassingly, TailwindCSS is on this list. It's a basic, utility first CSS framework. I've worked with bootstrap before, but the fact that tailwind is utility first makes it attractive. Bootstrap has components, such as buttons and modals e.t.c. and tailwind doesn't have any components but utility classes :
my-5 => margin-top: 1.25rem; margin-bottom: 1.25rem;
min-w-full => min-width: 100%;
Once you master these utility classes you can build user interfaces much faster.