ساخت نمونهکار برنامهنویسی که استخدام بیاورد
هشت مخزن کپیشده از دوره، بهاندازهی یک پروژهی واقعیِ تمامشده ارزش ندارد. انتخاب مسئله، نوشتن فایل معرفی، تاریخچهی کامیت تمیز و چیزهایی که هرگز نباید در مخزن بماند.
لینک گیتهابتان را در رزومه گذاشتهاید و این بار کسی واقعاً بازش کرده است. هشت مخزن میبیند: ماشینحساب، اپ آبوهوا، دو فهرست کارها، یک فروشگاه ناتمام، و سه مخزن که آخرین پیام کامیتشان «final» است. همه از دورههای آموزشی آمدهاند و او در بیست ثانیه میفهمد.
مشکل کمکاری نیست. این مخزنها چیزی دربارهی شما نمیگویند؛ فقط میگویند ویدیو را تا آخر دیدهاید. آنطرف میز دنبال نشانهای است که شما مسئلهای را تعریف کردهاید، سرِ دوراهی تصمیم گرفتهاید و کار را تمام کردهاید.
موضعم صریح است: یک پروژهی واقعیِ تمامشده با فایل معرفی درست، از ده پروژهی دورهای بیشتر کار میکند.
چرا ده پروژهی دورهای جای یکی را نمیگیرد
پروژهی دورهای یک ویژگی مشترک دارد: مسئلهاش را کس دیگری تعریف کرده. معماری، انتخاب کتابخانه و حتی نام متغیرها از مدرس آمده — مهارتی که هزار نفر دیگر هم به همان شکل نشانش میدهند.
تفاوت در انتخابهاست: چرا این کتابخانه، وقتی ورودی خراب بود چه کردید. پروژهای که خودتان تعریفش کردهاید اینها را جواب میدهد؛ کلونِ یک اپ معروف نه.
| نوع پروژه | چه چیزی را ثابت میکند | چه چیزی را ثابت نمیکند |
|---|---|---|
| تمرین دوره | دنبال کردن دستورالعمل | تصمیمگیری فنی |
| کلون اپ معروف | آشنایی با فریمورک | حل مسئلهی مبهم |
| پروژهی واقعیِ کوچک | تعریف مسئله و تمامکردن | کار در مقیاس بزرگ |
| مشارکت در متنباز | کار با کد دیگران | مالکیت طراحی |
سی ثانیهای که واقعاً صرف مخزن شما میشود
اولین کسی که نمونهکارتان را باز میکند معمولاً کد را نمیخواند. اسم مخزن را میبیند، فایل معرفی را تا نیمه پایین میآید، به تصویر خروجی نگاه میکند و تصمیم میگیرد. خواندن کد، اگر بیاید، دیرتر است.
پس نمونهکار فقط کد نیست؛ عرضه هم هست. همان قاعدهی رزومهای که خوانده میشود: هرچه بیننده باید حدس بزند، به ضرر شماست.
انتخاب پروژه: مسئلهای که خودتان از آن رنج بردهاید
بهترین منبع پروژه، زندگی خودتان است. مغازهی لوازمالتحریر پدرتان فاکتورها را در دفتر مینویسد و آخر ماه ساعتها طول میکشد تا با فیشهای بانکی تطبیق بخورد؛ ابزاری که این دو را تطبیق بدهد یک پروژه است. باشگاهی که نوبتها را در واتساپ میگیرد هم همینطور.
سه شرط دارد: مسئله در یک جمله گفته شود؛ کوچک باشد، چون پروژهی سهماههی رهاشده بدتر از نداشتنش است؛ و دادهی واقعی داشته باشد، حتی چند ده ردیف. دادهی ساختگی تمیزتر از واقعیت است و مسئلههای جالب را پنهان میکند.
فایل معرفی پروژه: مهمترین فایل کل مخزن
اگر فقط یک چیز از این مقاله بماند، همین باشد: فایل معرفی پروژه (README) مهمتر از خود کد است، چون تنها چیزی است که مطمئنیم خوانده میشود.
ساختاری که جواب میدهد: یک پاراگراف که در سی ثانیه بگوید چه ساختهاید و چرا؛ مسئله و راهحل و دلیل انتخابش؛ نصب و اجرا در سه خط؛ یک نمونهی ورودی و خروجی؛ و محدودیتهای شناختهشده. بخش آخر برخلاف تصور امتیاز مثبت است. راهنمای رسمی گیتهاب دربارهی فایلهای README هم همین اسکلت را پیشنهاد میدهد.
اینجا بهترین جای استفاده از مدل است: کاری خستهکننده که اغلب عقب میافتد و مدل در چند دقیقه پیشنویسش را میدهد. اصولش با نوشتن مستندات فنی یکی است.
پرامپتی که پیشنویس فایل معرفی را درمیآورد
پرامپت «برای پروژهام README بنویس» خروجی بیمصرف میدهد، چون مدل نمیداند پروژه چیست. الگوی زیر را پر کنید و در نارنگی امتحان کنید:
نقش: کمک در نوشتن فایل معرفی مخزن گیتهاب
پروژه: [ابزار خط فرمان برای تطبیق فاکتور مغازه با فیش بانکی]
مسئله: [تطبیق دستی آخر هر ماه ساعتها طول میکشید]
پشته: [پایتون، pandas، بدون پایگاه داده]
سهم من: [تمام کد؛ الگوریتم تطبیق را دو بار بازنویسی کردم]
مخاطب: [کسی که پروژه را نمیشناسد و سی ثانیه وقت دارد]
ساختار: معرفی کوتاه، مسئله، راهحل و دلیلش، نصب در سه خط،
نمونهی ورودی و خروجی، محدودیتهای شناختهشده
لحن: ساده، بدون تعریف از خود و بدون صفت تبلیغاتی
هر جای مبهم را بهجای حدسزدن از من بپرس
خط آخر مهمترین خط است؛ بدون آن مدل جاهای خالی را با ادعای ساختگی پر میکند.
تاریخچهی کامیت: تا وقتی کسی نگاه نکند مهم نیست
تاریخچهی کامیت را کمتر کسی باز میکند، ولی وقتی باز شود تعیینکننده است. مخزنی که کل پروژه در یک کامیت «first commit» ریخته، یعنی با گیت کار نکردهاید.
لازم نیست بینقص باشد. کافی است کامیتها واحدهای معنادار باشند و پیامشان بگوید چه تغییری دادهاید و چرا؛ یک شاخه برای هر قابلیت هم نشان میدهد جریان کاری تیمی را میشناسید. مفاهیم پایهی گیت برای همین ساخته شدهاند.
نمونهی اجرا: بگذارید ببیند، نه اینکه تصور کند
یک تصویر از خروجی یا چند خط از اجرای واقعی، بیش از دو پاراگراف توضیح اثر دارد: برای وب یک نسخهی زنده، برای ابزار خط فرمان یک نمونهی ورودی و خروجی، برای کتابخانه سه خط کد. پوشش کامل تست لازم نیست، ولی نبودِ هیچ تستی سؤالبرانگیز است.
پیش از انتشار یک بار کد را از چشم غریبه بخوانید و نامهای گنگ و تکهکدهای مرده را تمیز کنید. مدل اینجا خوب کار میکند؛ در بازبینی کد با هوش مصنوعی نوشتهام چه میبیند و چه نمیبیند.
چه چیزهایی را در مخزن نگذارید
کلید API، رمز پایگاه داده و توکن ربات تلگرام، شایعترین چیزهاییاند که ناخواسته منتشر میشوند. فایل تنظیمات محیطی را بیرون بگذارید و بهجایش نمونهای بدون مقدار. پوشهی وابستگیها و خروجی بیلد هم جایی در مخزن ندارند.
پاککردن کلید در کامیت بعدی کافی نیست؛ نسخهی قبلی در تاریخچه میماند و دیده میشود. اول کلید را باطل و از نو صادر کنید، بعد سراغ تاریخچه بروید. کد کارفرما را هم بدون اجازه منتشر نکنید؛ مرزهایش در امنیت اطلاعات در هوش مصنوعی آمده است.
و پروژهی نیمهکارهی رهاشده: مخزنی که ماهها پیش متوقف شده و وعدهی قابلیتهایی میدهد که وجود ندارند، امتیاز منفی است. خصوصیاش کنید.
پروژهی تیمی و صداقت دربارهی سهم خودتان
پروژهی گروهی دانشگاه یا کار تیمی، اتفاقاً نمونهکار خوبی است — به شرط شفافیت. یک بخش کوتاه در فایل معرفی بگذارید: «اتصال به درگاه پرداخت را من نوشتم؛ رابط کاربری کار دو نفر دیگر بود.»
ادعای مالکیت کل پروژه ریسک بیدلیلی است؛ جامعهی فنی کوچکتر از آن است که فکر میکنید. در مصاحبهی شغلی هم معمولاً دربارهی جزئیات همان بخش میپرسند و صداقت اولیه کارتان را راحتتر میکند.
مرز روشن: کدی که نمیفهمید
مدلها امروز میتوانند یک پروژه را از صفر بنویسند. اما پروژهای که کاملاً با هوش مصنوعی ساختهاید و از منطق داخلش سر درنمیآورید، در اولین مصاحبهی فنی لو میرود — نه با سؤال سخت، با پرسشی ساده: «چرا اینجا این تصمیم را گرفتی؟»
مرز عملی: هر خطی که در مخزن عمومیتان میماند باید بتوانید توضیحش بدهید و عوضش کنید. مدل برای مستندسازی، پیشنهاد تست و توضیح کدِ نامفهوم عالی است — همان کاربردهای برنامهنویسی با هوش مصنوعی. جایی که جواب نمیدهد این است: نمیداند تیم مقصد دنبال چه مهارتی است، نمیداند کدام پروژه در بازار کار ایران دیده میشود، و تجربهای را که ندارید نمیسازد.
جمعبندی
نمونهکار خوب فهرست بلندی از مخزنها نیست؛ دو یا سه پروژهی تمامشده است با مسئلهی واقعی، با فایل معرفیای که در سی ثانیه کارشان را توضیح میدهد.
از یکی شروع کنید: مسئلهای که خودتان از آن رنج بردهاید، کوچک بسازید، تمامش کنید و بیشترین وقتتان را صرف فایل معرفی کنید. اگر این هفته یک کار بکنید، همین باشد.
برای ادامه: