สิ่งที่คุณควรเรียนรู้ หากอยากเชี่ยวชาญในภาษา Java

06-ก.พ.-19

คัมภีร์เทพ IT

หากคุณอยากเป็น Programmer/Developer ที่เชี่ยวชาญใน Java เส้นทางอาชีพของคุณจะเริ่มต้นเมื่อคุณเขียน Code ในทุกๆ วัน, ฝึกฝน และเรียนรู้ทฤษฎีที่สำคัญๆ ซึ่งในบทความนี้จะมาบอกถึง สิ่งที่คุณควรเรียนรู้ หากอยากเชี่ยวชาญในภาษา Java ซึ่งมีอยู่ 3 ขั้นตอนหลักๆ เรามาดูกันดีกว่า ว่ามีอะไรบ้าง

Step 1: Java Core+

Level 0: Java Syntax

ใน Level นี้เปรียบเหมือนคุณเริ่มต้นฝึกเขียน ABC ในภาษา Java คุณไม่ต้องกังวลมากกับ Level นี้ เพียงแค่เริ่มเรียนรู้ Java Syntax ไปทีละขั้นระหว่างเริ่มฝึกฝน เช่น Object/ Class/ Method คืออะไร, Primitive types, Type String, Basic operators, Java if-else statement, Loop statements (for, while), Arrays

Level 1: OOP

เรื่อง OOP มีความสำคัญอย่างยิ่ง เป็นสิ่งสำคัญที่คุณจะต้องอ่านและปฏิบัติตาม OOP Principles หัวใจสำคัญของหัวข้อนี้ คือ Class inheritance, interface implementation, abstraction of data and behavior, encapsulation of data and class implementation, polymorphism and virtual methods ลองฝึกฝน Concepts และอ่านหนังสือเพิ่มเติม (เช่น Cay Horstmann, Gary Cornell Core Java, Object-Oriented Analysis and Design by McLaughlin)

Level 2: Java Collections

คุณสามารถเรียกกลุ่มของ Individual Objects ว่า Collection ซึ่ง Java ได้จัดเตรียม Collection Framework ซึ่งกำหนด Class และ Interface หลายรายการ เพื่อแสดงกลุ่มของ Object เป็น Single Unit คุณจะได้เรียนรู้ Data Structures ผ่านทาง Java Collections Interface (java.util.Collection) และ Map interface (java.util.Map) คุณอาจเรียกพวกมันทั้ง 2 ว่า “Roots” Interfaces ของ Java Collection Classes

Level 3: Java exceptions

Exception (หรือ Exceptional Event) เป็นสถานการณ์ที่ไม่ปกติ ซึ่งเกิดขึ้นระหว่างการ Execution ของ Program กลไกนี้ช่วยให้การตรวจจับ Bug ทำได้ง่ายขึ้น สำหรับ Exception classes ทั้งหมดถือเป็น subtypes ของ java.lang.Exception class และคุณควรต้องจะรู้จักมันเป็นอย่างดี

Level 4: Input/Output streams

Java แสดง Input และ Output operations ผ่าน Streams คุณสามารถจินตนาการ Streams เปรียบเสมือน Flow อย่างต่อเนื่องของ Data หัวข้อนี้อาจเป็นปัญหาสำหรับผู้ที่เพิ่งเริ่มต้น ข้อดีของการเรียนรู้หัวข้อนี้คือ คุณจะได้ค้นพบความหมายแท้จริงที่ซ่อนอยู่ของ System.out.println()

Level 5: Algorithms และ puzzles

มักจะมีการถกเถียงกันถึงประโยชน์ของการเรียนรู้วิธี Code ในเรื่อง Sorting หรือ Searching Algorithms ระหว่างที่คุณศึกษาเรื่อง Collections และ Data Structures คุณจะค้นพบวิธีการ Sorting/Searching ไปด้วย ภาษา Java และภาษาอื่นๆ ส่วนใหญ่มี Library ที่มีการใช้ Algorithms การ Sorting/Searching อยู่แล้ว นั่นหมายความว่า พวกมันได้ถูกเขียนขึ้นมาเพื่อให้คุณใช้งาน แล้วเราควรจะกังวลเรื่องการเรียนรู้วิธีเขียน Code พวกมันหรือไม่?

คำตอบที่เหมาะสมก็คือ คุณควรศึกษาเพื่อที่จะรู้ถึงแนวคิดที่ดีขึ้นของการเป็น Software Engineer ซึ่งมีประโยชน์มากในการสร้าง Algorithm ของคุณเอง รวมทั้งเข้าใจในความซับซ้อนของมัน สำหรับ Sorting และ Searching Algorithms ที่นิยมใช้งานกันทั้งหมด ได้ผ่านการแก้ไขกันมาแล้ว ดังนั้น คุณไม่จำเป็นต้องมาตรวจสอบความถูกต้องอีก

แล้ว Puzzles หรือ Non-standard Type ของ Java tasks ล่ะ? พวกมันมีประโยชน์อย่างมากสำหรับ Coder เพราะคุณจะได้เรียนรู้วิธีแก้ปัญหาที่ยากและคลุมเครือ

Level 6: Java Multithreading

เชื่อว่าทุกคนที่รู้มากกว่า Level 0 คงสามารถเขียน Program ให้แสดง “Hello World” กันได้อยู่แล้ว แต่จะดีกว่าไหมถ้าเราสามารถใช้ Java Thread API เพื่อ Print มันออกมา? หรือถ้าจะให้ Program นั้น Print “ Hello world” 5 ครั้งจาก 5 Thread ที่แตกต่างกันโดยไม่ต้องทำการสลับ Strings ล่ะ? จะว่าไปแล้ว Multithreading ถือเป็นเรื่องที่ยากสำหรับงานที่ง่ายๆ และถือเป็นเรื่องที่ต้องทำความเข้าใจมากพอสมควร

Level 7: Java Patterns

ณ ตอนนี้คุณคงพอจะสามารถเขียน Program ได้บ้างแล้ว แต่มันดีพอหรือยัง? มันมีประสิทธิภาพแล้วหรือยัง? ในการเขียน Code อย่างมืออาชีพ คุณต้องเรียนรู้ในเรื่อง Design Patterns ก่อน พวกมันเป็นตัวแทนของ Best Practice ที่ใช้โดย Software Developer ที่มีประสบการณ์ โดย Design Patterns สามารถแก้ปัญหาทั่วไปที่ Software Developer ต้องเจอในระหว่างการพัฒนา ซึ่ง Patterns เหล่านี้ที่ถูกเลือกมา ก็เกิดจากการลองผิดลองถูกจาก Software Developer เป็นจำนวนมากมาแล้วในช่วงหนึ่ง

Level 8: Unit testing

ทักษะที่สำคัญสำหรับ Programmer ที่กำลังเขียน Unit Tests ลงใน Code ของตนเอง เมื่อคุณทราบวิธีการเขียน Test แล้ว คุณควรทำมันให้ติดเป็นนิสัยกับ Project ต่างๆ ของคุณ Unit Tests มีประโยชน์มากกว่าการตรวจสอบโดยใช้ Console output และ Unit Tests ก็เป็นสิ่งแรกๆ ที่บริษัทมักไว้วางใจให้ Developer ใหม่เป็นคนเขียน

Level 9: Lambdas

เริ่มมีการรองรับการใช้ Lambda Expressions มาตั้งแต่ Java 8 แต่ก็มี Programmer บางส่วนที่ยังไม่ได้นำมาใช้ แต่ปัจจุบันแนวคิดในเรื่อง  “tasks สำหรับ Java Junior” ยังรวมไปถึง การจัดการกับ Lambda Expressions ด้วย ดังนั้น จึงขอแนะนำให้คุณเรียนรู้พวกมันด้วย

Level 10: Serialization in JSON, RMI, HttpUrlConnection, socket

เรื่องเหล่านี้เหมาะกับ Software Developer ที่มีความรู้ในระดับกลาง – สูง จะต้องใช้ความรู้ที่ลึกยิ่งขึ้น และมันก็ทำหน้าที่เป็นตัวเชื่อมไปสู่ Project งานต่างๆ, เพื่อใช้ในการฝึกงาน และการทำงานในอนาคตอีกด้วย

จะหาที่ฝึกฝน Level 0-10 ได้จากไหนบ้าง

CodeGymที่นี่มีคอร์ส Java Core ที่มีแบบทดสอบให้คุณฝึกฝนนับ 1,000 บททดสอบ

W3resourceเป็นเว้บไซต์ที่เป็นที่มีชื่อเสียงและเป็นที่รู้จักเป็นอย่างดีสำหรับ Web Developers

GeeksForGeeksถือเป็นแหล่ง Resource ที่ดีโดยเฉพาะอย่างยิ่งในเรื่อง Algorithms และ Puzzles ที่มีคอร์สและแบบทดสอบต่างๆ มากมาย

Step 2: Add-ons

Java Developer ไม่เพียงใช่แค่ Java แต่ยังใช้เทคโนโลยีอื่นๆ ด้วย บางเทคโนโลยีก็กลายเป็นมาตรฐานที่คนไอทีต้องรู้ไปแล้ว แต่ก็ไม่ได้หมายความว่า คุณจะต้องรู้ในเชิงลึกเกี่ยวกับเทคโนโลยีเหล่านั้นเหมือนอย่าง Java Core เพียงแค่เรียนรู้บางส่วนของพวกมัน ซึ่งอาจเป็นประโยชน์ในการฝึกงานหรือการทำงานของคุณได้

Git: เป็น Version-Control System ที่ใช้งานกันอย่างแพร่หลาย ซึ่ง Git ถูกใช้เพื่อการ Track การเปลี่ยนแปลง (Change) ในไฟล์คอมพิวเตอร์ หรือทำงานในไฟล์เหล่านั้นร่วมกันโดยบุคคลหลายๆ คน หากคุณต้องการเป็น Programmer มืออาชีพ การเข้าใจใน Git ถือเป็นสิ่งจำเป็น และแทบทุกบริษัท Software ก็ใช้งาน Git

คุณสามารถศึกษาเรื่อง Git เพิ่มเติมได้ที่: Learn Git Branching หรือ what is Git

JavaScript: JavaScript เป็นภาษา Script เชิง Object-Oriented ที่ใช้งานได้หลาย Platform ซึ่งสามารถพบได้ใน Web Browser ต่างๆ JavaScript สามารถเชื่อมต่อกับ Object ของ Environment เพื่อให้สามารถควบคุม Program ได้ ดังนั้น เราจึงพบเห็น JavaScript ได้ในทุกหนทุกแห่ง และแม้ว่าคุณจะไม่ได้ทำงานเป็น Front-end Developer แต่การมี "JavaScript" อยู่ใน CV ก็ถือเป็นข้อได้เปรียบอย่างหนึ่ง

คุณสามารถศึกษา JavaScript เพิ่มเติมได้ที่:  w3resource หรือ codecademy

SQL: คำนิยามใน Wikipedia กล่าวว่า “Structured Query Language เป็น Domain-Specific Language ที่ถูกใช้ใน Programming และถูกออกแบบมาเพื่อจัดการกับ Data ใน Relational Database Management System (RDBMS) หรือการประมวลผลแบบต่อเนื่องของข้อมูลใน Relational Database Management System (RDBMS)” มันค่อนข้างง่ายหากจะเรียนรู้มันในระดับเริ่มต้น และเชื่อว่า Programmer แทบทุกคนต้องเคยใช้ SQL มาแล้วไม่มากก็น้อย

คุณสามารถศึกษา SQL เพิ่มเติมได้ที่: SQLBolt หรือ w3schools

Step 3: Became a master

Java Developer ส่วนใหญ่มักทำงานใน 2 ส่วน คือ Mobile Technology หรือไม่ก็ Enterprise Project หลังจากที่คุณได้รับความรู้หลักๆ ใน 2 Step หลักๆ ในข้างต้นแล้ว เราจะแบ่ง 2 ส่วน ที่เกี่ยวข้องกับการทำงานคร่าวๆ ดังนี้

Mobile Technologies

ความรู้เกี่ยวกับ Java ช่วยเปิดโลกแห่งการพัฒนา Android สำหรับคุณ จุดเริ่มต้นที่ดีที่คุณจะสามารถเรียนรู้ Android Programming คือ Google Developers Training

Enterprise technologies

ในส่วนนี้ประกอบไปด้วยเทคโนโลยีมากมายที่อาจจะยากหากคุณจะเรียนรู้ด้วยตัวเอง มันดีกว่าหากคุณไปหาคอร์สเรียน หรือเรียนรู้จากการฝึกงาน มันจะมีประโยชน์มากหากคุณได้เรียนรู้ Spring (ซึ่งเป็น Java Framework ที่ได้รับความนิยมมากที่สุดตัวหนึ่ง) และ Hibernate (ซึ่งเป็น Object-Relational Mapping Tool) รวมทั้งเทคโนโลยีอื่นๆ ที่เกี่ยวข้อง ซึ่งคุณสามารถเรียนรู้ได้แบบฟรีๆ ใน Udemy Course

หวังว่าบทความนี้จะเป็น Guideline ให้กับคนที่อยาก Expert ในภาษา Java และหากใครที่กำลงตัดสินใจเลือกภาษา Java ก็ขออวยพรแบบเรื่อง Star Wars คือ “May the Force Be with You” หรือ "ขอพลังจงสถิตอยู่กับท่าน"

ที่มา:  https://levelup.gitconnected.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด