Office Hours — Today, July 31

Yesterday, July 30

Mark M.
has entered the room
Mark M.
turned on guest access
Jul 31
4:00 PM
Daniel
has entered the room
Mark M.
hello, Daniel!
how can I help you today?
Daniel
Hi Mark
View paste
Well, When it comes  to Android Dev I still feel I’m in a position of “Don’t know what I don’t know”. 

My main goal at this stage is to learn and become a solid Android Developer as quickly as possible.

I’m interested in your advice on how to go about this.
In particular about what courses to take and where to find good code to learn from
Mark M.
since you're here, you have a Warescription, so you have access to all my books and their corresponding samples for how the APIs work
in terms of courses, I have taught Android, but I have not taken an Android course, so I have little direct experience with existing courses
Daniel
ok
4:05 PM
Mark M.
if your employer is looking to send to you professional training, I would recommend Big Nerd Ranch -- I was their original instructor and I know a bunch of the engineers there who teach their course
Daniel
ok, I've been doing the Google courses through Udacity and they are promoted in Google's Android Developer site but the content is somewhat outdated
ok
Mark M.
yeah, that's the problem with online courses -- they are a pain to create, and so they do not get updated as frequently as they need to
Daniel
right
is it still a benefit
or should I only do latest content courses
Mark M.
if the course covers the Jetpack/AndroidX stuff, it should be recent enough to be worthwhile, as that means it has been created in the past year
Daniel
ok
Mark M.
online courses that pre-date the Jetpack but are still three years old or less are worth considering
it helps to narrow your “Don’t know what I don’t know” to being a bit more of "don't know what might have changed"
anything older than that, I would start to worry
Daniel
ok
Mark M.
code is similar: if it uses AndroidX, by definition it is fairly up to date
4:10 PM
Mark M.
if if is older than three years or so, use it for specific stuff (e.g., how do I use PackageInstaller?)
Daniel
ok
I see the current course I'm doing Google's Developing Android Apps course on Udacity has been updated recently. I'm telling my self that being Google they should at least tell me good practices and it will help me look at old code when I get a job. Is that sounds thinking.
And then I would look at a more modern course from then on
Mark M.
what Google teaches, on the whole, probably is not bad
Daniel
ok
Mark M.
they may have different priorities than do others
Daniel
yeah?
Mark M.
I would be a bit cautious about any "you really need to do X", if X involves something that is not part of Android itself, such as Play Services or the Play Console
Daniel
oh alright
And I see whenever I start a new app in Android Studio. Constraint Layout is the default. In the courses I've done and most code I've seen I have not learned this.
Is Constraint Layout up there with Jetpack and AndroidX as important now?
Mark M.
ConstraintLayout is relatively new, about three years old
Daniel
ok
4:15 PM
Mark M.
ConstraintLayout is definitely something that you should learn
Daniel
ok
Mark M.
personally, I prefer it now to the original containers (e.g., LinearLayout, RelativeLayout)
Daniel
So Jetpack, AndroidX and Constraint Layout.
Mark M.
yes, bearing in mind that AndroidX is a family of libraries, many of which are part of the Jetpack
Daniel
Ok.
Mark M.
not everything listed on https://developer.android.com/jetpack is specifically part of AndroidX, but a lot is
conversely, there are some libraries in AndroidX that are not officially part of Jetpack, particularly smaller things (e.g., CardView)
Daniel
ok
ok
Being fairly new stuff I get a bit nervous spending time there as sometimes new languages and libraries can be the next big thing but then fade
But AndroidX and Jetpack are cemented in as the way forward
?
Mark M.
for the next several years at least
Daniel
ok
And I
Mark M.
there will be changes (watch for something called "Jetpack Compose" in 2020 or 2021)
Daniel
ok
4:20 PM
Mark M.
but in terms of what to learn today, the Jetpack is a good starting point
Daniel
but that will build off Jetpack?
Mark M.
bear in mind, though, that some of the things listed for Jetpack are specialty subjects: Auto, TV, WearOS, Slices, CameraX, Palette, Emoji
Daniel
ok cool.
sure
Man really enjoying the Android space.
So much you can do it seems going forward.
Mark M.
Android devices, and the OS, have a lot of power
with great power comes great complexity :-)
Daniel
yeah, oh man the Internet of Things is fascinating and what we are going to do there.
Oh and I've been enjoying learning Java alongside Android just to enhance my job opportunities, so I'd like to keep going that route for Android learning, but is Java dead in that area and Kotlin the only way forward?
Mark M.
Java is not dead
Kotlin is where Google is putting their emphasis
Daniel
right
Mark M.
and some things, like Jetpack Compose, will only be available for Kotlin
Daniel
really wow
so that is a big statement right?
Mark M.
yes
Daniel
But Java not dead as far as Android goes?
Mark M.
not every project has moved to Kotlin, and some will not do so for a while
plus, there is plenty of existing Java code that you may need to look at
from an educational standpoint, learning Kotlin should be high on your list
4:25 PM
Daniel
yeah that is what I'm thinking
ok
Mark M.
from a professional standpoint, whether today you work in Java or Kotlin depends a lot on the project
and the adoption of Kotlin varies by location
"the future is here, it's not evenly distributed yet"
Daniel
Boy it gets overwhelming doesn't it, what there is to learn and the pace it all moves at.
ok
hehe
yeah
alright, well really appreciate this insight from someone like yourself steeped in the industry. This will all help be less overwhelmed and is very exciting at this stage.
One more questions where can I find good solid code. Becuase I don't know what I don't know what I don't know, I want to avoid learning bad habits
Mark M.
that is difficult to answer
the definition of "good solid code" varies
Daniel
fair enough
yeah
Mark M.
and, of course, only a tiny fraction of the world's code is available on places like GitHub and GitLab
Daniel
ok
Mark M.
plus, a lot of software development starts with lofty visions of how great the code will be... and then the first deadline arrives :-)
4:30 PM
Daniel
yeah, I get that.
I suppose if it has Jetpack, AndroidX and Contraint Layout it is a good start?
Mark M.
at least in terms of being up to date, yes
Daniel
yeah ok
Mark M.
it is very possible to have awful code that is up to date
Daniel
sure
Mark M.
but, being up to date is a positive sign
Daniel
yeah ok
So are all your courses/books Jetpack, AndroidX and ContraintLayout... do they use these?
Mark M.
Daniel
all the ones in the Warescrpition section?
Mark M.
the second-generation books use Jetpack/AndroidX and ConstraintLayout
Daniel
ok and Java or Kotlin?
Mark M.
the first-generation books mostly pre-date those things, and so have less material on them
Daniel
ok
Mark M.
the second-generation books are in Kotlin, except for *Elements of Android Jetpack*, where nearly everything is shown in both Java and Kotlin
the first-generation books are mostly in Java
Daniel
ok
Mark M.
you get all of them in the Warescription, and the full-text search means that you can find stuff from the older books and the newer ones
Daniel
Awesome
4:35 PM
Daniel
And if I focus on Java for now wil that at least help me make the leap to Kotlin or are they quite different?
Mark M.
learning Java is not required to learn Kotlin, but it does not hurt either
Daniel
ok
Mark M.
for *Android*, learning Java is important, just because we have So. Much. Java. already
Daniel
sure ok
So the where to find good code question is hard to answer. I remember when I broke my arm at school and could not play basketball, but I watched a ton of basketball videos and felt I'm came back better for it. I just learn well by watching. It is the same for code. If someone could show me a vault of 100% good code for all this is to know Android I would read it back to front and again. I would enjoy learning that way.
Even if it is hard to answer are you able to give me your best answer for where to find this?
4:40 PM
Mark M.
not really, in part because I have not attempted to create such a catalog
Daniel
yeah fair enough
Mark M.
and without basically reading the whole code, I can't pass judgment on it
branding alone is insufficient
Daniel
sure ok
Mark M.
for example, https://github.com/googlesamples has official Google samples, and some I know are absolute crap, because I waded through them working on projects and saw how bad they were
but I am sure that some of the samples there are just fine
Daniel
yeah right
ok
well I guess I'll just keep learning
Mark M.
if you wanted a simple rule of thumb: if it comes from a high-profile Google developer advocate, it's probably a good bit of code to learn from
Daniel
ok, I'll take it :)
Mark M.
so, for example, the posts and related samples from https://medium.com/androiddevelopers are usually pretty good
Daniel
ok cool, that is helpful
Mark M.
the developer advocates who post there, such as Florina Muntenescu, Nick Butcher, Ian Lake, etc., are pretty good at writing solid examples
Daniel
I recently went Googleing to find the best blogs to learn from, I've bookmarked them so it is good to get your confirmation on that
ok awesome
4:45 PM
Daniel
Thank you very very much for you time and insight and help. This has been great.
Mark M.
happy to help!
Daniel
has left the room
4:55 PM
Mark M.
turned off guest access

Yesterday, July 30

 

Office Hours

People in this transcript

  • Daniel
  • Mark Murphy