To be a Senior Developer ก้าวข้ามไปสู่ Senior

Tuanrit Sahapaet
2 3 Perspective
Published in
3 min readAug 3, 2017

หลังจากที่เรียนจบกันมา หรือทำงานมาสักระยะหนึ่งแล้ว เชื่อว่าทุกคน ก็อยากได้งานที่ใฝ่ฝัน หรือ ได้ทำงาน ในสิ่งที่ตนเองรัก และถนัด แต่ไม่ใช่เรื่องง่ายเลยน่ะครับ ที่ใครจะทำได้

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

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

หลายคนบอกว่า เฮ้ย แค่ทำงานที่นี่ไปนานๆ เขาก็ให้เลื่อนขั้นเป็น senior แล้ว ไม่ต้องคิดมาก

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

Senior Developer ไม่ได้เป็นเพียงแค่ชื่อตำแหน่งงาน แต่เป็นบุคคลที่สามารถใช้ความรู้ ความสามารถประสบการณ์ของคุณ มาทำให้เกิดประโยชน์สูงสุดต่อองค์กร และเพื่อนร่วมงาน

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

คุณสามารถเรียนรู้เทคนิคการเขียนโปรแกรมทั้งหมดในโลกได้ แต่ถ้าตอนนี้คุณยังไม่สามารถสื่อสารกับคนอื่นได้ดี ไม่สามารถให้ข้อมูลที่เป็นจริงและมีประโยชน์กับลูกค้า หรือ Junior หรือคนในทีมได้ คุณยังไม่ใช่ Senior Developer

งั้นอะไรบ้างที่จำเป็นสำหรับ Senior วันนี้

1.Technical Skills

แปลตรงตัวเลยคือความสามารถ มันต้องใช้เวลาเพื่อเสริมทักษะ ประสบการณ์ ลองผิดลองถูกพอสมควรอาจจะใช้เวลาประมาณ 3–5 ปีขึ้นไป การที่จะก้าวไปสู่ Senior นั้นควรจะมี Skills ในเรื่องของการ Coding ในระดับหนึ่ง เขียนให้ได้ ตามที่ Document ที่ PM ให้มา พลิกแพลง จำแนกสิ่งต่างๆ เพื่อให้งานบรรลุเป้าหมาย ไม่ใช่เพียงแค่ทำงานให้เสร็จเท่านั้น คุณต้องรู้จักการทำงานเป็นทีม Version Control, Continuous Delivery, Testing ให้เป็น สามารถเป็นพี่เลี้ยงให้คำปรึกษาแก่รุ่นน้องได้ นอกจากนั้น Site map , Wireframe , Work flow ต่างๆก็เอาให้คล่อง จะได้คุยกับคนอื่นรู้เรื่อง รู้จักวิธีรับมือกับปัญหา ทั้งเรื่องของความผิดพลาดของระบบ Bug ต่างๆ หรือแม้แต่เว็บล่ม ระบบล่ม รู้จักหาทางสำรอง คิดให้เป็นระบบมากยิ่งขึ้น

2.User Skills

คุณสามารถพูดคุยกับลูกค้า ให้เห็นความต้องการของตนเองได้อย่างชัดเจนหรือไม่? เมื่อลูกค้าแนะนำหรือกำลังพูดถึงปัญหาที่เขากำลังเผชิญอยู่ คุณเข้าใจปัญหานั้นจริงๆ หรือไม่? มันดูเป็นเรื่องยากน่ะ ที่จะพยายามเข้าใจปัญหาจากคนอื่น รวมถึงรับรู้ข้อมูลของผู้อื่นให้เข้าใจภายในระยะเวลาสั้นๆ แต่เมื่อ เข้าใจปัญหาและรู้วิธีแก้ไขนั้นแล้ว ปัญหาต่อมาคือ จะทำยังไง จะพูดยังไงให้ลูกค้าหรือคนที่ไม่ใช่สาย DEV เข้าใจในสิ่งที่เรากำลังจะอธิบาย เพราะภาษาที่เราจะสื่อออกไป มันไม่ใช่ภาษาที่คนทั่วไปนั้น ใช้งานกัน พอมาถึงจุดนี้มันไม่ใช่แค่ Designer เท่านั้นน่ะ ที่จะออกแบบ UX/UI มาอธิบายลูกค้า ถ้าเป็นเรื่อง Interface อาจจะใช่ แต่พอมาถึงเรื่องเทคนิค มันดูจะอธิบายยากนิดนึง เพราะเราอาจจะกำลังอธิบายให้ลูกค้าเขารู้ว่าเราทำอะไร จะพัฒนาการทำงานให้ดีขึ้นยังไง ให้รวดเร็วขึ้นยังไง ซึ่งทางเทคคิค แค่บอกว่า จะพัฒนาเพื่อสร้างประสบการณ์ในการใช้งานนั้นของ User ให้ดีขึ้น แต่ดีขึ้นยังไงละ จะต้องอธิบาย Code ออกมาเป็นทางคำพูดหรือ Use Case , Sequence Diagram ต้องตอบคำถามพร้อมทั้งให้คำปรึกษาที่ดีได้

3.Team Skills

อันนี้สำคัญ ในการทำงานนั้น เราไม่ได้ทำงานเพียงคนเดียว มันไม่ใช่แค่ Code แล้วเสร็จ มันจะต้องมี Server มี Url มีค่าใช้จ่าย ซึ่งมันไม่ใช่แค่คนเดียวจะทำทุกอย่าง เราก็ต้องร่วมงานกับคนในทีมเราอยู่ดี อยากให้มองภาพรวมของทีม ไม่ใช่แค่คนใดคนหนึ่ง คุณต้องสื่อสารกับเพื่อนได้ ต้องรู้ว่าแต่ละคนมีนิสัยใจคอเป็นอย่างไร ต้องรู้จักคุยกันให้มากขึ้น รู้จักวิธีพูดคุย อย่างน้อยคุยกันให้ถูกเรื่อง อย่าไปกักความรู้ ยิ่งคุณมีเยอะคุณยิ่งต้องแบ่งปัน เพราะทีมของคุณจะได้ยิ่งพัฒนาและโตเร็วยิ่งขึ้นตามๆกันไป คุณเป็นส่วนหนึ่งในทีม ซึ่งก็ต้องสามารถทำให้ทีมพัฒนาไปพร้อมๆ กัน ไม่ใช่เก่งคนเดียว ทำคนเดียว ถ้าทุกคนมีความสามารถใกล้เคียงกันการ Maintenance Code ก็ไม่ยาก มันยิ่งทำให้การทำงานง่ายขึ้นด้วย

4. Sales Skills / interview skills

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

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

มาถึงตอนนี้ถ้ารู้ตัวแล้วว่า อยากเป็นอะไร จะก้าวขึ้นไปถึงจุดนั้นได้อย่างไร การเป็น Senior ที่ดีนั้น เค้าควรทำอะไรได้บ้าง นอกจากทักษะ ความรู้ ความสามารถในเรื่องของการ Coding ที่พอจะมีอยู่บ้างในตอนนี้ คุณก็ต้องวางแนวทาง พัฒนาตัวเองไปให้ถึงจุดๆนั้นให้ได้ เพื่อดาวดวงนั้น ที่ฝันที่อยากเป็น เอ๊ะใช่เหรอ

อย่าเป็น Senior เพียงเพราะอายุงานมันได้ แต่ไม่มีคนเชื่อใจนับถือเลย มันไม่ดีหรอก

จบละ

ขอบคุณ ณ จุดๆนี้

--

--

Tuanrit Sahapaet
2 3 Perspective

Senior Software Engineer ที่ Purple Ventures Co., Ltd. (Robinhood)