สเปคสาวในฝัน….??

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

ไอ้คนถามเขาแบบเห็นผมโสดแทบจะตลอดชีวิต (เคยออกเดทกับเขาบ้างแต่ก็แค่แป๊บๆ) เขาก็คงสมเพศผมล่ะมั้ง ก็เลยอยากจะหาทางช่วย จะลองหาว่าใครที่ดูแล้วน่าจะถูกใจผมบ้างกระมัง

ออกตัวก่อนว่าผมเป็นประเภท Mr. Anything คือคำตอบของคำถามส่วนใหญ่ที่ผมตอบก็คือ “อะไรก็ได้” ดังนั้นไอ้สเปคของผมเนี่ยอันที่จริงไม่มีอะไรตายตัวเลยสักกะอย่าง และเอาเข้าจริง ๆ ผมว่าการที่จะเอาสเปคมาดูว่าคนนี้น่าจะเป็นที่ถูกใจหรือเปล่าเนี่ยผมว่ามันง่ายไปนิด คือจากประสพการณ์ เวลาที่เราคบคนไม่ว่าจะผู้หญิงหรือผู้ชายก็ตาม พอเราสนิทจนถึงระดับนึงต่างฝ่ายจะเริ่มแสดงพฤติกรรมบางอย่างที่จะไม่แสดงออกถ้าไม่สนิทกัน บางคนเรียกว่าเปิดใจ ในขณะอีกหลายคนเรียกว่าสันดาน ดังนั้นมันมีโอกาสสูงมากที่พอรู้จักกันไปเรื่อย ๆ แล้วพบทีหลังว่าผิดสเปค

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

เอาเถอะ แต่ผมจะลองดูละกันนะ สนุก ๆ

1. ไม่ใช่ผู้ชาย และ ไม่เคยเป็นผู้ชายมาก่อน

ข้อนี้นี่ … ผมว่ามันเป็นอะไรที่ชัดเจนมากว่าผมเป็นผู้ชายและสนใจในเพศตรงข้าม ไม่ใช่พวกไม้ป่าเดียวกัน ดังนั้นใครที่เป็นผู้ชายแล้วสนใจในตัวผม ไปจีบคนอื่นเถอะครับ ผมขอร้อง ผมเดือดร้อนเพราะเรื่องไม่เป็นเรื่องแบบนี้มาสองสามครั้งแล้วล่ะ
ส่วนที่ว่าไม่เคยเป็นผู้ชายมาก่อนนี่อาจจะฟังดูไม่เท่าเทียมกันทางเพศ ผมอาจจะมีอคติต่อเพศที่สามมากประมาณนึง และเท่าที่สังเกตดูพฤติกรรมของคนกลุ่มนี้ผมรู้สึกไม่ค่อยเคารพในตัวพวกเขาสักเท่าไหร่ มันมีพฤติกรรมบางอย่างที่คนส่วนใหญ่ในกลุ่มนี้แสดงออกมา อย่างเช่นการเรียกผู้หญิงว่า “ชะนี” ซึ่งผมถือว่าเป็นการดูถูกผู้อื่นอย่างรุนแรง (ผมเกลียดการดูถูกครับ พูดกันตรง ๆ)

2. ไม่ต้องสวย ไม่ต้องหุ่นดี ไม่ต้องมีสเน่ห์ดึงดูดอะไรมากมาย

…ขอแค่ไม่ตื่นมาผวาเหมือนอยู่ในฝันร้ายก็พอ …
ฟังดูเหมือนดูถูกเพศแม่อีกแล้ว ผมไม่ได้ตั้งใจนะ คือผมคิดอย่างนี้จริง ๆ ผมเชื่อว่ารูปลักษณ์ภายนอกไม่นานมันก็จากไป จะไปยื้อให้มันอยู่ก็เปลืองตังค์ แล้วมันก็คงอยู่ได้ไม่นานนักหรอก 
ผมเองก็ไม่ได้ดูแลตัวเองอะไรมากมาย ทำตามอย่างที่ชอบ อยากกินก็กิน อยากนอนก็นอน ดังนั้นถ้าจะต้องอยู่กับคนที่แบบ โอ้โห สวยหยาดเยิ้มราวกับนางฟ้านี่ ก็คงจะตื่นเต้นตอนแรก ๆ แต่จะตามด้วยอึดอัดด้วยซ้ำ 555 เอาแค่ระดับเดียวกับตัวเราก็พอ ไม่ต้องดูดีอะไรมากมาย
ที่จริงผมก็ไม่ใช่ว่ารังเกียจคนหน้าตาดีนะ แต่ผมแค่ชอบมองมากกว่า มันก็เป็นงานอดิเรกที่สนุกดีเหมือนกันนะครับ แต่ถ้าถามว่าอยากจะขอคบเป็นแฟนด้วยผมว่าหน้าตามันไม่ได้บอกอะไรเท่าไหร่น่ะนะ
อีกอย่าง น้ำหน้าอย่างผมคงไม่ได้มีสิทธิจะไปเลือกอะไรมากมายนักหรอก 555

3. น่ารัก

แต่คำว่าน่ารักของแต่ละคนนี่นิยามไม่เหมือนกันเลยนะครับ สำหรับบางคนคำว่าน่ารักนั้นรวมเอาหน้าตาไปด้วย แต่สำหรับผมมองดูที่การกระทำมากกว่า ดูที่วิธีคิด วิธีการใช้คำพูด และส่วนประกอบรอง ๆ มากกว่า
ถ้าให้พูดตรง ๆ (คำนี้ใช้บ่อยอยู่แฮะ) ……………… ผมชอบคนที่ดูเป็นเด็ก ๆ ดูติงต๊อง ๆ สดใสร่าเริง อะไรทำนองนี้ล่ะครับ เวลาอยู่กับคนแบบนี้มันทำให้รู้สึกว่าแต่ละวันชีวิตมันไม่ซ้ำเดิม ดูไม่จำเจดี นี่ล่ะคือนิยามของความน่ารักของผมล่ะมั้ง
คือผมว่าการอยู่กับคนแบบนี้มันก็ทำให้เรารู้สึกเด็กลงไปด้วย อาจจะ…นิดนึง… ล่ะมั้ง?

… หมดละเนี่ย…

คือ ก็อย่างที่บอกว่าก็ไม่รู้หรอกว่าสเปคของตัวเองเป็นยังไง จริง ๆ แล้วอะไรก็ได้ ขอให้เขาเป็นคนน่ารักก็ทำให้เราอยากอยู่ใกล้ อยากดูแล ก็พอแล้วแหละ 555 ไม่ได้หวังอะไรมากครับ
แต่ก็นะ ส่วนตัวก็ยังมองว่าตัวเองยังเป็นคนที่ไม่เหมาะจะมีคู่อยู่ดี ทั้งนิสัยใจคอ ทั้งพื้นฐานครอบครัว และอะไรอีกหลาย ๆ อย่าง ผมเชื่อว่าตัวเองก็ยังเหมาะกับการอยู่ตัวคนเดียวมากกว่าอยู่ดี
จบเหอะ เรื่องแบบนี้ เล่าแล้วน่าอายออก 555
ปล. ที่จริงเมื่อสัก 4-5 ปีที่แล้วเคยเขียนเรื่องแบบนี้ไว้เหมือนกัน แต่พอไปอ่านแล้วรู้สึกว่าไม่ใช่ ตอนนั้นมันยังเด็กเกินไปด้วยล่ะมั้งครับ 🙂

แนะนำการเตรียมตัวสัมภาษณ์งาน ในตำแหน่งงาน Programmer

พอดีไม่นานมานี้มีโอกาสได้มาสัมภาษณ์ผู้สมัครงานหลังจากที่ไม่ได้ทำมานานมากครับ ผมยังคงพบว่าตำแหน่งนี้เป็นตำแหน่งงานที่ตกสัมภาษณ์กันกระจาย (อัตราส่วนคนที่สัมภาษณ์ผ่านอยู่ราว ๆ 1:10 ได้มั้ง) ด้วยสาเหตุหลาย ๆ อย่าง ที่จริงตำแหน่งที่พวกผมหาอยู่นี่ยังไม่มีคนเข้าตาเลยครับ ก็เลยจะเอามาแนะนำวิธีการเตรียมตัวสักนิดหน่อย

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

Resume

สิ่งแรกที่จะพูดถึงก็คือ resume หรือ  CV ครับ ที่จริงสองอย่างนี้เป็นของคนละอย่างกันครับ แต่มักจะใช้แทนกันได้ ผมเลยเอามาใส่ในหัวข้อเดียวกันนี่ล่ะ resume  หรือ  CV (จากนี้จะเรียกแค่ resume นะครับ)  เป็นเหมือนประวัติโดยสังเขป มันเป็นสิ่งที่ทำให้ผู้สัมภาษณ์ได้รู้จักตัวตนของคุณ ดังนั้นมันจึงควรมีสิ่งที่คุณต้องการที่จะสื่อให้ผู้สัมภาษณ์รู้ 
สิ่งที่คุณควรมีใน  resume ที่คนมักจะไม่ค่อยระบุคือ objective  ของ resume ว่า คุณต้องการจะยื่นเจ้าเอกสารนี้เข้ามาเพื่ออะไร โดยปรกติก็จะเป็นพวก ต้องการสมัครงานตำแหน่งโปรแกรมเมอร์ นอกจากนี้คุณควรระบุว่าเงินเดือนคุณอยู่ที่เท่าไหร่ และคาดหวังว่าจะได้เงินเดือนเท่าไหร่ 
อีกอย่างที่สำคัญ คือ ที่อยู่+เบอร์โทรศัพท์เพื่อติดต่อกลับ ผมเคยคุยกับคนรู้จักที่ทำงานเป็น Head Hunter  มานานพบว่ามีหลายคนไม่ใส่ที่อยู่ + เบอร์โทรศัพท์ติดต่อกลับ ทำให้  HR  ไม่รู้ว่าจะติดต่อคุณอย่างไร 
ข้อควรระวังอย่างหนึ่งก็คือในเรื่องของการระบุทักษะต่างๆ ผมพบว่าหลาย ๆ คนใส่ทุกอย่างที่รู้โดยที่ไม่ดูเลยว่าตัวเองเชี่ยวชาญในทักษะที่ตัวเองเขียนหรือเปล่า หลายคนเขียนภาษาเขียนโปรแกรมลงไปเกือบ 30 ภาษา ทั้ง ๆ ที่ตัวเองเชี่ยวชาญแค่ 1-2 ภาษา ที่เหลือคือเคยเขียนมาบ้างผ่าน ๆ มือ ซึ่งมันจะเป็นภาพลบต่อตัวเองครับ อาจจะถูกมองว่าจับฉ่าย รู้ไปหมดแต่ไม่เชี่ยวชาญเลย และที่เลวร้ายที่สุดคือคุณอาจจะถูกถามในห้องสัมภาษณ์ ถ้าตอบไม่ได้เนี่ยงานเข้าครับ เรื่องทักษะเนี่ยระบุแค่ที่ตัวเองเชี่ยวชาญและมั่นใจว่ารู้พอตัวก็พอครับ 
สิ่งหนึ่งที่คุณจะมีหรือไม่มีก็ได้ แต่คนส่วนใหญ่มักจะมีติดมา ก็คือรูปถ่าย คือผมอยากบอกว่าไม่จำเป็นนะ ยกเว้นคุณจะไปสมัครงานในตำแหน่งที่รูปลักษณ์ภายนอกนั้นสำคัญ แต่งานโปรแกรมเมอร์นี่ผมว่ามันไม่ใช่ล่ะครับ ทั้งนี้ ถ้าคุณคิดว่าจะติดรูปถ่าย แนะนำว่าให้ใช้รูปที่ดูสุภาพ ภูมิฐาน ดูดีแต่เรียบร้อย เป็นรูปถ่ายหน้าตรงไม่สวมแว่นตาหรือเครื่องประดับที่ปิดบังบางส่วนของใบหน้าครับ ที่สำคัญมันควรเป็นรูปถ่ายที่แสดงความเป็นตัวคุณออกมา (อย่าลืมว่า resume เป็นเหมือนใบแนะนำตัวเองให้กรรมการดูนะครับ) ทั้งนี้ผมแนะนำว่าไม่ควรเป็นรูปถ่ายในชุดครุย คือมันก็ดูเรียบร้อยจริงครับ แต่คุณถ่ายภาพกับชุดครุยตั้งแต่เมื่อไหร่ ? ยิ่งคนที่รับปริญญามานานแล้วนี่มันจะดูแตกต่างกับตัวจริงในปัจจุบันมาก ส่วนตัวผมว่ามันดูเรียบร้อยเกินไปด้วยครับ
สุดท้ายผมแนะนำว่าให้ไปอัพเดตข้อมูลส่วนตัวใน Linked In ด้วยก็ดีครับ ผมพบว่า  Linked In  นั้นเป็นแม่แบบที่ดีในการเขียน resume  เพราะว่ามีสิ่งที่ควรมีใน resume ครบถ้วนมาก (ขาดแต่  objective ที่ปรกติต้องเปลี่ยนไปเรื่อย ๆ แล้วแต่ว่าสมัครงานตำแหน่งไหนล่ะครับ)
อ้อ เกือบลืม ถ้าสมัครงานในบริษัทข้ามชาติ หรือบริษัทต่างชาติ คุณควรเขียน resume  เป็นภาษาอังกฤษครับ อันที่จริงคุณจะใช้แต่ resume ภาษาอังกฤษอย่างเดียวกับทั้งบริษัทไทยและเทศเลยก็ได้นะ คนไทยอ่านรู้เรื่องอยู่แล้วครับ

การทดสอบทักษะด้านเทคนิค และการตอบคำถามเชิงเทคนิค

แทบจะทุกที่ครับที่เวลาคุณสมัครเข้าไป คุณจะถูกทดสอบความสามารถทางเทคนิค ทั้งการเขียนลงบนกระดาษ และการถามตอบด้วยวาจา 
การทดสอบตรงนี้จะแบ่งได้คร่าว ๆ เป็น 4 กลุ่ม ดังนี้ครับ
  1. ความรู้ทางด้านภาษาเขียนโปรแกรม
  2. ความรู้ทางด้านคอนเซพท์พื้นฐานของการเขียนโปรแกรม
  3. ความรู้ทางด้านซอฟท์แวร์ที่ใช้ประกอบการเขียนโปรแกรม  เช่น  platform, library และ/หรือ framework  ต่างๆ 
  4. ทักษะด้านความคิด จินตนาการณ์ และตรรกะต่างๆ
สำหรับข้อ 1-3 นั้นมักจะเป็นคำถามง่าย ๆ ที่วัดความรู้พื้นฐานของผู้ถูกสัมภาษณ์ครับ โดยมักจะถามกันเฉพาะสิ่งที่ตำแหน่งที่คุณสมัครเข้าไปใช้เท่านั้น มีบ้างเหมือนกันที่จะถูกยิงคำถามบ้าพลัง แต่คำถามชุดนี้มักจะมีน้ำหนักน้อยกว่าคำถามที่วัดพื้นฐานครับ
พอผมพูดถึงคำว่า “พื้นฐาน” นั้นหลาย ๆ คนก็มักจะคิดว่ามันเป็นเรื่องง่าย ๆ ถ้าถามมาเดี๋ยวไปนึกเอาในห้องสอบก็ได้ ความคิดแบบนี้ทำคนพลาดโอกาสมาเยอะแล้วครับ คำถามอย่างพวก “คอนเซพท์หลักของ  Object Oriented Programming นั้นมีกี่ข้ออะไรบ้าง” เนี่ยหลายๆ คนลืมครับ ตอบไม่ได้ เนี่ยล่ะครับคำว่าพื้นฐานที่ผมว่า
ถ้าคุณมีเวลาน้อย ผมแนะนำว่าให้อ่านหนังสือประเภทอ้างอิงแบบสรุปย่อครับ เป็นหนังสือประเภทที่ไม่เอามาใช้สอนคุณเป็นลำดับขั้นตอน แต่เป็นการรวบรวมเอาเนื้อหาที่สำคัญ ๆ มาทำสรุปย่อและจัดหมวดหมู่ให้เป็นระเบียบ ตัวอย่างก็พวกหนังสือในตระกูล In a Nutshell ของ  O’Reilly  ครับ หนังสือประเภทนี้อาจจะดูหนามาก แต่อ่านเฉพาะส่วนที่เป็นคอนเซพท์ก็พอ (ซึ่งบางเล่มมีส่วนนี้ไม่ถึงครึ่งเล่มครับ)
สำหรับข้อที่ 4. นั้นเป็นการวัดแนวความคิดและประสพการณ์ครับ คุณสามารถงัดเอาประสพการของคุณมาใช้ได้เลย แต่ว่าถ้าอยากจะศึกษาเพิ่มเติมก็มีหนังสืออีกมากมายที่คุณสามารถศึกษา อันนี้คงต้องแล้วแต่ความสนใจด้วย เล่มที่น่าเรียนรู้ก็พวกหนังสือที่เกี่ยวกับการออกแบบคลาส/โปรแกรมต่าง ๆ (Design Pattern เองก็เป็นเรื่องหนึ่งที่อยู่ในกลุ่มนี้ และคุณควรจะศึกษามันครับ)

คำถามทั่ว ๆ ไป และการแนะนำตัว

สำหรับส่วนนี้นี่ ไม่ค่อยมีผลโดยตรงต่อการสัมภาษณ์ แต่ถ้าคุณสร้างความประทับใจได้คุณก็มีข้อได้เปรียบเหนือคนอื่น เพราะว่าคนสัมภาษณ์เนี่ยนอกจากจะดูที่ทักษะความสามารถแล้ว ก็ดูบุคลิกลักษณะ ท่าทาง อุปนิสัยของคุณด้วย เพราะเขาเองก็ต้องหาคนที่ไม่สร้างปัญหาให้กับสมาชิกทีมที่อยู่มานานแล้วเหมือนกัน ดังนั้นถ้าคุณสามารถทำให้ผู้สัมภาษณ์ประทับใจได้แล้วคุณอาจจะได้รับเลือกแทนที่จะเป็นอีกคนที่อาจจะมีทักษะสูงกว่าคุณแต่นิสัยไม่ดีเท่าได้ครับ 
ในความเป็นจริง ทักษะความสามารถเป็นสิ่งที่ฝึกสอนกันได้ครับ แต่พื้นฐานของคนเป็นเรื่องที่เปลี่ยนแปลงได้ยาก ดังนั้นบางที่เขาก็ให้น้ำหนักกับเรื่องหลังมากกว่าด้วยซ้ำ ตราบใดที่คุณมีทักษะมากพอ ถึงไม่ต้องเก่งมากคุณก็ยังมีโอกาสได้รับเลือกครับ 
แต่ทั้งนี้ทั้งนั้นคุณเองก็ควรจะแสดงสิ่งที่คุณเป็นออกมาจริง ๆ ไม่ใช่ว่าพยายามปิดบังอะไรบางอย่างเพื่อให้ได้งาน อย่างถ้าคุณเป็นกระเทยก็ควรจะบอกเลยว่าเป็นกระเทย ไม่เช่นนั้นถ้าเกิดคุณได้รับเลือกให้เข้าไปทำงานแล้วมาแสดงออกทีหลังเนี่ย คุณอาจจะได้ไปอยู่ท่ามกลางคนหัวเก่าที่เกลียดกระเทย (มีแบบนี้จริง ๆ นะ) และมันจะเป็นตัวคุณเองนี่ล่ะที่ลำบาก
สำหรับการแนะนำตัว อยากให้เตรียมตัวเรื่องการแนะนำตัวเป็นภาษาอังกฤษเอาไว้ด้วย โดยเฉพาะถ้าคุณจะสมัครงานในบริษัทข้ามชาติ หรือบริษัทต่างชาติ คุณควรจะแนะนำชื่อ นามสกุล ชื่อเล่น และพื้นฐานชีวิตของคุณสั้น ๆ ไม่เกิน 1 นาที นอกจากนี้ให้เตรียมเรื่องข้อดีและข้อเสียของตัวเองเอาไว้ด้วย เพราะอาจจะถูกถาม แต่ก็ไม่จำเป็นต้องเอาไปใส่ในคำแนะนำตัวเองหรอกครับ
การตอบคำถามในหมวดนี้ (และหมวดอื่น ๆ ด้วย) ควรจะเป็นตอบให้มีเนื้อหาสักหน่อยครับ แต่อย่ายืดซะจนจับประเด็นไม่ได้ คุณอาจจะอ้างอิงไปยังประสพการณ์เก่า ๆ ที่เคยผ่านมาบ้างก็ได้ แต่ไม่ต้องลงละเอียดลึกมาก ทางที่ดีก่อนจะตอบคำถามลองคิดดูสักนิดว่าผู้สัมภาษณ์ต้องการอะไรจากคำถามก็ดีครับ (แต่มันก็ค่อนข้างยากนะ ผมเองก็เข้าใจ)
คุณอาจจะเจอปัญหาวัดเชาว์และไหวพริบด้วย ซึ่งมันก็เป็นอะไรที่ค่อนข้างยากเหมือนกัน อย่าง “ทำไมฝาท่อระบายน้ำจึงเป็นวงกลม” หรือ “ถ้าคุณกำลังตกลงมากจากตึกสูง 40 ชั้น คุณจะเอาตัวรอดอย่างไร” ก็ต้องเตรียมใจรับสถานการณ์ไว้บ้างครับ
สิ่งสำคัญอีกอย่างคือ อย่าพูดคำว่า “ไม่รู้” ง่าย ๆ แต่ก็อย่าอายที่จะพูดคำว่า “ไม่รู้” คำถามบางข้อมันยากซะจนคนถามก็ไม่รู้ว่าจะตอบว่าอะไร (มีจริง ๆ นะ) มันเป็นการวัดการแก้ไขปัญหาสถานการเฉพาะหน้าครับ ลองสงบใจคิดดูสักสองสามนาที และถ้าจำเป็นจะต้องใช้ตัวช่วย อย่างขอเวลา หรือขอใช้กระดานไวท์บอร์ดก็บอกผู้สัมภาษณ์ได้เลยครับ ไม่ต้องเกรงใจกัน หลังจากนั้นถ้าคุณมีคำตอบก็ตอบออกมาเลย (ถ้าไม่มั่นใจอยากพูดเกริ่นก็ทำได้ครับ แต่คนสัมภาษณ์เขาก็เข้าใจแหละว่าเราไม่มั่นใจ) แต่ถ้าคิดแล้วคุณไม่ทราบจริง ๆ ก็บอกมาได้ครับว่าไม่รู้ แล้วก็อย่าไปคิดมากหรือรู้สึกผิดอะไรนะครับ 
อ้อ อาจจะไม่เกี่ยวกับหัวข้อนี้เท่าไหร่ แต่ผมนึกไม่ออกว่าจะไว้ตรงไหนดี 🙂 ก็คือ ก่อนสัมภาษณ์ก็ควรหาข้อมูลเกี่ยวกับบริษัทที่เราไปสัมภาษณ์ด้วยนะครับ ก็ดูว่าเขาทำธุรกิจอะไร มีลูกค้าเป็นใคร ออฟฟิศน่าอยู่ไหม การเดินทางเป็นอย่างไร เพราะคุณอาจจะถูกถามในห้องประชุมได้ แต่ที่สำคัญกว่าก็คือถ้าคุณได้รับเข้าทำงานแล้วต้องไปอยู่ในสถานที่ที่คุณไม่มีความสุขทีจะอยู่ด้วยแล้ว คุณเองนั่นแหละที่จะเดือดร้อน

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

คำถามในเชิงกระบวนการทำงาน

คำถามชุดนี้ผมแยกออกมาจากคำถามชุดทางเทคนิค เพราะผมมองว่ามันเป็นเรื่องสำคัญมากพอที่ควรจะยกออกมาเป็นอีกประเด็นนึง 
จากการสัมภาษณ์ที่ผ่านมาผมได้ยินประสพการณ์การทำงานของหลาย ๆ ท่าน ซึ่งก็ทำให้ผมได้เรียนรู้อะไรมาพอสมควร น่าเศร้าที่ส่วนใหญ่นั้นกระบวนการ (หรือ process) นั้นแย่กว่าที่ควรจะเป็นมาก ซึ่งไม่ได้เป็นเฉพาะกับบริษัทเล็ก ๆ แต่กับบริษัทระดับต้น ๆ ของประเทศก็แย่กว่าที่ควรเป็นเช่นกัน ผมเข้าใจเลยว่าทำไมระบบ IT ที่รันในบ้านเรามันถึงมีปัญหามากมายขนาดนี้ (ผมไม่ได้บอกว่าห่วยเหมือนกันหมดทุกบริษัททั่วประเทศนะครับ)
แต่ทั้งนี้คำถามในส่วนนี้เองไม่ได้ต้องการจะวัดแต่ประสพการณ์ของคุณเอง แต่ต้องการที่จะวัดความคิดของคุณด้วย ดังนั้นเพื่อที่จะได้เปรียบคนอื่นที่ไม่ได้เตรียมตัวมาเลย คุณควรจะอ่านเรื่องของ methodology ต่าง ๆ ที่เกี่ยวข้องกับการพัฒนาซอฟท์แวร์มาบ้าง เช่น  Extreme Programming หรือ Agile Software Development เพราะถึงแม้ว่าหลาย ๆ ที่จะได้นำวิธีแบบนี้มาใช้กันก็จริง แต่ก็ทำให้คุณได้ทราบสิ่งที่มันควรจะเป็น และนั่นก็จะทำให้คุณมีข้อได้เปรียบเหนือคนอื่นอีกเช่นกัน
เรื่องนึงที่ผมอยากจะเน้นก็คือการใช้ Version Control System ผมพบว่าในมหาวิทยาลัยไม่ได้มีการสอนเรื่องนี้ (แม้กระทั่งในภาค Software Engineering) อาจจะเพราะมันเป็นเรื่องของการปฎิบัติ (practice) มากกว่าจะเป็นทฤษฎี คุณควรจะรู้คอนเซพท์คร่าว ๆ ว่ามันทำงานอะไรยังไงบ้าง และประโยชน์ของการใช้งาน และจะดีมากถ้าคุณศึกษาคอนเซพท์ใหม่ ๆ อย่างเช่น  Distributed VCS ไว้ด้วย เพราะคุณอาจจะไปเจอบริษัทที่ใช้งานมันจริง ๆ 
ที่จริงผมอยากแนะนำให้คุณเข้าไปมีส่วนร่วมกับโครงการที่เป็น Open Source ต่าง ๆ ด้วย เพราะว่าเทคนิคใหม่ ๆ นั้นมักจะถูกใช้ในโครงการพวกนี้ก่อนหน้า Commercial Software เก่า ๆ อยู่หลายปี คุณจะได้เรียนรู้อะไรใหม่ ๆ มากมายทีเดียว และโครงการพวกนี้ปรกติเขาก็ขาดคนอยู่แล้ว การเที่เราเข้าไปช่วยก็เป็นประโยชน์สำหรับเขาเช่นกันครับ ไม่ต้องห่วง
การศึกษาตรงจุดนี้ นอกจากจะทำให้คุณดูมีความเชี่ยวชาญในการทำงานจริง ๆ แล้ว มันยังมีประโยชน์ในการทำงานจริง ๆ ด้วยครับ ดังนั้นศึกษาเอาไว้บ้างไม่เสียหายหรอกครับ แค่คุณอาจจะเสียเวลาเล่นหุ้นไปบ้างเท่านั้นเอง

สรุป

คำแนะนำต่าง ๆ ตรงนี้นี่ ผมไม่ได้มีเอาไว้เพื่อว่าอยากให้มีคนมาสัมภาษณ์งานผ่านสักที หรืออะไรทำนองนี้หรอกนะครับ แต่ผมเชื่อว่ายังมีอีกหลายคนที่มีความสามารถแต่ไม่สามารถที่จะแสดงออกมาให้คนสัมภาษณ์ได้เห็น 
กับการทำงานในบริษัทใหญ่ ๆ นั้น  ความรู้ทางเทคนิคนั้นอาจจะไม่สำคัญเท่ากระบวนการทำงานครับ แต่ที่สำคัญกว่าก็คือบุคลิกและอุปนิสัย แต่ถ้าความรู้ทางเทคนิคนั้นไม่ดีพอคุณก็อาจจะสัมภาษณ์ไม่ผ่านได้เหมือนกัน ทั้งนี้ผมคิดว่าคุณควรจะศึกษาเอาไว้บ้างอย่างน้อยก็เพื่อที่จะได้ถูกรับเข้าทำงาน จากนั้นถ้าคุณมีบุคลิกและอุปนิสัยดี และมีความขยันมากพอ การที่จะก้าวขึ้นไปยังตำแแหน่งสูง ๆ มันก็คงไม่ใช่เรื่องยากอะไรครับ 
อย่างไรก็ดี ผมว่ามันจะดีกว่าแค่ศึกษาเฉพาะก่อนสัมภาษณ์งาน ถ้าคุณสามารถที่จะศึกษาในศาสตร์นี้ไปเรื่อย ๆ ระหว่างการทำงาน คือผมบอกได้เลยว่าการทำงานจริงมันจะเริ่มไม่มีอะไรให้ศึกษาจากงานเท่าไหร่เมื่อผ่านปีที่ 3 ไป นอกจากว่าคุณจะย้ายส่วนงาน หรือย้ายงานไปเลย ถ้าคุณยังมีใจรักกับงานด้านการเขียนโปรแกรม ผมเชื่อว่าคุณจะยินดีที่จะเรียนรู้อะไรเพิ่ม มากกว่าจะแค่เอาเวลาว่างไปนั่งอยู่บนดอยดูพอร์ทของตัวเองเล่นไปวัน ๆ มากครับ
สุดท้ายนี้อย่าลืมครับว่าพื้นฐานสำคัญที่สุด เวลาเราจะวัดกันว่าใครมีความสามารถหรือไม่มีความสามารถ เราก็วัดกันตรงที่พื้นฐานนี่ล่ะครับ ถ้าใครพื้นฐานไม่ดีถึงจะมีความชำนาญในระดับสูง ๆ ก็จะถูกมองว่ามันเป็นแค่ปาหี่ และการที่พื้นฐานไม่ดีก็ทำให้เราศึกษาไปได้ไม่ไกล และสุดท้ายก็จะหยุดอยู่แค่การเป็น Expert Beginner เท่านั้น โดยที่พัฒนาตัวเองไม่ได้อีกแล้ว

ส่วนประกอบหลักของแอพลิเคชั่นบน Android – เจตนาและกิจกรรม

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

สำหรับแอพลิเคชั่นบน Android นั่นจะประกอบไปด้วยส่วนย่อย ๆ ที่เรียกว่า Activity ที่แปลตรงตัวได้ว่า “กิจกรรม” นั่นเอง Activity  นั้นก็แทนสิ่งที่ User  สามารถกระทำได้กับโปรแกรมได้ เช่น การแสดงข้อความสั้น (SMS) ใน Messaging  หรือ การแสดงภาพใน Gallery เป็นต้น

 Activity นั้นเป็นสิ่งที่จับต้องได้ในมุมมองของผู้ใช้ แต่สำหรับการที่จะเรียกใช้ Activity นั้นโปรแกรมเมอร์จะต้องสร้างตัวแปรประเภท  Intent ขึ้นมาตัวหนึ่ง

ทีนี้ Intent คืออะไร ? Intent นั้นแทนเจตนาของผู้ใช้ เขาอาจจะอยากโทรออก ต้องการจะดูรูป ต้องการจะฟังเพลง อยากดูข้อความสั้นที่มีคนส่งเข้ามาเป็นต้น แต่ถ้าจะบอกว่าให้โปรแกรมเราอ่านความต้องการของผู้ใช้ด้วยตัวเองคงดูเหนือธรรมชาติไปสักนิด แน่นอนครับ Intent นั้นจะถูกสร้างเพื่อตอบสนองการกระทำของผู้ใช้ เช่น เมื่อเขากดปุ่ม Share  บน Action bar ก็แสดงว่าเขาต้องการที่จะแชร์ข้อมูลบางอย่าง เราก็ไปสร้าง Intent ว่าผู้ใช้ต้องการจะแชร์ข้อมูล

ความพิเศษของ Android หนึ่งอย่างคือ ระบบอาจจะมี Activity มากกว่า 1 อย่างขึ้นมารองรับเจตนาของผู้ใช้ และผู้ใช้สามารถติดตั้งเพิ่มได้เองอีกด้วย (เพราะอย่าลืมว่ามันก็เป็นส่วนหนึ่งของแอพลิเคชั่นที่ผู้ใช้ติดตั้งนั่นเอง) อย่างเช่น เมื่อผู้ใช้กดลิงค์บนหน้า About ของแอพลิเคชั่นผม โดยที่เครื่องเขามีทั้ง Firefox และ Chrome ติดตั้งอยู่ ตัวระบบจะแสดงหน้าต่างให้ผู้ใช้เลือกได้ว่าจะเปิด  Browser ตัวไหน ยิ่งกว่านั้นผู้ใช้ยังสามารถเลือกได้ว่าจะใช้ตัวไหนเป็นหลักเพื่อที่จะไม่ต้องแสดงหน้าต่างให้เลือกอีก

นอกจากนี้ เรายังสามารถระบุให้ Intent นั้นใช้งาน Activity ไหนเป็นพิเศษ โดยการส่งค่า class ของ Activity ลงไปนั่นเอง ดังนั้นถ้าเป็น Intent ที่ค่อนข้างเฉพาะสำหรับ Application ของเราก็ใช้การระบุ Activity ลงไปใน Intent ไปเลย แต่ถ้าเป็น Intent กลาง ๆ นั้นเราก็แค่ระบุประเภทก็พอแล้วให้ผู้ใช้เลือกว่าจะใช้ตัวไหน การทำแบบนี้จะดูเป็นธรรมชาติมากกว่าครับ

ก็หวังว่าจะเป็นประโยชน์ต่อ Android Dev มือใหม่บ้างนะครับ