ในใจคุณ โปรแกรมเมอร์ที่ยอดเยี่ยมคือแบบไหน? คืออัจฉริยะคอมพิวเตอร์ที่เขียนโค้ดมาตั้งแต่อายุ 7 ขวบ และทำแอปล้านดอลลาร์? คือนักพัฒนาที่มีประสบการณ์ 10 หรือ 20 ปี ในธุรกิจนี้ รู้ทุกภาษา (แต่แค่ตัวดีๆ) และสร้างเว็บไซต์ในเวลาที่คุณไปเอากาแฟอีกแก้ว? คือศิลปินโค้ดที่เขียนโค้ดสวยจนทำให้ทุกคนร้องไห้ในความอัศจรรย์และบ่นฟันในความอิจฉา?
เออ อาจจะเป็นได้ แต่คุณจะเชื่อผมไหมว่าทักษะเขียนโค้ดอัศจรรย์ไม่ใช่ทุกอย่าง? และการเขียนโปรแกรมที่ดีคิดเป็นแค่ครึ่งหนึ่งของโปรแกรมเมอร์ที่ดี?
มันชัดเจนว่าคุณไม่สามารถเป็นโค้ดเดอร์ที่ดีได้หากคุณไม่รู้เขียนโค้ด แต่ผมรู้สึกว่าบางครั้งด้านอื่นๆ ที่ไม่เกี่ยวกับคอมพิวเตอร์ของการเป็นโปรแกรมเมอร์ถูกมองข้ามไปบ้าง มีมากมายเกี่ยวกับการเป็นนักพัฒนาอาชีพที่ไม่เกี่ยวกับโค้ดเลย และเกี่ยวกับการเป็นมืออาชีพจริง มืออาชีพจริงคือคนที่ทำงานสำเร็จทันเวลา รู้เป็นทีมเพลย์เฟอร์ (ไม่ใช่แค่ฮีโร่ที่โผล่มาช่วย) และสุดแล้วเป็นทรัพย์สินให้นายจ้างหรือลูกค้า
ตัวบ่งชี้ของการเป็นนักพัฒนาที่ดีคืออะไร? นี่คือบางอย่างที่ผมรวบรวมมา — แน่นอนว่ายังมีอีกมาก
1. เขียนโค้ดสะอาด (Clean Code)
ใช่ ข้อนี้จริงๆ เกี่ยวกับโค้ด ผมบอกแล้วว่าโค้ดเป็นส่วนหนึ่ง 🙂 ที่แก่น โค้ดที่ดีค่อนข้างแรกทำงาน ได้สองเข้าใจง่ายสำหรับนักพัฒนาคนอื่น และสามารถ refactor ได้โดยไม่ทำให้มัวแค่ไหน ฟังก์ชันที่ตั้งชื่อดี จัดระเบียบดี คอมเมนต์ และเอกสารจะคืนคุณ 10 เท่าในเวลาที่จะประหยัดให้ผู้อื่น (รวมถึงคุณเอง!) ในอนาคต
ข้อมูลเพิ่มเติมเกี่ยวกับการเขียนโค้ดที่ดี (ลิงก์ไม่ใช่ affiliate อย่ากังวล!):
Clean Code
The Pragmatic Programmer
Refactoring: Improving the Design of Existing Code
2. อัปเดตเทรนด์ให้ทันสมัย
เรารู้จักกันดีว่าเทรนด์ในการพัฒนาเว็บเปลี่ยนเร็วแทบไม่น่าเชื่อ ผมไม่ได้บอกว่าคุณต้องเป็นโค้ดเดอร์แบบนกขี้ข้าวและไล่ตามความฮอตใหม่ล่าสุด แต่ปลายอีกข้าง หากคุณสบายใจและ complacent คุณจะกลายเป็นโค้ดเดอร์ไดนอสอร์ ซึ่งแย่กว่ามาก มีจุดกลางที่คุณทำงานเก่งในทักษะหลักบางอย่าง แต่คุ้นเคยกับเทรนด์และข่าวสารอื่นๆ ที่กำลังเกิดขึ้นอยู่
นี่คือหนังสือพิมพ์บางเล่มที่ช่วยคุณอยู่บนสุดอุตสาหกรรมที่เปลี่ยนแปลงตลอดเวลา รู้สึกอิสระที่จะ comment เพิ่มอะไรก็ได้ที่คุณพบว่ามีประโยชน์
Hacker News
A List Apart
Smashing Magazine
CSS Tricks
3. เปิดรับสิ่งใหม่และเรียนรู้อย่างรวดเร็ว
หากคุณยังอยู่ในส่วนต้นของการเรียนเขียนโค้ด อย่าเป็นโหดกับตัวเองมาก ผมไม่ได้เสนอว่าคุณควรเก่ง Angular ในหนึ่งสัปดาห์ แต่เปิดรับความเป็นไปได้ว่าสำหรับปัญหาใดๆ โซลูชันอาจเป็นสิ่งที่คุณยังไม่รู้ และ "ยัง" เป็นความแตกต่างที่สำคัญ เพราะสิ่งที่คุณไม่รู้? มันคือสิ่งที่คุณสามารถเรียนรู้วิธีทำและเพิ่มเข้าไปในชุดเครื่องมือของคุณ
สิ่งสำคัญคือพยายามเรียนสิ่งใหม่ให้เร็วและมีประสิทธิภาพที่สุด เพราะยิ่งคุณเรียนรู้สิ่งใดสิ่งหนึ่งเร็ว คุณจะมีเวลามากขึ้นสำหรับเขียนโค้ดและเรียนสิ่งใหม่ๆ อื่นๆ การเรียนทักษะเขียนโค้ด 본身就是一種你可以學會的技能
4. โฟกัสและทำงานอย่างมีประสิทธิภาพ
เรารู้จักกันว่ามัลติทาสกิ้งเป็นไปไม่ได้สำหรับมนุษย์ เพราะสมองของเราทำงานแบบ single thread สิ่งที่เราทำได้คือสลับจากงานหนึ่งไปอีกงาน แต่ไม่ได้มีประสิทธิภาพและจริงๆ แล้วไม่ใช่理想 ขึ้นอยู่กับงานหรือสถานการณ์ของคุณ อย่างไรก็ตาม การขัดจังหวะอาจเป็นส่วนหนึ่งของชีวิตประจำวันสำหรับคุณ นั่นทำให้มันสำคัญยิ่งขึ้นที่จะใช้เวลาที่จำกัดที่คุณมีสำหรับเขียนโค้ดให้เกิดประโยชน์สูงสุด
พยายามแยกเวลาทำงานและไม่ทำงานให้มากที่สุด และอย่าให้พวกมันล้นเข้ามาในกันมากเกินไป ตัวอย่าง การเล่น Facebook ทุกๆ ไม่นาทีจะตัดประสิทธิภาพของคุณ เมื่อคุณทำงาน คุณช่วยโฟกัสได้โดยการปิดแท็บเบราว์เซอร์อื่นๆ และพยายามทำงานต่อเนื่องจนถึง benchmark ที่สมเหตุสมผล การใช้ Pomodoro timer ทำงานเป็นช่วง 25 นาทีก็ช่วยโฟกัสในงานเดียวหน้าคุณได้
การอ่านเพิ่มเติม:
Deep Work by Cal Newport
5. ประเมินเวลาที่ต้องใช้ในการทำภารกิจอย่างแม่นยำ
นี่เป็นข้อที่ยาก และ承認ว่าผมเองยังพยายามปรับปรุงอยู่ แต่ความสามารถในการประเมินความสามารถของตัวเองในรูปของชั่วโมงเป็นทักษะที่มีค่ามาก ไม่ว่าคุณจะทำงานให้บริษัทหรือตัวเอง การประเมินที่ผิดจะทำลายไทม์ไลน์ของโปรเจกต์และสร้างงานให้คนรอบข้าง แย่ที่สุด การประเมินต่ำเกินไปว่าจะใช้เวลานานแค่ไหนในการทำโปรเจกต์จะเสียเงินคุณหรือนายจ้าง
บันทึกเร็วๆ นี้: คุณไม่จำเป็นต้องระบุเวลาถึง X ชั่วโมง หินล้มมั่น ปกติคุณสามารถให้ช่วง (range) ได้ หรือแม้แต่บอกว่าไม่สามารถประเมินจริงได้เพราะต้องการข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์โปรเจกต์ วิธีหนึ่งที่คุณเริ่มประเมินว่าการทำโปรเจกต์ใช้เวลานานแค่ไหน คือการติดตามเวลาเมื่อเขียนโค้ด (นี่ยังไปคู่กับข้อ #4 เพราะการประเมินของคุณจะดีขึ้นเมื่อคุณไม่ได้เล่น Reddit ครึ่งวัน)
6. อธิบายแนวคิดทางเทคนิคให้คนไม่รู้เทคนิคเข้าใจ
ใช่ มันหงุดหงิดมั้ย? เมื่อคุณว่ายน้ำไปในโค้ดบล็อกและเมธอดอย่างมีความสุข แล้วคุณต้องขึ้นสู่โลกจริงและอธิบายทั้งหมดให้คนที่ไม่ใช่โปรแกรมเมอร์? ทำไมพวกเขาไม่แค่ดูซอร์สโค้ดของคุณแล้วเข้าใจ?
โปรแกรมเมอร์แบบสเตอริโอทายป์คือคนโดดเดี่ยวที่อยากแค่ซ่อนตัวในถ้ำใต้ดินและแฮ็กคีย์บอร์ด โดยไม่ถูกขัดจังหวะจากโลกภายนอก ผมเอง承認ว่าตอนที่ผมอยู่ในความลึกของการพยายามแก้ปัญหาที่หงุดหงิด การถูกขัดจังหวะสามารถทำลายโมเมนตัมของผมและทำให้ผมกรumpy แต่เหมือนคุณ คนที่ไม่รู้เทคนิคที่คุณทำงานร่วมกับมีหน้าที่สำคัญ (เพราะพวกเขาพูดคุยกับทุกคน เพื่อคุณไม่ต้องพูด!)
การทำงานร่วมกับทุกคนในทีมหมายความว่าคุณต้องอธิบายเรื่องโค้ดให้พวกเขา และในแบบที่พวกเขาจะเข้าใจ ขั้นแรกคือการเข้าใจว่าหากคุณมองโลกในรูปของปัญหาโค้ดที่ต้องแก้ คนอื่นทำงานรอบๆ หลักการอย่างเงิน ทางเดดไลน์ และลูกค้า
หากคุณคิดออกว่าจะพูดกับคนอื่นในเงื่อนไขของพวกเขา และใช้คำศัพท์ของพวกเขา คุณจะไปไกลในการเป็นทีมเพลย์เฟอร์ที่ยอดเยี่ยม สมมติว่าคุณถูกขอเพิ่มฟีเจอร์บางอย่างในโปรเจกต์ แทนที่จะตะโกน "ไม่ นั่นโง่ ผมไม่อยากทำ!" แล้ววิ่งกลับถ้ำ ให้อธิบายว่าฟีเจอร์นั้นจะเพิ่มงานอีก 20 ชั่วโมง และเดดไลน์อาจต้องเลื่อน
7. อย่านำอีโก้ไปทำงาน
การบรรลุ 100% ทุกวันเป็นไปไม่ได้สำหรับทุกคนยกเว้นผู้ดีที่สุด แต่เราลองพยายามอย่าให้อีโก้ขับเคลื่อนเราในการทำงาน หมายถึงอะไร? หมายถึงคุณไม่ได้แค่อยากทำตัวเองดูดี คุณต้องการโปรเจกต์ ทีม และบริษัทของคุณดูดีด้วย หากคุณทำงานหนักช่วยเหลือผู้อื่นและรับรองความสำเร็จสำหรับทุกคน ไม่ใช่แค่ตัวเอง คนจะรักการทำงานกับคุณ
หากคุณเดินทางไปขยับผู้อื่นเพื่อบรรลุสิ่งที่คุณต้องการสำหรับตัวเอง คุณกำลังจุดไฟเผาสะพาน และคุณจะอยู่กลางสะพานเมื่อมันพัง แน่ คุณอาจได้กำไรระยะสั้น แต่คุณจริงๆ อยากเป็น asshole ที่ทุกคนเกลียดทำงานร่วมไหม?
8. อย่าปิดบังข้อผิดพลาดของคุณ
ไม่มีใครชอบทำผิด มันเป็นธรรมชาติของมนุษย์ แต่เมื่อมาถึงการเป็นมืออาชีพ เราต้องเอาชนะแรงจูงใจมนุษย์ที่จะซ่อนข้อผิดพลาดจากโลก
หากคุณทำผิดที่จะส่งผลลบต่อโปรเจกต์ สิ่งดีที่สุดที่คุณทำได้สำหรับตัวเองและคนที่คุณทำงานร่วมกันคือ การถอนใจออกมา ทันที บอกหัวหน้า บอกลูกค้า ใครก็ตามที่คุณต้องบอก และเริ่มทำงาน triage การปิดบังความผิดและหวังว่าไม่มีใครรู้ อาจได้บางครั้ง แต่หากถูกจับได้ จะทำลายความไว้วางใจอย่างรุนแรง และอาจพังโปรเจกต์หรือแม้แต่อาชีพของคุณ
ตอนนี้คุณไม่ต้องรายงานทุกๆ ข้อผิดพลาดเล็กๆ น้อยๆ แต่สำหรับข้อผิดพลาดที่จะต้องใช้เวลาเพิ่มในการแก้ หรือทำให้สิ่งสำคัญพัง โปรดทำดีต่อตัวเองและทุกคน และ 'fess up (รับรู้) มันจะดีกว่าในระยะยาว
9. ขอความช่วยเหลือจากผู้อื่น และช่วยเหลือผู้อื่น
อย่ากลัวถามคำถามหากคุณติดหรือไม่เข้าใจ ถ้าคุณทำงานโปรเจกต์ที่มีเดดไลน์ อย่าใช้เวลาชั่วโมงๆ พยายามแก้เองเมื่อคุณขอความช่วยเหลือได้และมีโซลูชันในน้อยกว่าหนึ่งชั่วโมง
คุณต้อง平衡กับการไปไกลที่สุดด้วยตัวเอง โดยใช้ Google, StackOverflow, หรือ Slack แต่ผมคิดว่ามีแนวโน้ม โดยเฉพาะถ้าคุณอยู่ในบริษัท ที่อยากเป็นอิสระและทำอะไรก็ได้โดยไม่ต้องช่วยเหลือ มันสามารถใช้เวลาของคุณจริงๆ ยาก แต่กลืนความภูมิใจและยอมรับว่าคุณต้องการช่วยเหลือ คุณจะเรียนรู้และทำงานเสร็จเร็วขึ้น
ד השניของเรื่องนี้ คือการช่วยเหลือผู้อื่นเมื่อพวกเขาต้องการช่วยเหลือ ตอนที่ผมเพิ่งเริ่มต้นเป็นนักพัฒนาเว็บ ผมพึ่งพาคนที่มีประสบการณ์มากกว่าที่บริษัทมาก และมันช่วยผมเก่งขึ้นจริงๆ เมื่อผมมีประสบการณ์มากขึ้น คนใหม่ๆ จะมาขอความช่วยเหลือจากผมบ่อย การถูกขัดจังหวะไม่ใช่ส่วนสนุกที่สุดของการเขียนโปรแกรม แต่มันก็เป็นส่วนหนึ่งของการเป็นทีมเพลย์เฟอร์ หากคุณอยู่กลางการเขียนโค้ดลึกๆ คุณบอกพวกเขาได้ว่าจะกลับไปช่วยในอีกไม่กี่นาที (เว้นแต่ปัญหาของพวกเขาจะ urgent จริงๆ)
เมื่อมีคนขอความช่วยเหลือ ลองช่วยแบบที่จะตั้งพวกเขาขึ้นสำหรับความสำเร็จครั้งหน้า แทนที่จะแค่ให้คำตอบ ให้บริบทนิดหน่อยเพื่อให้พวกเขาเข้าใจหลักการพื้นฐานและวิธีที่ปัญหากำลังถูกแก้ คุณรู้ จนถึง "สอนคนตกปลา" 🙂
ข้อไหนสะท้อนหรือตีตรงหัวใจคุณ? ไม่เห็นด้วยกับข้อไหน? รู้สึกอิสระที่จะทิ้งความคิดเห็นด้านล่าง!