<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Miguel Rodriguez</title>
    <description>The latest articles on Forem by Miguel Rodriguez (@miguelrodoma95).</description>
    <link>https://forem.com/miguelrodoma95</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F98111%2Fdc625545-69ee-4ef4-a361-77d6f80f30f6.jpg</url>
      <title>Forem: Miguel Rodriguez</title>
      <link>https://forem.com/miguelrodoma95</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/miguelrodoma95"/>
    <language>en</language>
    <item>
      <title>How much JavaScript should I be familiar with before getting into React?</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Fri, 02 Aug 2019 14:52:49 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/how-much-javascript-should-i-be-familiar-with-before-getting-into-react-20j4</link>
      <guid>https://forem.com/miguelrodoma95/how-much-javascript-should-i-be-familiar-with-before-getting-into-react-20j4</guid>
      <description>&lt;p&gt;Hi, I began to learn HTML, CSS, and JavaScript for front end development a month ago. I consider myself a JS beginner, so far I have only completed freecodecamp's JavaScript course about oop, algorithms and data structures.&lt;/p&gt;

&lt;p&gt;How much JavaScript should I know or which JS concepts should I be familiar with before getting into a JS framework like React?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>javascript</category>
      <category>react</category>
      <category>help</category>
    </item>
    <item>
      <title>Tips to be a good leader?</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Thu, 17 Jan 2019 17:28:36 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/tips-to-be-a-good-leader-3d2l</link>
      <guid>https://forem.com/miguelrodoma95/tips-to-be-a-good-leader-3d2l</guid>
      <description>&lt;p&gt;So, to begin the year, I was just assigned as &lt;em&gt;Project Owner&lt;/em&gt; of a mobile app we're developing at the company I currently work for. Which is a big deal for me since I'm a self-taught developer and started working only a year ago, but apparently the managers are happy with my performance (yey :D).&lt;/p&gt;

&lt;p&gt;My main responsibilities involve &lt;em&gt;Sprint plannings&lt;/em&gt;, &lt;em&gt;Sprint reviews&lt;/em&gt; organizing daily &lt;em&gt;Scrum meetings&lt;/em&gt;, of course communicating with the team to see that everything's alright,  and getting in touch with the client from time to time for updates and requirements.&lt;/p&gt;

&lt;p&gt;What advice do you guys have to be a good leader? &lt;/p&gt;

&lt;p&gt;What soft-skills and practices do you think a leader should have to achieve a good working environment and getting the job done?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Tips to keep your Android app project organized</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Mon, 14 Jan 2019 17:52:02 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/tips-to-keep-your-android-app-project-organized-361n</link>
      <guid>https://forem.com/miguelrodoma95/tips-to-keep-your-android-app-project-organized-361n</guid>
      <description>&lt;h2&gt;
  
  
  The importance of an organized code structure
&lt;/h2&gt;

&lt;p&gt;It's all about &lt;em&gt;readability&lt;/em&gt;. Big projects can be difficult to organize due to the amount of classes, resource files and libraries used. Having an organized code structure involves separating classes into different packages according to their purpose and having proper names for your resource files.&lt;/p&gt;

&lt;p&gt;This post should be useful if you develop Android apps using either &lt;strong&gt;AndroidStudio&lt;/strong&gt; or &lt;strong&gt;IntelliJ&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package name for your Android app project
&lt;/h2&gt;

&lt;p&gt;Quick note, when you're just creating a new project you will be asked to choose the package name for your project. As the &lt;a href="https://developer.android.com/studio/build/application-id" rel="noopener noreferrer"&gt;Android documentation&lt;/a&gt; states, the correct way to name your project is &lt;strong&gt;com.company.appname&lt;/strong&gt;, this follows the normal Java package naming conventions.&lt;/p&gt;

&lt;h2&gt;
  
  
  File types
&lt;/h2&gt;

&lt;p&gt;Some of the file types that we work with in an Android includes &lt;em&gt;classes&lt;/em&gt; (ClassName.java or .kt) and &lt;em&gt;resource files&lt;/em&gt; (activity_main.xml) such as drawables, layouts, values, etc.&lt;/p&gt;

&lt;p&gt;Classes and resource files are separated by AndroidStudio (or IntelliJ) by default. You can find classes in app/java/com.company.myapp/ and resource files in app/res. However, as I mentioned before, big projects can have a lot of classes with different purposes, and a lot of layout resource files. Keeping them orginized its important to have a mantainable project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Classes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Organization and naming tips
&lt;/h3&gt;

&lt;p&gt;There are a lot of classes, with different purposes, that you can have on a project. Surely you'll have Activities, Fragments, Models for your objects, Adapters, and depending on your app's reach, Network requests, Services, Wrappers (which I call &lt;em&gt;Response&lt;/em&gt;), etc. &lt;/p&gt;

&lt;p&gt;As for the class names, I like to follow &lt;a href="https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md" rel="noopener noreferrer"&gt;this guide&lt;/a&gt; and end the name with the name of the &lt;em&gt;component&lt;/em&gt; (Activity, Fragment, etc.).&lt;/p&gt;

&lt;p&gt;Android Studio lets you create packages after app/java/com.company.myapp/ so you can use them to keep classes separated according to it's purpose. This will help you and your coworkers navigate through your project. To crate a package just right-click on the package name -&amp;gt; New -&amp;gt; Package. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt; Contains yout project &lt;em&gt;Activity&lt;/em&gt; classes. An Activity name example can be LoginActivity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fragments&lt;/strong&gt;: Contains your project &lt;em&gt;Fragment&lt;/em&gt; classes. A Fragment name example can be UserRegisterFragment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adapters&lt;/strong&gt;: Contains &lt;em&gt;Adapter&lt;/em&gt; classes for your ListViews (or RecyclerViews). Adapters should be reused as much as possible to prevent repeating code. (DRY :) ) An Adapter name example can be SongsAdapter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Network calls&lt;/strong&gt;: This depends on your preference I personally name this package as &lt;em&gt;HttpRequest&lt;/em&gt; and contains the classes associated with &lt;em&gt;Retrofit2&lt;/em&gt; to perform REST calls, as well as the API interface where I define the endpoints. Class names can vary, in my case, I usually have the RetrofitServer.java, MyAppAPI.java and APIUtils.java classes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Models&lt;/strong&gt;: The &lt;em&gt;Model&lt;/em&gt; package is usually used to store the classes to map objects from a network request, or simply to create objects in other classes. Since it looks weird to initialize an object as 'HouseModel house = new HouseModel()' I take out the &lt;em&gt;component&lt;/em&gt; name from it and keep it just as House.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wrappers or Response&lt;/strong&gt;: This package contains classes that serve as &lt;em&gt;wrappers&lt;/em&gt; when performing network calls, and usually contains only one object pointing to a Model class. Same as with Adapters, try to reuse as much of these as you can. I usually name this classes with the same name as the Model class it'll wrapp, but with 'Response' at the end, for example, HouseResponse.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Utils&lt;/strong&gt;: Any other classes that you cosnider that don't require their own package, from simple things as a class that creates some special margin you wanted for your TextViews to &lt;em&gt;Services&lt;/em&gt; or &lt;em&gt;Singleton classes&lt;/em&gt; to manage user sessions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a quick exampe of how my packages look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ysg1hp219tf5q6v5not.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ysg1hp219tf5q6v5not.png" alt="packages"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resource files
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Types of resource files
&lt;/h3&gt;

&lt;p&gt;Resource files can be found in the &lt;em&gt;res&lt;/em&gt; folder. There are several packages that contains resource files, some of them are: drawables (for icons, images and backgrounds), fonts, layout (for our Activities and Fragments layouts), menu (for menus such as NavigationDrawers, BottomNavigationBar, etc.), values (may contain your string, colors, dimens, styles, among other resources.&lt;/p&gt;

&lt;p&gt;I'm going to focus on the naming conventions for layout resource files. Unfortunately, you cannot create packages or folders to save layout files as we do with classes, all of the layouts are saved together in the layout folder. That's why it's important to pick the right naming convention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource files naming tips
&lt;/h3&gt;

&lt;p&gt;Something that's been useful for me is to name my layout resource files as: 'component_description'. For example, the layout for your LoginActivity would be named as &lt;strong&gt;activity_login&lt;/strong&gt;. A UserRegisterFragment layout would be named &lt;strong&gt;fragment_user_register_activity&lt;/strong&gt;. And same for adapters, dialog fragments, and even &lt;em&gt;menu&lt;/em&gt; resource files (for example, for a BottomNavigatioMenu: bottom_nav_main_menu). This way you only have to look for the component and then for the description of your layout. Think of it as sorting them.&lt;/p&gt;

&lt;p&gt;Here's an example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsivrt624tjpmbs4v99nm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsivrt624tjpmbs4v99nm.png" alt="layouts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even though I didn't chose the best names for my layout files (still needs refactoring), I know where to look for a Fragment layout, for my DialogFragment ones, as well as Activities and Adapter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That's it for this post! We've discussed the importance of keeping and organized project and how to do it with simple every-day practices. If there's some convention or practice that you think can be useful for code organization either for me or anyone reading this post, please share!&lt;/p&gt;

&lt;p&gt;Twitter: &lt;a href="https://twitter.com/MiguelDev_95" rel="noopener noreferrer"&gt;https://twitter.com/MiguelDev_95&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Some references
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://blog.smartlogic.io/2013-07-09-organizing-your-android-development-code-structure/" rel="noopener noreferrer"&gt;https://blog.smartlogic.io/2013-07-09-organizing-your-android-development-code-structure/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://guides.codepath.com/android/Organizing-your-Source-Files" rel="noopener noreferrer"&gt;https://guides.codepath.com/android/Organizing-your-Source-Files&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md" rel="noopener noreferrer"&gt;https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>practices</category>
      <category>android</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>ConstraintLayout beginners guide Part I: Designing a repsonsive UI for Android apps</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Thu, 10 Jan 2019 00:47:35 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/constraint-layout-beginners-guide-part-i-designing-a-repsonsive-ui-for-android-apps-57ic</link>
      <guid>https://forem.com/miguelrodoma95/constraint-layout-beginners-guide-part-i-designing-a-repsonsive-ui-for-android-apps-57ic</guid>
      <description>&lt;p&gt;Since I've been learning how to develop mobile apps for Android, I would like to write posts about some useful things I've run into. It helps me to organize my ideas and it can be useful for developers who are getting started with Android development.&lt;/p&gt;

&lt;p&gt;In this post I will talk about the advantages of ConstraintLayout, a tool that completely changed the way I design views for Android apps. Some of the features that I'll get into are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ConstraintLayout Overview&lt;/li&gt;
&lt;li&gt;Center Views&lt;/li&gt;
&lt;li&gt;Chain Views&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Part II, I'll make sure to cover &lt;em&gt;Guidelines&lt;/em&gt; and other features.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is ConstrainLayout and why do I need it?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  There's a lot of devices with the Android OS with different screen sizes, and this can be an issue for developers...
&lt;/h3&gt;

&lt;p&gt;As we know, the Android OS runs on a great variety of smartphones. According to &lt;a href="https://www.statista.com/statistics/266136/global-market-share-held-by-smartphone-operating-systems/" rel="noopener noreferrer"&gt;Statista's article about OS worldwide distribution&lt;/a&gt; around 85% of the smartphones in the world run on Android and there are thousands (maybe millions) of different models running with this operating system.&lt;/p&gt;

&lt;p&gt;This causes a well known issue for Android developers: building an app that run smoothly and &lt;strong&gt;look&lt;/strong&gt; good in as many devices as possible. &lt;/p&gt;

&lt;p&gt;There are ways to address this issue. Goolge released Constraint Layout in the 2016 I/O and this method has been widely recommended by and for developers to design responsive UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Constraint Layout?
&lt;/h3&gt;

&lt;p&gt;As the &lt;a href="https://developer.android.com/training/constraint-layout/" rel="noopener noreferrer"&gt;official Android developer documentation&lt;/a&gt; states, ConstraintLayout allows developers to create complex layouts with a flat view hierarchy, which means there's no need to use nested ViewGroups, which helps for build efficency, memory usage and the device will take less time to create the view.&lt;/p&gt;

&lt;p&gt;If used correctly, ConstrainLayout also simplifies designing views that look good when the screen is in &lt;em&gt;landscape&lt;/em&gt; mode. It's all about knowing how to connect views with their parents and siblings.&lt;/p&gt;

&lt;p&gt;In this tutorial I'll address some of the main features that ConstraintLayout provides using Android's &lt;a href="https://developer.android.com/studio/write/layout-editor" rel="noopener noreferrer"&gt;LayoutEditor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To access the LayoutEditor click on the 'Design' tab.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpu0223s5qmfrvsld7m31.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpu0223s5qmfrvsld7m31.PNG" alt="Editor tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  LayoutEditor overview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fncdkqpjnl9ft7afzdnr7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fncdkqpjnl9ft7afzdnr7.jpg" alt="Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you're in the LayoutEditor, you can see I've marked some of the most important sections. From left to right you can see:&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Palette&lt;/strong&gt;: The palette contains most of the views you may need in your layout. To add a view (such a button) just find it in the &lt;em&gt;Palette&lt;/em&gt; and drag it to your &lt;em&gt;Component Tree&lt;/em&gt;. For some other views (from example views that come from libraries you added) you may need to go to the &lt;em&gt;Text&lt;/em&gt; tab (xml) and add it manually.&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Component Tree&lt;/strong&gt;: The component tree shows the hierarchy of your nested layouts (if required), the views inside each layout, the views' id and some other features like &lt;em&gt;guidelines&lt;/em&gt; or &lt;em&gt;barriers&lt;/em&gt; (we'll talk about them later).&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Device you're currently using&lt;/strong&gt;: I considered it important because sometimes you want to see how the layout changes on bigger or smaller smartphones. The LayoutEditor provides some options to do this. And on the left, you can choose to change the orientation of the screen to &lt;em&gt;landscape&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Attributes&lt;/strong&gt;: In this section you define the attributes (such as background, color, style, etc.) of a selected view, just like in the xml. To access more attributes, click on the double-arrow icon on the right. Another important part of &lt;em&gt;Attributes&lt;/em&gt; is the square with dots/lines. You'll use it to define &lt;em&gt;constraits&lt;/em&gt; and margins for a selected view.&lt;/p&gt;

&lt;h1&gt;
  
  
  ConstraintLayout features
&lt;/h1&gt;

&lt;p&gt;Now that we've located our tools, it's time to get into what we can do with the LayoutEditor and ConstraintLayout.&lt;/p&gt;

&lt;p&gt;The first thing to notice, is the dots that appear on the top, bottom, left and right of each view. By clicking on them and dragging the mouse, you can connect with another views to build your layout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fre3vebecryv82d5wt4tb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fre3vebecryv82d5wt4tb.PNG" alt="Boundaries"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MatchConstraint, WrapContent or Fixed
&lt;/h3&gt;

&lt;p&gt;When using ConstraintLayout you get to decide the way your view's boundaries (width and height) will be defined. We can edit this by clicking the icons (which might be arrows, a line or a zig-zag line) inside the square that represents our view or simply by editing the height and width attribures. From left to right:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsae2loda62vekc21psx0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsae2loda62vekc21psx0.jpg" alt="Boundaries"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Constraint&lt;/strong&gt;: Match constraint will stretch your view to it's connections. As you can see in the image below, I've connected textView to textView2, and I've selected &lt;em&gt;match_constraint&lt;/em&gt; as the width of textView. In the second image, I added a margin of '24' to the right of textview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fht7svcuyljelhsmbj8l9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fht7svcuyljelhsmbj8l9.jpg" alt="MatchConstraint"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember that the more constraints you have in a layout, the more responsive it becomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrap Content&lt;/strong&gt;: A common attribute on most ViewGroups. This simply means that te ViewGroup will be the size as its content. If we're talking about a TextView, the width will be as long as it's text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fixed&lt;/strong&gt;: By choosing &lt;em&gt;Fixed&lt;/em&gt; you define the width and length of the view. It's recommended to use &lt;em&gt;dp&lt;/em&gt; over &lt;em&gt;px&lt;/em&gt; or &lt;em&gt;in&lt;/em&gt; as units, because it considers the density of the smartphone's screen and adapts the view to it. Set it by simply editing the height and width attributes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Notice that you can choose different options for height and width, for example, your width can be defined by &lt;em&gt;MatchConstraint&lt;/em&gt; while your height uses &lt;em&gt;WrapContent&lt;/em&gt;, just like in any other ViewGroup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Center a view
&lt;/h3&gt;

&lt;p&gt;We can center a horizontally or/and vertically by right-clicking it and choosing the center option.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1yv9iuox61t0pwyhxqzt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1yv9iuox61t0pwyhxqzt.PNG" alt="Center View"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also center a view considering the connected views, for example: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhxeqnaa7euvoxfce3krk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhxeqnaa7euvoxfce3krk.PNG" alt="Center View"&gt;&lt;/a&gt;&lt;br&gt;
In this image, the texView at the left is centered horizontally considering the left constraint (parent) and the right constraint with textView2 (sibling). I've also have added a margin of 16 to both sides.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chain Views
&lt;/h3&gt;

&lt;p&gt;Using &lt;em&gt;chains&lt;/em&gt; is helpful when you have several consecutive views, for example, when you have three buttons at the end of your layout, or when you have a Fragment or Activity for user registration in your app. You can use either vertical or horizontal chains by selecting the veiws you want to chain in your component tree, right clicking and selecting &lt;em&gt;chain&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You can style a chain of views in 4 different ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spread&lt;/li&gt;
&lt;li&gt;Spread Inside&lt;/li&gt;
&lt;li&gt;Weighted&lt;/li&gt;
&lt;li&gt;Packed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Spread&lt;/strong&gt;: This is the default style when you choose the chain option. First I centered the three buttons vertically, then I selected the horizontlal chain option.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsez4pk0rig8zy8lyx70f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsez4pk0rig8zy8lyx70f.png" alt="Overview"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftok90zls3pstpoz0k1o7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftok90zls3pstpoz0k1o7.png" alt="Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spread Inside&lt;/strong&gt;: To use this option, you'll need to edit the attribute of 'layout_constraintHorizontal_chainStyle' directly form the xml. This is the result of applying a spread_inside horizontal chain to our buttons:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9kyl8e41m4qhxm334q2m.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9kyl8e41m4qhxm334q2m.PNG" alt="Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weighted&lt;/strong&gt;: When you choose either &lt;em&gt;spread&lt;/em&gt; or &lt;em&gt;spread_inside&lt;/em&gt; as style, you can set weights by editing each view 'layout_constraintHorizontal_weight' attribute. It works just as the 'layout_weight' in LinearLayout. In order for this to work, you must set the &lt;em&gt;width&lt;/em&gt; attributes to &lt;strong&gt;match_constraint&lt;/strong&gt;.&lt;br&gt;
In this image, I've set the &lt;em&gt;width&lt;/em&gt; of all of the buttons to &lt;strong&gt;match_constraint&lt;/strong&gt;, and I've added a &lt;em&gt;layout_constraintHorizontal_weight&lt;/em&gt; of .5 to the first button and .25 for the other ones, notice how the distribution changes.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx0cxmvqb8go6huas2mw6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx0cxmvqb8go6huas2mw6.PNG" alt="Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packed&lt;/strong&gt;: To pack your views, you'll need to edit the attribute of 'layout_constraintHorizontal_chainStyle' (just like with spread_inside) and set it to packed. This is how packed chained views look like:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiyqqj96e41jtjt27opwz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiyqqj96e41jtjt27opwz.PNG" alt="Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it for this post! any feedback from more experienced developers is always welcome. I'll make sure to upload Part II with more features and also brief tutorials of other Android Development topics.&lt;/p&gt;

&lt;p&gt;Happy coding.&lt;/p&gt;

</description>
      <category>android</category>
      <category>beginners</category>
      <category>mobile</category>
      <category>ui</category>
    </item>
    <item>
      <title>I'm happy that I'm not always happy with my code</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Tue, 01 Jan 2019 11:15:41 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/as-a-junior-developer-im-happy-that-im-not-always-happy-with-my-code-1em9</link>
      <guid>https://forem.com/miguelrodoma95/as-a-junior-developer-im-happy-that-im-not-always-happy-with-my-code-1em9</guid>
      <description>&lt;p&gt;This year has been amazing for me, even though I graduated as a Biomedical Engineer, I had the opportunity to enter to the world of programming, and discovered my true passion developing mobile applications as an Android engineer, and I have to say... I never tought that I would be enjoying myself so much at work.&lt;/p&gt;

&lt;p&gt;As Junior developers, we have to be aware that it's very likely that we're not the smartest (or more capable) people in our office, this is fine, I think that everyone goes through this at some point. We have to use our 'status' as beginners to learn as much as we can from other developers, and of course, from our own mistakes. Use this time in which the company consider you as junior/beginner to try different things and fail, and use this lessons to keep improving.&lt;/p&gt;

&lt;p&gt;In this post, I will address how important it is to acknowledge that even in our best work and even on the simplest implementations, there's always something we could have done better, more efficient, more readable, or just cleaner architrecture-wise. This realizaton will make us grow faster and better as developers. Please feel free to comment and/or discuss how you agree or disagree with what I wrote.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make sure you &lt;strong&gt;understood&lt;/strong&gt; that tutorial
&lt;/h2&gt;

&lt;p&gt;As a self-taught developer I had to learn by watching tutorials and straight up coding. Watching tutorials can be deceptive. Yes, following through the tutorial for some implementation will help you get the work done, but a common mistake that we beginners can make (or at least that I made) is to just copy whatever the instructor is coding without understanding what the program actually does. Make sure you understand what's happening, and if you don't, go deeper and start reading and learning about &lt;em&gt;that&lt;/em&gt; method or class that you wrote but have no idea what it actually does. When the time comes that you need to implement something similar, you will know how to do it, how it works, and now you will be able to explore other options and compare them to choose the one that makes your code better in every aspect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ever been ashamed of your past work? Perfect. You're better than you were when you wrote that
&lt;/h2&gt;

&lt;p&gt;Do you ever look back to your past work? Some past projects that you maybe didn't finish? Ever had the time to read a bit of that code you wrote? If you have, it's very likely that you've felt ashamed about it (I have). Feeling bad about your past code isn't bad, on the contrary, if you, a Junior deveoper, are able to recognize your mistakes and you feel capable to correct them, then I have good news for you, you're improving. The important thing is to be honest with yourself and learn to acknowledge when something you did was terrible and needs a clean up, or when it was ok and could've been done better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read and learn how it could've been done better
&lt;/h2&gt;

&lt;p&gt;Now that you've identified where your code can improve, it's time to start learning! It's very likely that we make the same mistake of implementing a solution fast just to correct or finish some feature, and this will lead us to hating our code in the future, so we can avoid this by checking the correct implementation of things in resources such as Youtube, Stack Overflow, Github, etc. or asking our more experienced colleagues how would they do it, and why. Remember that is important to understand what we're writing!&lt;/p&gt;

&lt;h2&gt;
  
  
  Pass on what you've learned
&lt;/h2&gt;

&lt;p&gt;Wise words from Master Yoda. Now that you're capable of recognizing and correcting your mistakes, it's time to help other get through them. As Junior developers, we don't always have te opportunity to help out our coworkers since we're not their first option when they need help. But when you get the chance, do what you can to help them out. Being able to help out others out of experience is one of the best things we can do, it makes us feel how we're getting better each day, and it makes our coworkers and managers realize that we are capable of taking on more responsabilities and challenges. And the cycle of implementing, failing and learning shall continue.&lt;/p&gt;

&lt;p&gt;There's a way to do it better - find it.&lt;br&gt;
-Thomas A. Edison&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>junior</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>What I've learned in my first year as an Android developer. Part I</title>
      <dc:creator>Miguel Rodriguez</dc:creator>
      <pubDate>Thu, 22 Nov 2018 01:53:34 +0000</pubDate>
      <link>https://forem.com/miguelrodoma95/what-ive-learned-in-my-first-year-as-an-android-developer-part-i-48e2</link>
      <guid>https://forem.com/miguelrodoma95/what-ive-learned-in-my-first-year-as-an-android-developer-part-i-48e2</guid>
      <description>&lt;p&gt;I'm a self-taught developer and I don't have a lot of experience yet, but the last year has been really life-changing for me since I started getting into software development, specifically for Android applications.&lt;/p&gt;

&lt;p&gt;Still, I would like to share what my first year as a developer has taught me with this community, and write about what I've learned and what I think are some important aspects to consider when getting started into Android development.&lt;/p&gt;

&lt;p&gt;I'll be attaching some  useful resources that have helped me.&lt;/p&gt;

&lt;p&gt;In this post I will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resources to get started.&lt;/li&gt;
&lt;li&gt;Considering different screen sizes.&lt;/li&gt;
&lt;li&gt;Programming languages (Java/Kotlin).&lt;/li&gt;
&lt;li&gt;Naming conventions for layout resource folders and class packages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please, if you're a more experienced developer or have a more complete knowledge of Android development and it's best practices, feel free complement and/or share how you agree or disagree with what I'm including in this post. Any comments that would help me or anyone reading this is welcome!&lt;/p&gt;

&lt;h1&gt;
  
  
  There are a lot of online resoures to get started
&lt;/h1&gt;

&lt;p&gt;When I decided I wanted to develop mobile apps for Android, the first thing I did was to look for online courses. This approach is accessible, you can go at your own pace, and you can even skip some lessons if you don't feel like covering them at the time. I got recommended Udemy's &lt;a href="https://www.udemy.com/the-complete-android-oreo-developer-course/" rel="noopener noreferrer"&gt;The Complete Android Oreo Devloper Course&lt;/a&gt;. The course is great, it's for people who has zero coding experience (so it was perfect for me at the time), and even if you have experience, it's a great introduction into the Android environment. While I was taking the course I was also working on a side project, so it helped me a lot to apply the concepts I was learning into an actual application idea I had.&lt;/p&gt;

&lt;p&gt;While I was watching the content of this course, I was also taking &lt;a href="https://dev.toJava%20In-Depth:%20Become%20a%20Complete%20Java%20Engineer!"&gt;Java in Depth: Become a Complete Java Engineer!&lt;/a&gt; which helped me to get a deeper knowledge of the language and to not being stuck learning just the basics I needed for Android.&lt;/p&gt;

&lt;p&gt;Other course that I can recommend, and that I'm taking on now it's Google's free &lt;a href="https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012" rel="noopener noreferrer"&gt;Developing Android Apps with Kotlin&lt;/a&gt;, available in Udacity. This one requires a bit of previous programming experience and knowledge of Android Studio, but it's very straightforward and covers the fundamental topics to get started and develop apps.&lt;/p&gt;

&lt;p&gt;YouTube videos and tutorials are also a great resource to learn specific features and implementations. There's almost always a video explaining how to do exactly what you want for your mobile app.&lt;/p&gt;

&lt;p&gt;Getting stuck and having a hard time understaning some things is part of the process. I've learned that 95% of your questions have already been asked and answered in sites such as Stack Overflow, GitHub, or in the &lt;a href="https://developer.android.com/" rel="noopener noreferrer"&gt;Official Android Developer&lt;/a&gt; documentation.&lt;/p&gt;

&lt;h1&gt;
  
  
  Don't forget to consider different screen sizes...
&lt;/h1&gt;

&lt;p&gt;As you may know there are thousands of different phones that use the Android operating system. Even if you're aware of this, it may not be the first thing you consider when you're just getting started learning and building apps.&lt;/p&gt;

&lt;p&gt;One of the first apps I made had a complex grid and some images on one of it's screens, and while I was building it I was testing it on my phone, so of course I was designing it so it would look good on MY phone.&lt;br&gt;
When I uploaded it in a friend's phone, SURPRISE! I realized how horrible it looked on other devices, the grid and the images didn't even fit the screen and it was kind of embarrasing. That was the first time I struggled with srcreen sizes and realized that it's a VERY important factor to consider when building apps for Android. Be sure to choose the right ViewGroup(s) and design for different devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choose your ViewGroup wisely
&lt;/h3&gt;

&lt;p&gt;A &lt;a href="http://tutorials.jenkov.com/android/view-viewgroup.html" rel="noopener noreferrer"&gt;ViewGroup&lt;/a&gt; is the container of the elements (Buttons, Texts, TextInputs, Images, etc.) in your screen and it's important to pick one according to how your content is going to be organized. Mixing a lot of ViewGroups or using them incorrectly can (and will) make your app look different (sometimes horrible) in other devices' screens that maybe you didn't considered while designing the UI.&lt;/p&gt;

&lt;p&gt;Some of the most popular ViewGroups are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linear Layout&lt;/li&gt;
&lt;li&gt;Relative Layout&lt;/li&gt;
&lt;li&gt;Constraint Layout&lt;/li&gt;
&lt;li&gt;Frame Layout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a lot more, which are used for other specific cases. Be sure to know them and choose the right one for your layout.&lt;/p&gt;

&lt;p&gt;In Android Studio, you can pick several different devices to get and idea about how your UI will look in said device.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0r25nhb4zri5thxtyfz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0r25nhb4zri5thxtyfz.PNG" alt="screen_sizes" width="800" height="733"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating layout.xml files for different screen densities
&lt;/h3&gt;

&lt;p&gt;Other way to approach this issue is to generate up to 4 or 5 .xml files for the same layout to &lt;a href="https://developer.android.com/training/multiscreen/screensizes" rel="noopener noreferrer"&gt;support different screen sizes&lt;/a&gt;.&lt;br&gt;
For example, if you have a main_activity_layout.xml, you may have to create files such as: main_activity_layout.xml(mdpi), main_activity_layout.xml(hdpi), main_activity_layout.xml(xhdpi), etc.&lt;/p&gt;

&lt;p&gt;This lets you to have different sizes for views, such as buttons, for the layout.xml(hdpi) than the size of the same button you have in layout.xml(xxhdpi). The app will identify the device's density and pick the layout file for said density.&lt;/p&gt;

&lt;p&gt;Here's and example of how your layout files would look like in your res/layout folder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8qluvmt5z0gwhezvyci.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8qluvmt5z0gwhezvyci.PNG" alt="This is how your layout files would look like" width="479" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Java or Kotlin?
&lt;/h1&gt;

&lt;p&gt;Both are good for Android development, I've worked with both of them and each have it's pros and cons. However, if you're a total beginner in programming and/or Android development, this is what I, based on my short experiece, would recommend:&lt;/p&gt;

&lt;h3&gt;
  
  
  Get started with Java
&lt;/h3&gt;

&lt;p&gt;I began programming apps with Java, and I would recommend that if you're a beginner (like me) you do as well. &lt;/p&gt;

&lt;p&gt;The main reason is that Java is still used a lot for Android development, and a lot of resources are still documented in it. It helped me a lot to find documentation, open source resources, and Stack Overflow answers for Android development topics in Java. So I think it's easier to get familiar with the whole Android environment when you find support for your doubts or documentation in the language you're using.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn Kotlin
&lt;/h3&gt;

&lt;p&gt;I recommend to learn and use Kotlin when you feel comfortable with basic functionalities and implementations for Android, such as handling buttons, listeners, using methods, creating classes and functions, etc.&lt;/p&gt;

&lt;p&gt;The way I see it, Kotlin is the present and future of Android development. Most of the new documentation and tools are made and documented to be programmed with Kotlin. If you've watched the latest Android Dev Summits almost all of the content is explained in Kotlin, and most of the documentation is already updated to Kotlin. &lt;/p&gt;

&lt;p&gt;A lot of job positions that I've seen are looking for developers who have worked with Kotlin or are at least interested in learning it.&lt;/p&gt;

&lt;p&gt;Kotlin has proven to be a powerful languange that makes coding apps for Android faster and cleaner.&lt;/p&gt;

&lt;h1&gt;
  
  
  Naming your class packages and layout resources
&lt;/h1&gt;

&lt;p&gt;Having an organized project can be not 100% intuitive. If you're working on a big and complex project you don't want your clases to be al mixed one after another. Your classes have different funcionalities in your project, some may be simple Activities or Fragments, others handle your http requests, and others may be adapters for your LisViews, and so on...&lt;/p&gt;

&lt;p&gt;You want your files to be organized, I'll share what I think it's a simple and effective approach to work on an organized project.&lt;/p&gt;

&lt;h3&gt;
  
  
  For classes:
&lt;/h3&gt;

&lt;p&gt;I personally like &lt;a href="https://blog.smartlogic.io/2013-07-09-organizing-your-android-development-code-structure/" rel="noopener noreferrer"&gt;this&lt;/a&gt; organization where you have separate packages for Activities, Fragments, Adapters, API methods for http requests, and some Util classes for helper methods. This has helped me a lot to keep a more organized project and to know which classes I can reuse in different parts of my project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqe1ywoi481opqdvka8x.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqe1ywoi481opqdvka8x.PNG" alt="Class organization" width="515" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  For layout resources:
&lt;/h3&gt;

&lt;p&gt;The link above also covers what I've found is a good way to keep your layout files organized. Since you can't separate your layout files in packages or folders as in clases, keeping a simple convention of naming activity_your_activity_name.xml can help you find them easily if you have a lot of layout files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz3908d75ax3lnveu945.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz3908d75ax3lnveu945.PNG" alt="Layout Organization" width="503" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I've found programming Android apps to be very fun and useful! I´ve really been enjoying myself in a way I've never had while working.&lt;/p&gt;

&lt;p&gt;Almost everyone has a smartphone now and the idea of creating for any kind of person in the world is pretty exciting, either if it's a game or an organization app, or something that addresses a social issue or solves a problem in healthcare. The possibilities are infinite!&lt;/p&gt;

&lt;p&gt;Being a self-taught developer, or trying to learn something by yourself is not easy, but it doesn´t have to be very hard either. Learn how YOU learn best, find support not only in communities and resources online, but also with friends or coworkers, there's nothing wrong in not knowing and/or struggling every once in a while. Remember that you're never the smartest person in the room, and if you are, then maybe you're in the wrong room. &lt;/p&gt;

&lt;p&gt;Keep learning and happy coding!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>android</category>
      <category>kotlin</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
