Answers.Body: <p>Jetpack Compose is absolutely amazing. It has a <a href="https://app.slack.com/client/T09229ZC6/CJLTWPH7S" rel="nofollow noreferrer">great community</a> (<a href="https://kotlinlang.org/community/" rel="nofollow noreferrer">kotlinlang slack</a> - compose channel), a huge power behind it and there already is quite a number of <a href="https://www.youtube.com/watch?v=cDabx3SjuOY&amp;list=PLQkwcJG4YTCSpJ2NLhDTHhi6XBNfk9WiC" rel="nofollow noreferrer">very decent tutorials</a> on it.</p>
  <p>On one hand one may argue that XMLs are simpler. I would say that this is pretty much never the case - they are more <em>familiar</em>. Jetpack Compose seems to be successor of Android (at least<sup>1</sup>) UI development, so students may find it very motivating that they are being taught <em>the new thing</em> that may as well be the norm in the future. While some of the concerns regarding usefulness of teaching (potentially) outdated tools are inherently wrong, one must remember that students' motivation plays a big role in courses.</p>
  <p>Additionally, there is an advantage to Compose that cannot be overlooked - it uses Kotlin. The very language used for expressing parts of the system (mobile application) matters. A lot. So now, instead of learning Kotlin, learning XML and learning how to bind the two, students can... simply learn Kotlin. Yes, they need to learn <em>which</em> functions to invoke in Compose, but they would've had to do it with XML too. Just with tags, not functions.</p>
  <p>It would seem like Compose is the clear winner here, but (in my opinion - unfortunately) it is not the case. Compose is a very young framework. Its adaptation will take a long time and, if your goal is to prepare your students for being able to work with mobile development as soon as possible, learning XML will be way more beneficial to them.</p>
  <p>If it was up to me, I wouldn't focus on aiming to make the students employable as quickly as possible. I would show them things that are more powerful, simpler, more elegant and easier to integrate. I would show them Compose.</p>
  <hr />
  <p><sup>1</sup>I say <em>at least</em>, because I have been using Compose for things like Desktop development too. It's a little lacking there, but apart from it being a little incomplete (makes sense, since it's a fairly young framework), it is the best GUI library I have ever touched.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-09-27T06:33:21.327Z
Answers.Text: I did what you advised. Can you kindly provide some feedback for the following course outline I designed? https://docs.google.com/spreadsheets/d/1OWIkcwJ8OpKFy0Kz7PW91HnrEmiuEgBa9PrNCElED8k/edit?usp=sharing
Answers.UserDisplayName: fakhir
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-09-27T10:32:49.620Z
Answers.Text: @fakhir I am not sure whether the comment section would be the appropriate place for such discussion, but after a quick glance I can say that it looks rather promising. Could you share the expected level of expertise of the students that join your course? Additionally, I think it would be a good idea to touch on Android's means of communication with the app, like Broadcast Receivers and Services.
Answers.UserDisplayName: Fureeish
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-09-27T17:53:51.577Z
Answers.Text: Oh yes, that's an important topic. Thanks.
Answers.UserDisplayName: fakhir
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-09-12T10:23:05.650Z
Answers.LastActivityDate: 2022-09-12T10:23:05.650Z
Answers.UserDisplayName: Fureeish
Body: <p>I'm teaching a course on Mobile App Development. I was thinking of ditching XML and doing Jetpack Compose for UI development. I find compose more intuitive and productive. XML has a larger market share / legacy code but Compose is the new big thing.</p>
  <p>What do you think? Teaching Compose instead of XML to beginner students <em>(who already know programming btw)</em> is a good idea?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-09-12T10:17:38.213Z
Comments.Text: What do you mean by "know programming"?
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-09-12T11:17:57.080Z
Comments.Text: @Buffy: Meaning they know how to program, know about variables, loops, data structures, can design object oriented systems etc.
Comments.UserDisplayName: fakhir
Tags: <app-development>
Title: Android Course: XML or Compose?
ThreadText: # Android Course: XML or Compose?
  
  (Asked by: username_0 on 2022-09-12)
  
  I'm teaching a course on Mobile App Development. I was thinking of ditching XML and doing Jetpack Compose for UI development. I find compose more intuitive and productive. XML has a larger market share / legacy code but Compose is the new big thing.
  
  What do you think? Teaching Compose instead of XML to beginner students *(who already know programming btw)* is a good idea?
  
  **Tags:** app-development
  
  > **Comments:**
  > **username_1**: What do you mean by "know programming"?  
  > **username_0**: @username_1: Meaning they know how to program, know about variables, loops, data structures, can design object oriented systems etc.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2022-09-12. Score: 2 | Accepted answer
  
  Jetpack Compose is absolutely amazing. It has a [great community](https://app.slack.com/client/T09229ZC6/CJLTWPH7S) ([kotlinlang slack](https://kotlinlang.org/community/) - compose channel), a huge power behind it and there already is quite a number of [very decent tutorials](https://www.youtube.com/watch?v=cDabx3SjuOY&list=PLQkwcJG4YTCSpJ2NLhDTHhi6XBNfk9WiC) on it.
  
  On one hand one may argue that XMLs are simpler. I would say that this is pretty much never the case - they are more *familiar*. Jetpack Compose seems to be successor of Android (at least1) UI development, so students may find it very motivating that they are being taught *the new thing* that may as well be the norm in the future. While some of the concerns regarding usefulness of teaching (potentially) outdated tools are inherently wrong, one must remember that students' motivation plays a big role in courses.
  
  Additionally, there is an advantage to Compose that cannot be overlooked - it uses Kotlin. The very language used for expressing parts of the system (mobile application) matters. A lot. So now, instead of learning Kotlin, learning XML and learning how to bind the two, students can... simply learn Kotlin. Yes, they need to learn *which* functions to invoke in Compose, but they would've had to do it with XML too. Just with tags, not functions.
  
  It would seem like Compose is the clear winner here, but (in my opinion - unfortunately) it is not the case. Compose is a very young framework. Its adaptation will take a long time and, if your goal is to prepare your students for being able to work with mobile development as soon as possible, learning XML will be way more beneficial to them.
  
  If it was up to me, I wouldn't focus on aiming to make the students employable as quickly as possible. I would show them things that are more powerful, simpler, more elegant and easier to integrate. I would show them Compose.
  
  ---
  
  1I say *at least*, because I have been using Compose for things like Desktop development too. It's a little lacking there, but apart from it being a little incomplete (makes sense, since it's a fairly young framework), it is the best GUI library I have ever touched.
  
  > **Comments:**
  > **username_0**: I did what you advised. Can you kindly provide some feedback for the following course outline I designed? https://docs.google.com/spreadsheets/d/1OWIkcwJ8OpKFy0Kz7PW91HnrEmiuEgBa9PrNCElED8k/edit?usp=sharing  
  > **username_2**: @username_0 I am not sure whether the comment section would be the appropriate place for such discussion, but after a quick glance I can say that it looks rather promising. Could you share the expected level of expertise of the students that join your course? Additionally, I think it would be a good idea to touch on Android's means of communication with the app, like Broadcast Receivers and Services.  
  > **username_0**: Oh yes, that's an important topic. Thanks.  
  
  ---
  
  