สำหรับสายงานฝั่ง 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 Life Cycle
เป็นสิ่งแรกๆและสิ่งสำคัญอย่างแรกๆของ Android Development เลยก็ว่าได้ เพราะ Activity คือหัวใจสำคัญหลักที่ทำให้แอปพลิเคชันทำงานได้ ดังนั้นถ้าไม่เข้าใจ Activity Life Cycle ก็เดาได้เลยว่าแอปพลิเคชันจะมีการทำงานไม่เป็นระบบระเบียบเป็นแน่แท้ ดังนั้นควรรู้ว่า Activity Life Cycle ประกอบไปด้วยอะไรบ้าง อันไหนจะทำงานเมื่อไร2. พื้นฐาน Java, แนวคิด OOP และการเขียนโปรแกรมแบบ MVC
เป็นเรื่องพื้นฐานในการเขียนแอปพลิเคชันเลยก็ว่าได้ ซึ่งพื้นฐานที่ดีก็จะทำให้เขียนโปรแกรมออกมาแล้วทำงานได้มีประสิทธิภาพ จัดการได้ง่าย มีการทำงานเป็นระบบ โดยเฉพาะอย่างยิ่ง OOP และ MVC ที่ใช้กันบ่อยมากใน Android Development3. รู้จักการใช้ Layout หรือ Widget พื้นฐานทั้งหลาย
Button, Text View, Edit Text, Image View, List View, Toggle Button, Linear Layout, Relative Layout และ Frame Layout ที่เป็น Component พื้นฐานของหน้าจอแอปพลิเคชัน ควรหัดใช้งานให้เป็นและทำความเข้าใจในแต่ละอย่างว่าทำงานยังไง เหมาะกับการใช้งานแบบไหน และมีข้อดีข้อเสียอย่างไร และถ้าเป็นไปได้ควร Custom View และ Layout เหล่านี้ให้เป็นด้วยเพราะในการทำงานจริงมีแอปพลิเคชันไม่กี่ตัวหรอกที่จะใช้ Component ที่มาจากระบบโดยไม่ปรับแต่งรูปลักษณ์หน้าตาเลย ส่วนใหญ่ล้วนต้องการปรับเปลี่ยนรูปแบบและรูปร่างของ Component อยู่แล้ว
4. ฝึกฝนการจัดวาง Layout
เป็นเรื่องพื้นฐานที่ควรชำนาญ แต่ก็เป็นเรื่องยากมากๆสำหรับผู้ที่หลงเข้ามาอ่านหลายๆคนเช่นกัน อาจจะเพราะว่านักพัฒนาส่วนใหญ่นั้นไม่ค่อยถูกกับเรื่องงานออกแบบซักเท่าไรแต่เรื่องจริงก็คือนักพัฒนาอาจจะไม่ได้เป็นคนออกแบบหน้าตาแอปพลิเคชันนั้นๆก็จริง อาจจะมีดีไซน์เนอร์ออกแบบให้ แต่คนที่ต้องมานั่งจัดวาง Layout ให้ออกมาเป็นไปตามที่ต้องการก็คือตัวเราเองนั่นแหละ ดังนั้นจึงอย่ามองข้ามเรื่องนี้เด็ดขาด หัดฝึกซะ!
5. คิดอย่างมี Logic และเข้าใจใน Workflow
อันนี้เสริมให้ครับ เพราะเป็นสิ่งที่โปรแกรมเมอร์ควรจะมี นั่นก็คือมีการคิดอย่างเป็นลำดับขั้นตอน มีเหตุมีผล เพราะนี่คือพื้นฐานในการเขียนโปรแกรมซักตัว ถ้าคิดอย่างไม่เป็นระบบ งานที่ออกมาก็จะไม่เป็นระบบมันคงจะแปลกดีถ้าสามารถเขียนงานออกมาตามที่ต้องการได้ แต่กลับไม่รู้ว่าแอปพลิเคชันนั้นทำอะไรไปบ้าง ดังนั้น Workflow เป็นอีกสิ่งหนึ่งที่สำคัญ ผู้ที่หลงเข้ามาอ่านควรรู้และเข้าใจการทำงานโดยรวมของแอปพลิเคชันว่ามีลำดับขั้นตอนการทำงานอย่างไร เมื่อมี Workflow ที่ดีก็จะช่วยให้การเขียนโค๊ดทำได้ดีขึ้นและง่ายขึ้น
6. พยายามอัพเดทข้อมูลและข่าวสารใหม่ๆเกี่ยวกับ Android อยู่เสมอ
มันคงจะตลกดี แต่ก็ฮาไม่ออก ถ้าบอกว่าตอนนี้ลองหัดเขียนแอนดรอยด์มาปีกว่าแล้ว แต่กลับไม่รู้ว่าแอนดรอยด์เวอร์ชันล่าสุดในตอนนี้คือเวอร์ชันอะไรAndroid Development คือการทำงานกับเทคโนโลยี และเทคโนโลยีที่ว่านี้มันก็อัพเดทและเปลี่ยนแปลงบ่อยมาก มาก และมากที่สุด (เรียกได้ว่ามีให้อัพเดทกันแทบตลอดเวลา) จึงเป็นหน้าที่หลักของนักพัฒนาอยู่แล้วที่ต้องคอยติดตามอัพเดทข้อมูลและศึกษาสิ่งใหม่ๆที่เพิ่มเข้ามาเรื่อยๆ
และเวลาศึกษาข้อมูลเหล่านี้ช่วยดูด้วยครับ ว่าข้อมูลมันเก่าหรือยัง เพราะโลกมันเปลี่ยนไว บทความสองปีที่แล้วอาจจะใช้ไม่ได้ในวันนี้ก็เป็นได้ ดังนั้นความสดใหม่ของเนื้อหาจึงเป็นสิ่งสำคัญในการศึกษาด้วยตัวเอง
Best Practice ก็เป็นอีกเรื่องที่สำคัญ ผู้ที่หลงเข้ามาอ่านคงไม่อยากไปนั่งศึกษาข้อมูลจากบางที่ แล้วมารู้ตัวทีหลังว่าไอ้ที่ได้ศึกษาไปนั่นมันเป็นวิธีที่ผิด ดังนั้นถ้าเป็นไปได้ควรดูความถูกต้องของข้อมูลที่ศึกษาด้วย เทียบกับหลายๆที่แล้ววิเคราะห์ว่าอันไหนถูกต้อง อันไหนไม่ดียังไง อันไหนเหมาะสม นั่นล่ะครับการศึกษาด้วยตัวเองที่ถูกต้อง
7. รู้จักการใช้งาน Resource
เจ้าของบล็อกหมายถึง Drawable Resource, Color Resource, String Resource, Value Resource หรือ Dimension Resource นั่นเอง ซึ่งพวกนี้จะช่วยให้สามารถจัดการกับแอปพลิเคชันได้ง่ายขึ้น เลิกได้แล้วกับวิธี Hard Code แต่จงหันมาใช้ Resource เหล่านี้ให้เกิดประโยชน์ซะ ควรรู้ว่ามีอะไรบ้าง แต่ละอันใช้งานยังไงเพราะเวลาทำงานจริงๆ พวก Resource เหล่านี้จะช่วยให้สะดวกมากขึ้น โดยเฉพาะในเรื่องของ Layout (ถ้าใช้งานอย่างถูกต้อง)
8. Version Control
ยุคสมัยนี้ควรใช้ Version Control ให้เป็นได้แล้วนะครับ เพราะในการทำงานหลายๆที่เดี๋ยวจะมีการใช้ Version Control เข้ามาจัดการกับงานแต่ละโปรเจคอยู่แล้ว เพื่อให้โปรเจคดำเนินไปได้ดี ไม่วุ่นวาย โดยเฉพาะการทำงานในระดับทีมดังนั้นการใช้งาน Version Control เป็นก็จะช่วยให้ได้เปรียบมากขึ้นเลยล่ะ (ใน Requirement สมัครงานหลายๆก็เขียนไว้) ซึ่งบางที่ก็ใช้ SVN บางที่ก็ใช้ Git ถ้าเป็นไปได้ก็ควรรู้จักการใช้งาน Git เป็นอย่างน้อยนะ เพราะเป็นที่นิยมกัน
9. อย่ามัวแต่ใช้ Activity หัดใช้ Fragment กันได้แล้ว
ทุกวันนี้งานส่วนใหญ่ใช้ Fragment กันซะส่วนใหญ่แล้ว เพราะต้องการลูกเล่นและรูปแบบการทำงานบางอย่างที่ Activity ไม่สามารถตอบโจทย์ได้เพียงลำพัง และโปรเจคบางตัวจะระดมไปด้วย Fragment หลายสิบตัวด้วยซ้ำ ดังนั้นถ้าไม่รู้วิธีจัดการกับ Fragment อย่างถูกต้อง ก็เตรียมโปรเจคบึ้มได้เลยจ้าดังนั้นควรใช้งาน Fragment เป็น รู้ว่า Fragment คืออะไร เอาไปใช้งานยังไง รวมไปถึงการใช้งาน View Pager ด้วย
10. เลิกใช้ AsyncTask โหลดภาพได้แล้ว Library ดีๆมีให้ใช้เยอะแยะ
การใช้งาน Thread หรือ AsyncTask เป็นสิ่งที่ควรศึกษาให้เข้าใจครับ แต่ในการใช้งานจริงๆต้องดูด้วยว่าประสิทธิภาพในการทำงานมันดีจริงๆหรือป่าว ลองหัดใช้ Library ต่างๆกันได้แล้วทุกวันนี้เจ้าของบล็อกยังเจอผู้ที่หลงเข้ามาอ่านบางคนโหลดภาพจากอินเตอร์เน็ตโดยใช้ AsycnTask กันอยู่แล้ว เปลี่ยนมาใช้ Library อย่าง Picasso หรือ Glide กันได้แล้ว เพราะมันช่วยจัดการกับการทำงานต่างๆให้หมดแล้ว แถมมีประสิทธิภาพกว่าเขียนเองด้วยซ้ำ
11. HTTP GET/POST หรือ REST และอื่นๆ ก็มี Library ให้เลือกเยอะแยะ
OkHttp, ION, Retrofit, Volley หรือ Asynchronous HTTP Client พวกนี้มีให้ใช้งานเช่นกัน อย่ามัวแต่เขียนเอง เพราะถ้ามัวแต่นั่งจัดการกับการเชื่อมต่อ Server ก็จะมีแต่เสียเวลามากเกินไป ซึ่ง Library หลายๆตัวก็จัดการให้เรียบร้อยแล้ว โดยที่ไม่จำเป็นต้องไปจัดการเองให้วุ่นวายแต่สิ่งที่สำคัญคือควรศึกษาหลายๆตัว แล้วเปรียบเทียบด้วยตัวเองว่าตัวไหนดีกว่ายังไง และตัวไหนเหมาะกับงานแบบไหน
12. จัดการกับข้อมูล JSON ให้เป็น
Requirement ในการเข้าทำงานหลายๆที่คือต้องเชื่อมต่อข้อมูลกับ Server ซึ่งต้องมีการรับส่งข้อมูลระหว่างกัน และส่วนใหญ่ก็จะนิยมใช้เป็น JSON (บางที่ก็เป็น XML) ดังนั้นควรศึกษาวิธีการจัดการกับข้อมูล JSON ซะ ว่ารับข้อมูลมายังไง แล้วจะดึงข้อมูลไปใช้ยังไง และจะลองเอา Library มาช่วยจัดการอย่างเช่น GSON ก็ได้ จะได้จัดการและเอาข้อมูลไปใช้งานได้ง่ายขึ้น13. เรียนรู้การใช้งาน Component ใหม่ๆกันบ้าง
Action Bar, Navigation Drawer, Snackbar, Toolbar, Recycler View หรือ FAB พวกนี้เป็น Component ที่เพิ่มเข้ามาใหม่ และนิยมใช้งานกันเยอะมาก รวมไปถึง 3rd Party Library อย่างเช่นใน GitHub อย่างล่าสุดทาง Google ก็ปล่อย Android Design Support 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 จะต้องรู้ในการทำงานจริงๆเพราะงั้นก็สู้ๆนะจ๊ะ