17 พื้นฐานที่ควรรู้สำหรับสายงาน Android Developer

สำหรับสายงานฝั่ง Mobile Developer ในตอนนี้ ก็ยังคงเป็นที่ต้องการของตลาดอยู่ และน่าจะมีผู้ที่หลงเข้ามาอ่านหลายๆคนที่ตั้งเป้าหมายอยากจะทำงานเป็น Android Developer ดังนั้นเจ้าของบล็อกจึงขอฝากบทความนี้ให้เป็นบทความแนะนำสำหรับทุกๆท่านที่อยากจะผันตัวมาทำงานสายนี้นะครับ

Android Developer ยังคงเป็นที่ต้องการของตลาด

เป็นเรื่องจริงของตลาดบ้านเราในตอนนี้เลยก็ว่าได้ ถึงแม้ว่าทุกวันนี้จะมี Android Dev เพิ่มขึ้นเรื่อยๆก็ตาม แต่ความเป็นจริงในตอนนี้ก็คือ

Android Developer นั้นมีเยอะ แต่ Android Developer ที่ทำงานได้จริงกลับมีน้อย

อันนี้ว่ากันจากประสบการณ์จริงเลย Android Dev ส่วนใหญ่เกิดจากการอยากลอง และหลายๆคนลองด้วยการลองทำงานจริงๆ ทั้งๆที่พื้นฐานยังไม่เพียงพอ จึงทำให้มีเพียงน้อยคนเท่านั้นที่ก้าวเข้าสู่สาย Android Dev และสามารถทำงานได้จริงๆ

ดังนั้นปัญหาหลักๆเลยก็คือความสามารถไม่เพียงพอแม้แต่การเป็น Android Dev ระดับ Junior (ยิ่งเป็นระดับ Senior ยิ่งไม่ต้องพูดถึงว่าหาตัวกันยากแค่ไหน)

แล้ว Junior Android Developer ควรรู้อะไรบ้างล่ะ?

นี่คืออีกหนึ่งคำถามที่ผู้ที่หลงเข้ามาอ่านหลายๆคนได้ถามเจ้าของบล็อก ดังนั้นเจ้าของบล็อกจึงถือโอกาสเขียนบทความนี้เลย ผู้ที่หลงเข้ามาอ่านคนไหนที่สนใจจะเดินเส้นทางนี้ก็จะได้ศึกษาเตรียมความพร้อมเพื่อเข้าสู่การเป็น Android Dev

และนี่คือพื้นฐานที่เหล่า Junior Android Developer ควรจะรู้และเข้าใจครับ

1. Activity Lifecycle

เป็นสิ่งแรกๆและสิ่งสำคัญอย่างแรกๆของ Android Development เลยก็ว่าได้ เพราะ Activity คือหัวใจสำคัญหลักที่ทำให้แอปทำงานได้ ดังนั้นถ้าไม่เข้าใจ Activity Lifecycle ก็เดาได้เลยว่าแอปจะมีการทำงานไม่เป็นระบบระเบียบเป็นแน่แท้ ดังนั้นควรรู้ว่า Activity Lifecycle ประกอบไปด้วยอะไรบ้าง อันไหนจะทำงานเมื่อไร

2. พื้นฐาน Java, แนวคิด OOP และการเขียนโปรแกรมแบบ MVC

เป็นเรื่องพื้นฐานในการเขียนแอปเลยก็ว่าได้ ซึ่งพื้นฐานที่ดีก็จะทำให้เขียนโปรแกรมออกมาแล้วทำงานได้มีประสิทธิภาพ จัดการได้ง่าย มีการทำงานเป็นระบบ โดยเฉพาะอย่างยิ่ง OOP และ MVC ที่ใช้กันบ่อยมากใน Android Development

3. รู้จักการใช้ Layout หรือ Widget พื้นฐานทั้งหลาย

Button, TextView, EditText, ImageView, RecyclerView, ToggleButton, LinearLayout, FrameLayout และ ConstraintLayout ที่เป็น Component พื้นฐานของหน้าจอแอป ควรหัดใช้งานให้เป็นและทำความเข้าใจในแต่ละอย่างว่าทำงานยังไง เหมาะกับการใช้งานแบบไหน และมีข้อดีข้อเสียอย่างไร และถ้าเป็นไปได้ควร Custom View และ Layout เหล่านี้ให้เป็นด้วย

เพราะในการทำงานจริงมีแอปไม่กี่ตัวหรอกที่จะใช้ Component ที่มาจากระบบโดยไม่ปรับแต่งรูปลักษณ์หน้าตาเลย ส่วนใหญ่ล้วนต้องการปรับเปลี่ยนรูปแบบและรูปร่างของ Component อยู่แล้ว

4. ฝึกฝนการจัดวาง Layout

เป็นเรื่องพื้นฐานที่ควรชำนาญ แต่ก็เป็นเรื่องยากมากๆสำหรับผู้ที่หลงเข้ามาอ่านหลายๆคนเช่นกัน อาจจะเพราะว่านักพัฒนาส่วนใหญ่นั้นไม่ค่อยถูกกับเรื่องงานออกแบบซักเท่าไร

แต่เรื่องจริงก็คือนักพัฒนาอาจจะไม่ได้เป็นคนออกแบบหน้าตาแอปนั้นๆก็จริง อาจจะมีดีไซน์เนอร์ออกแบบให้ แต่คนที่ต้องมานั่งจัดวาง Layout ให้ออกมาเป็นไปตามที่ต้องการก็คือตัวเราเองนั่นแหละ ดังนั้นจึงอย่ามองข้ามเรื่องนี้เด็ดขาด หัดฝึกซะ!

5. คิดอย่างมี Logic และเข้าใจใน Workflow

อันนี้เสริมให้ครับ เพราะเป็นสิ่งที่โปรแกรมเมอร์ควรจะมี นั่นก็คือมีการคิดอย่างเป็นลำดับขั้นตอน มีเหตุมีผล เพราะนี่คือพื้นฐานในการเขียนโปรแกรมซักตัว ถ้าคิดอย่างไม่เป็นระบบ งานที่ออกมาก็จะไม่เป็นระบบ

มันคงจะแปลกดีถ้าสามารถเขียนงานออกมาตามที่ต้องการได้ แต่กลับไม่รู้ว่าแอปนั้นทำอะไรไปบ้าง ดังนั้น Workflow เป็นอีกสิ่งหนึ่งที่สำคัญ ผู้ที่หลงเข้ามาอ่านควรรู้และเข้าใจการทำงานโดยรวมของแอปว่ามีลำดับขั้นตอนการทำงานอย่างไร เมื่อมี Workflow ที่ดีก็จะช่วยให้การเขียนโค้ดทำได้ดีขึ้นและง่ายขึ้น

6. พยายามอัพเดทข้อมูลและข่าวสารใหม่ๆเกี่ยวกับ Android อยู่เสมอ

มันคงจะตลกดี แต่ก็ฮาไม่ออก ถ้าบอกว่าตอนนี้ลองหัดเขียนแอนดรอยด์มาปีกว่าแล้ว แต่กลับไม่รู้ว่าแอนดรอยด์เวอร์ชันล่าสุดในตอนนี้คือเวอร์ชันอะไร

Android Development คือการทำงานกับเทคโนโลยี และเทคโนโลยีที่ว่านี้มันก็อัพเดทและเปลี่ยนแปลงบ่อยมาก มาก และมากที่สุด (เรียกได้ว่ามีให้อัพเดทกันแทบตลอดเวลา) จึงเป็นหน้าที่หลักของนักพัฒนาอยู่แล้วที่ต้องคอยติดตามอัพเดทข้อมูลและศึกษาสิ่งใหม่ๆที่เพิ่มเข้ามาเรื่อยๆ

และเวลาศึกษาข้อมูลเหล่านี้ช่วยดูด้วยครับ ว่าข้อมูลมันเก่าหรือยัง เพราะโลกมันเปลี่ยนไว บทความสองปีที่แล้วอาจจะใช้ไม่ได้ในวันนี้ก็เป็นได้ ดังนั้นความสดใหม่ของเนื้อหาจึงเป็นสิ่งสำคัญในการศึกษาด้วยตัวเอง

Best Practice ก็เป็นอีกเรื่องที่สำคัญ ผู้ที่หลงเข้ามาอ่านคงไม่อยากไปนั่งศึกษาข้อมูลจากบางที่ แล้วมารู้ตัวทีหลังว่าไอ้ที่ได้ศึกษาไปนั่นมันเป็นวิธีที่ผิด ดังนั้นถ้าเป็นไปได้ควรดูความถูกต้องของข้อมูลที่ศึกษาด้วย เทียบกับหลายๆที่แล้ววิเคราะห์ว่าอันไหนถูกต้อง อันไหนไม่ดียังไง อันไหนเหมาะสม นั่นล่ะครับการศึกษาด้วยตัวเองที่ถูกต้อง

7. รู้จักการใช้งาน Android Resource

ซึ่งก็คือเหล่า Drawable Resource, Color Resource, String Resource, Value Resource หรือ Dimension Resource นั่นเอง พวกนี้จะช่วยให้สามารถจัดการกับแอปได้ง่ายขึ้น เลิกได้แล้วกับวิธี Hard Code แต่จงหันมาใช้ Resource เหล่านี้ให้เกิดประโยชน์ซะ ควรรู้ว่ามีอะไรบ้าง แต่ละอันใช้งานยังไง

เพราะเวลาทำงานจริงๆ พวก Resource เหล่านี้จะช่วยให้สะดวกมากขึ้น โดยเฉพาะในเรื่องของ UI Layout (ถ้าใช้งานอย่างถูกต้อง)

8. Version Control

ยุคสมัยนี้ควรใช้ Version Control ให้เป็นได้แล้วนะครับ เพราะในการทำงานหลายๆที่เดี๋ยวจะมีการใช้ Version Control เข้ามาจัดการกับงานแต่ละโปรเจคอยู่แล้ว เพื่อให้โปรเจคดำเนินไปได้ดี ไม่วุ่นวาย โดยเฉพาะการทำงานในระดับทีม

ดังนั้นการใช้งาน Version Control เป็นก็จะช่วยให้ได้เปรียบมากขึ้นเลยล่ะ (ใน Requirement สมัครงานหลายๆก็เขียนไว้) ถ้าเป็นไปได้ก็ควรรู้จักการใช้งาน Git เป็นอย่างน้อย เพราะเป็น Version Control ที่นิยมที่สุดในตอนนี้

9. อย่ามัวแต่ใช้ Activity หัดใช้ Fragment กันได้แล้ว

ทุกวันนี้งานส่วนใหญ่ใช้ Fragment กันซะส่วนใหญ่แล้ว เพราะต้องการลูกเล่นและรูปแบบการทำงานบางอย่างที่ Activity ไม่สามารถตอบโจทย์ได้เพียงลำพัง และโปรเจคบางตัวจะระดมไปด้วย Fragment หลายสิบตัวด้วยซ้ำ ดังนั้นถ้าไม่รู้วิธีจัดการกับ Fragment อย่างถูกต้อง ก็เตรียมโปรเจคบึ้มได้เลยจ้า

ดังนั้นควรใช้งาน Fragment เป็น รู้ว่า Fragment คืออะไร เอาไปใช้งานยังไง รวมไปถึงการใช้งาน View Pager ด้วย

10. เลิกใช้ AsyncTask โหลดภาพได้แล้ว Library ดีๆมีให้ใช้เยอะแยะ

การใช้งาน Thread หรือ AsyncTask เป็นสิ่งที่ควรศึกษาให้เข้าใจครับ แต่ในการใช้งานจริงๆต้องดูด้วยว่าประสิทธิภาพในการทำงานมันดีจริงๆหรือป่าว ลองหัดใช้ Library ต่างๆกันได้แล้ว

ทุกวันนี้เจ้าของบล็อกยังเจอผู้ที่หลงเข้ามาอ่านบางคนโหลดภาพจากอินเตอร์เน็ตโดยใช้ AsycnTask กันอยู่แล้ว เปลี่ยนมาใช้ Library อย่าง Picasso หรือ Glide กันได้แล้ว เพราะมันช่วยจัดการกับการทำงานต่างๆให้หมดแล้ว แถมมีประสิทธิภาพกว่าเขียนเองด้วยซ้ำ

11. RESTful เดี๋ยวนี้ก็มี Library ให้เลือกเยอะแยะ

OkHttp, Retrofit หรือ Volley พวกนี้มีให้ใช้งานเช่นกัน อย่ามัวแต่เขียนเอง เพราะถ้ามัวแต่นั่งจัดการกับการเชื่อมต่อ Server ก็จะมีแต่เสียเวลามากเกินไป ซึ่ง Library หลายๆตัวก็จัดการให้เรียบร้อยแล้ว โดยที่ไม่จำเป็นต้องไปจัดการเองให้วุ่นวาย

แต่สิ่งที่สำคัญคือควรศึกษาหลายๆตัว แล้วเปรียบเทียบด้วยตัวเองว่าตัวไหนดีกว่ายังไง และตัวไหนเหมาะกับงานแบบไหน

12. จัดการกับข้อมูล JSON ให้เป็น

Requirement ในการเข้าทำงานหลายๆที่คือต้องเชื่อมต่อข้อมูลกับ Server ซึ่งต้องมีการรับส่งข้อมูลระหว่างกัน และส่วนใหญ่ก็จะนิยมใช้เป็น JSON (บางที่ก็เป็น XML) ดังนั้นควรศึกษาวิธีการจัดการกับข้อมูล JSON ซะ ว่ารับข้อมูลมายังไง แล้วจะดึงข้อมูลไปใช้ยังไง และจะลองเอา Library มาช่วยจัดการอย่างเช่น GSON ก็ได้ จะได้จัดการและเอาข้อมูลไปใช้งานได้ง่ายขึ้น

13. เรียนรู้การใช้งาน Component ใหม่ๆกันบ้าง

ViewPager, NavigationDrawer, Snackbar, Toolbar หรือ FloatingActionButton พวกนี้เป็น Component ที่เพิ่มเข้ามาใหม่ และนิยมใช้งานกันเยอะมาก รวมไปถึง 3rd Party Library อย่างเช่นใน GitHub อย่างล่าสุดทาง Google ก็ปล่อย Material Components Library มาให้ใช้กันแล้วด้วย

ผู้ที่หลงเข้ามาอ่านควรเรียนรู้เพิ่มเติมอยู่ตลอดเวลาด้วย อย่ามัวแต่ใช้ Component พื้นฐานอย่างเดียว เพราะหลายๆตัวอาจจะช่วยให้งานจบได้ง่ายขึ้นและไว้ขึ้น ถ้ารู้จักใช้งานเป็น

14. อย่ามัวแต่พึ่ง Library อย่างเดียว เรื่องพื้นฐานก็ควรศึกษาอยู่ดี

อาจจะดูขัดๆกับข้อที่ผ่านมา แต่เรื่องจริงอย่างหนึ่งก็คือมีนักพัฒนาหลายๆคนที่ใช้แต่ Library จนติดเป็นนิสัย และเมื่อ Library นั้นๆเกิดมีปัญหาขึ้นมาก็ไม่รู้จะแก้ยังไง เพราะรู้แค่วิธีใช้ แต่ไม่รู้ว่ามันทำงานยังไง

ดังนั้นถ้าเป็นไปได้เรื่องพื้นฐานหรือวิธีพื้นๆก็ควรลองศึกษาดูบ้าง แต่ก็ดูว่าควรเอาไปใช้งานจริงหรือป่าว บางเรื่องอาจจะศึกษาไว้เป็นพื้นฐานก็พอ แต่เวลาใช้งานจริงก็ค่อยเลือก Library ที่เหมาะสม

15. หัดใช้ Android Studio ให้ชำนาญ

Android Studio เป็น IDE ที่ฉลาดพอสมควร มีเครื่องมือต่างๆนานาที่จะช่วยให้สามารถเขียนโค้ดได้สะดวกมากขึ้น ไวมากขึ้น ดังนั้นถ้ารู้ความสามารถของ Android Studio ก็มีชัยไปกว่าครึ่งแล้ว

Gradle, Dependencies, Build Variant รวมไปถึงคีย์ลัดและ Plugin ต่างๆนานาควรรู้จักและใช้งานให้เป็นไว้ดีกว่านะ

16. รู้จักและเข้าใจกับหน่วย DP บ้างอะไรบ้าง

ยังมีอีกหลายๆอย่างที่นักพัฒนาหลายๆคนรู้ว่าใช้ยังไง แต่ไม่รู้ว่าเพราะอะไร และทำไม ซึ่งหน่วย dp ก็เป็นหนึ่งในนั้นๆ ทั้งๆที่หน่วย dp ช่วยให้นักพัฒนาสามารถรับมือกับหน้าจอหลากหลายขนาดได้อย่างง่ายดาย แต่สิ่งที่เกิดขึ้นคือไม่รู้วิธีใช้มันรับมืออย่างไรนั่นเอง ดังนั้นควรศึกษาและทำความเข้าใจให้ได้ซะ เพราะคนที่ต้องมานั่งรับมือกับ Fragmentation ของหน้าจอก็คือตัวเราเองที่เป็นคนเขียนโค้ด

17. ควรมี Soft Skill

Android Dev ส่วนใหญ่จะขาด Soft Skill หรือความสามารถในการพูดคุยสื่อสาร ซึ่งผู้ที่หลงเข้ามาอ่านหลายๆคนมักจะบอกว่ามันเป็นเรื่องปกติของโปรแกรมเมอร์ที่พูดไม่ค่อยเก่ง พูดไม่ค่อยเข้าใจ หรือพูดไม่รู้เรื่อง (โดยเฉพาะตอนสัมภาษณ์ ไม่รู้เป็นอะไรกัน)

แต่เจ้าของบล็อกมองว่ามันคือสิ่งที่โปรแกรมเมอร์มองข้ามกันไปจนคิดว่ามันเป็นเรื่องปกติมากกว่า เพราะโปรแกรมเมอร์ก็เป็นคนๆหนึ่งที่มีชีวิตจิตใจเหมือนคนทั่วไป ดังนั้นก็ควรมี Soft Skill เหมือนคนอื่นๆสิ

และบางครั้งการมี Soft Skill ที่ดีก็จะช่วยเปิดโอกาสในการพัฒนาได้มากขึ้นอีกด้วยนะเออ

นี่คือส่วนหนึ่งของพื้นฐานที่ Android Dev ควรมี

ทั้ง 17 ข้อนี้ถูกใช้งานค่อนข้างบ่อยมากในการทำงานจริงๆ ซึ่งเจ้าของบล็อกเลือกมาแต่อันที่น่าจะเหมาะเป็นแนวทางสำหรับมือใหม่หรือ Junior ทั้งหลายที่คิดว่าตัวเองยังขาดอะไรไปอยู่ แต่ในความเป็นจริงยังมีอีกมากมายก่ายกองที่ Android Dev จะต้องรู้ในการทำงานจริงๆ

เพราะงั้นก็สู้ๆนะจ๊ะ

ถ้าทำได้ทั้งหมด 17 ข้อ แล้วยังไงต่อ?

จะมัวรออะไรอยู่ล่ะครับ เส้นทาง Senior Android Developer รออยู่นะ จงอย่าหยุดพัฒนาตัวเองครับ จงก้าวต่อไปให้ถึงระดับ Senior ต่อสิครับ เพราะโลกของ Android Dev มันเปลี่ยนแปลงไวเสมอ

อยากให้ Android Dev ที่ทำงานได้จริงในบ้านเราเพิ่มขึ้นเยอะๆครับ