Android TDD Masterclass - Coroutines, Jetpack
What you'll learn
- Develop a state of the art Android 11 application: Kotlin, Coroutines, DI with Hilt, Jetpack Navigation Component, Kotlin Flow, MVVM
- Develop an application purely with Outside-In Test Driven Development. We focus on producing a real production app with business logic and common UX patterns
- Become a senior / architect Android engineer and advance in your career
- How to combine all the practises together instead of having to follow multiple articles and courses and spending weeks to combine the best practises together
- Jump straight to the latest and greatest of Android Development
Requirements
- Basic Coding Knowledge
- Basic Kotlin Knowledge or Good knowledge of another OO language
Description
The TDD Masterclass by Petros Efthymiou.
Learn State-of-the-art Android development by building a real production app.
Are you following dozens of forums and articles and buying courses in order to move your development skills and career to the next level?
I am, too, but more often than not, after completing them, I realize that there is still a HUGE amount of work left to be done to connect all the pieces together and make them work on a real application. I found that even though a course was providing comprehensive knowledge on coroutines, it didn't mean that I knew how to integrate them with Retrofit, Live data, or Hilt. And because another course was extensive on Test Driven Development after completing it, I didn't know how to write an application with TDD using the latest Android tech stack.
After buying courses, reading articles & forums, and a couple of months of hands-on practice, I have finally learned how to combine Android 11 best development practices in an Android application.
I created this course to make the process easier for you! You are going to learn how to combine
Kotlin
Coroutines
Live Data
Kotlin Flow
Retrofit
Hilt
Jetpack Navigation
MVVM
And complete a real Android application purely on Outside-In Test Driven Development
You are going to learn how to write not flaky espresso tests in a real scenario with delays and HTTP calls, without using Thread.sleep(). After all we wouldn't be doing TDD without efficient & effective Espresso UI tests!
Why Me?
Even though I am new to Udemy, I am not new to the industry. I have been working as an Android engineer from junior to lead positions in ambitious startups & large multinational companies for about 8 years. Being a good engineer, though, doesn't automatically mean that you are a good Instructor as well.
In the past 5 years I have also discovered my passion for education and worked as a Software Instructor in several colleges and companies, including New York College, Hellenic American Union my current position is a Mobile Trainer in a Multinational company called Backbase, where I am training
The internal RnD engineers
The internal professional services engineers
External third-party integrators
In my lifetime, I have trained thousands of developers in classrooms, web conferences, and video courses.
Why is it important?
As we advance to more senior engineering levels, we realize that how we do things is equally important to get them done. The industry has started to realize that a serious software engineering company can no longer base its products on purely architectural and engineering practices.
I often say that there are 3 stages in the advancement of an engineer
In the first stage, he/she is a programmer. He is learning how to make things work, e.g., how to add buttons in an Android application and handle its click. But is not aware of the importance of doing things well. He or she cannot realize that a purely structured system is certain to backfire in the long run, and while everything initially seemed to be going well, "suddenly," it is impossible to work with this system anymore. New features are hard to add, and bugs very often slip to production code
In the second stage, having realized the past mistakes, the professional starts practicing and learning good engineering patterns. He or she starts exploring things like :
SOLID Principles
Design patterns
Clean architecture
Separation of concerns
Low coupling, High cohesion
Unit Testing
and if is passionate and dedicated enough, manages to reach a more senior level, and is able to develop systems that can be successful not only in the short but also in the long run
The final stage is the Mastery. This stage is an ongoing process and doesn't ever end. After the engineer has a good understanding of the above practices, he realizes there is a huge room for improvement. He learns how to apply them and, most importantly, when they are not required, and simpler-junior level approaches are more beneficial for the specific project/situation. In other words, it is a constant effort to learn how to never
Under-Engineer
Or Over-Engineer.
He or she also comes in touch with more advanced practises like Test Driven Development which takes quite a lot of effort to get a grasp and master it.
In this course, I will do my best to advance you on this path. I will offer you what I have learned on my journey, and I am also very open to learning from you. I am always available on the forums to support and discuss topics that you might have a different point of view, and this way, we can help each other on our endless road to Software Mastery.
Who this course is for:
- Android Developers who want to advance in their career and learn how to structure clean state of art Android 11 applications
- Backend/Front-end/iOS developers who want to jump straight to the latest and greatest of Android development and learn how to do it right
- Developers who want to learn how to develop a system purely with Test Driven Development
Instructor
Hi, I am Petros, and I am a passionate Software Engineer and instructor with over 10 years in the industry.
I struggled a lot in my early stages when I realized that in order to take my career to the next level, I needed to learn how to do things properly instead of just "making it work." In my journey to become a better engineer, I followed hundreds of courses, articles, books, and conferences. What I have always been missing is a single source where I could find the best practices integrated and working together. I often studied TDD, for example, but was unable to apply it to a production Coroutines-based system. This is the problem I am tackling in my courses.
I am teaching best practices using real-life examples. I make sure to explain all the reasoning behind every decision but also provide a state-of-the-art skeleton that you can re-use on your own product instead of having to combine the pieces by yourself.
I have worked on multiple Companies ranging from ambitious startups to large multinational companies as a Senior Engineer and Software Instructor. Currently, I am employed in Backbase as a software instructor team lead, making sure that our superstar developers revolutionize the old, rotten banking industry.
My vision is to improve the quality of the software industry by providing high-quality education to software engineers and trying to embed in them the love for quality code, moving away from quick and dirty mentalities.
I am looking forward to working (and having fun) with you today!