ساخت نمونه‌کار برنامه‌نویسی که استخدام بیاورد

هشت مخزن کپی‌شده از دوره، به‌اندازه‌ی یک پروژه‌ی واقعیِ تمام‌شده ارزش ندارد. انتخاب مسئله، نوشتن فایل معرفی، تاریخچه‌ی کامیت تمیز و چیزهایی که هرگز نباید در مخزن بماند.

🍊 تیم نارنگی ⏱ 6 دقیقه مطالعه
صفحه‌ی فهرست مخزن‌های یک برنامه‌نویس که کسی در حال مرور سریع آن است

لینک گیت‌هابتان را در رزومه گذاشته‌اید و این بار کسی واقعاً بازش کرده است. هشت مخزن می‌بیند: ماشین‌حساب، اپ آب‌وهوا، دو فهرست کارها، یک فروشگاه ناتمام، و سه مخزن که آخرین پیام کامیتشان «final» است. همه از دوره‌های آموزشی آمده‌اند و او در بیست ثانیه می‌فهمد.

مشکل کم‌کاری نیست. این مخزن‌ها چیزی درباره‌ی شما نمی‌گویند؛ فقط می‌گویند ویدیو را تا آخر دیده‌اید. آن‌طرف میز دنبال نشانه‌ای است که شما مسئله‌ای را تعریف کرده‌اید، سرِ دوراهی تصمیم گرفته‌اید و کار را تمام کرده‌اید.

موضعم صریح است: یک پروژه‌ی واقعیِ تمام‌شده با فایل معرفی درست، از ده پروژه‌ی دوره‌ای بیشتر کار می‌کند.

چرا ده پروژه‌ی دوره‌ای جای یکی را نمی‌گیرد

پروژه‌ی دوره‌ای یک ویژگی مشترک دارد: مسئله‌اش را کس دیگری تعریف کرده. معماری، انتخاب کتابخانه و حتی نام متغیرها از مدرس آمده — مهارتی که هزار نفر دیگر هم به همان شکل نشانش می‌دهند.

تفاوت در انتخاب‌هاست: چرا این کتابخانه، وقتی ورودی خراب بود چه کردید. پروژه‌ای که خودتان تعریفش کرده‌اید این‌ها را جواب می‌دهد؛ کلونِ یک اپ معروف نه.

نوع پروژهچه چیزی را ثابت می‌کندچه چیزی را ثابت نمی‌کند
تمرین دورهدنبال کردن دستورالعملتصمیم‌گیری فنی
کلون اپ معروفآشنایی با فریم‌ورکحل مسئله‌ی مبهم
پروژه‌ی واقعیِ کوچکتعریف مسئله و تمام‌کردنکار در مقیاس بزرگ
مشارکت در متن‌بازکار با کد دیگرانمالکیت طراحی

سی ثانیه‌ای که واقعاً صرف مخزن شما می‌شود

اولین کسی که نمونه‌کارتان را باز می‌کند معمولاً کد را نمی‌خواند. اسم مخزن را می‌بیند، فایل معرفی را تا نیمه پایین می‌آید، به تصویر خروجی نگاه می‌کند و تصمیم می‌گیرد. خواندن کد، اگر بیاید، دیرتر است.

پس نمونه‌کار فقط کد نیست؛ عرضه هم هست. همان قاعده‌ی رزومه‌ای که خوانده می‌شود: هرچه بیننده باید حدس بزند، به ضرر شماست.

انتخاب پروژه: مسئله‌ای که خودتان از آن رنج برده‌اید

بهترین منبع پروژه، زندگی خودتان است. مغازه‌ی لوازم‌التحریر پدرتان فاکتورها را در دفتر می‌نویسد و آخر ماه ساعت‌ها طول می‌کشد تا با فیش‌های بانکی تطبیق بخورد؛ ابزاری که این دو را تطبیق بدهد یک پروژه است. باشگاهی که نوبت‌ها را در واتساپ می‌گیرد هم همین‌طور.

سه شرط دارد: مسئله در یک جمله گفته شود؛ کوچک باشد، چون پروژه‌ی سه‌ماهه‌ی رهاشده بدتر از نداشتنش است؛ و داده‌ی واقعی داشته باشد، حتی چند ده ردیف. داده‌ی ساختگی تمیزتر از واقعیت است و مسئله‌های جالب را پنهان می‌کند.

پنج گام ساخت نمونه‌کار برنامه‌نویسی، از انتخاب مسئله‌ی واقعی تا پاک‌کردن کلیدها پیش از انتشار
گام سوم بیشترین اثر را دارد و کمترین وقت را می‌برد.

فایل معرفی پروژه: مهم‌ترین فایل کل مخزن

اگر فقط یک چیز از این مقاله بماند، همین باشد: فایل معرفی پروژه (README) مهم‌تر از خود کد است، چون تنها چیزی است که مطمئنیم خوانده می‌شود.

ساختاری که جواب می‌دهد: یک پاراگراف که در سی ثانیه بگوید چه ساخته‌اید و چرا؛ مسئله و راه‌حل و دلیل انتخابش؛ نصب و اجرا در سه خط؛ یک نمونه‌ی ورودی و خروجی؛ و محدودیت‌های شناخته‌شده. بخش آخر برخلاف تصور امتیاز مثبت است. راهنمای رسمی گیت‌هاب درباره‌ی فایل‌های README هم همین اسکلت را پیشنهاد می‌دهد.

اینجا بهترین جای استفاده از مدل است: کاری خسته‌کننده که اغلب عقب می‌افتد و مدل در چند دقیقه پیش‌نویسش را می‌دهد. اصولش با نوشتن مستندات فنی یکی است.

پرامپتی که پیش‌نویس فایل معرفی را درمی‌آورد

پرامپت «برای پروژه‌ام README بنویس» خروجی بی‌مصرف می‌دهد، چون مدل نمی‌داند پروژه چیست. الگوی زیر را پر کنید و در نارنگی امتحان کنید:

نقش: کمک در نوشتن فایل معرفی مخزن گیت‌هاب
پروژه: [ابزار خط فرمان برای تطبیق فاکتور مغازه با فیش بانکی]
مسئله: [تطبیق دستی آخر هر ماه ساعت‌ها طول می‌کشید]
پشته: [پایتون، pandas، بدون پایگاه داده]
سهم من: [تمام کد؛ الگوریتم تطبیق را دو بار بازنویسی کردم]
مخاطب: [کسی که پروژه را نمی‌شناسد و سی ثانیه وقت دارد]
ساختار: معرفی کوتاه، مسئله، راه‌حل و دلیلش، نصب در سه خط،
نمونه‌ی ورودی و خروجی، محدودیت‌های شناخته‌شده
لحن: ساده، بدون تعریف از خود و بدون صفت تبلیغاتی
هر جای مبهم را به‌جای حدس‌زدن از من بپرس

خط آخر مهم‌ترین خط است؛ بدون آن مدل جاهای خالی را با ادعای ساختگی پر می‌کند.

تاریخچه‌ی کامیت: تا وقتی کسی نگاه نکند مهم نیست

تاریخچه‌ی کامیت را کمتر کسی باز می‌کند، ولی وقتی باز شود تعیین‌کننده است. مخزنی که کل پروژه در یک کامیت «first commit» ریخته، یعنی با گیت کار نکرده‌اید.

لازم نیست بی‌نقص باشد. کافی است کامیت‌ها واحدهای معنادار باشند و پیامشان بگوید چه تغییری داده‌اید و چرا؛ یک شاخه برای هر قابلیت هم نشان می‌دهد جریان کاری تیمی را می‌شناسید. مفاهیم پایه‌ی گیت برای همین ساخته شده‌اند.

نمونه‌ی اجرا: بگذارید ببیند، نه اینکه تصور کند

یک تصویر از خروجی یا چند خط از اجرای واقعی، بیش از دو پاراگراف توضیح اثر دارد: برای وب یک نسخه‌ی زنده، برای ابزار خط فرمان یک نمونه‌ی ورودی و خروجی، برای کتابخانه سه خط کد. پوشش کامل تست لازم نیست، ولی نبودِ هیچ تستی سؤال‌برانگیز است.

پیش از انتشار یک بار کد را از چشم غریبه بخوانید و نام‌های گنگ و تکه‌کدهای مرده را تمیز کنید. مدل اینجا خوب کار می‌کند؛ در بازبینی کد با هوش مصنوعی نوشته‌ام چه می‌بیند و چه نمی‌بیند.

چه چیزهایی را در مخزن نگذارید

کلید API، رمز پایگاه داده و توکن ربات تلگرام، شایع‌ترین چیزهایی‌اند که ناخواسته منتشر می‌شوند. فایل تنظیمات محیطی را بیرون بگذارید و به‌جایش نمونه‌ای بدون مقدار. پوشه‌ی وابستگی‌ها و خروجی بیلد هم جایی در مخزن ندارند.

جدول دوستونی از آنچه باید در مخزن بماند در برابر آنچه باید بیرون مخزن نگه داشته شود
ستون دوم، همان چیزهایی که بعد از انتشار پشیمانی می‌آورد.
⚠️ حذف فایل، کلید را از تاریخچه پاک نمی‌کند

پاک‌کردن کلید در کامیت بعدی کافی نیست؛ نسخه‌ی قبلی در تاریخچه می‌ماند و دیده می‌شود. اول کلید را باطل و از نو صادر کنید، بعد سراغ تاریخچه بروید. کد کارفرما را هم بدون اجازه منتشر نکنید؛ مرزهایش در امنیت اطلاعات در هوش مصنوعی آمده است.

و پروژه‌ی نیمه‌کاره‌ی رهاشده: مخزنی که ماه‌ها پیش متوقف شده و وعده‌ی قابلیت‌هایی می‌دهد که وجود ندارند، امتیاز منفی است. خصوصی‌اش کنید.

پروژه‌ی تیمی و صداقت درباره‌ی سهم خودتان

پروژه‌ی گروهی دانشگاه یا کار تیمی، اتفاقاً نمونه‌کار خوبی است — به شرط شفافیت. یک بخش کوتاه در فایل معرفی بگذارید: «اتصال به درگاه پرداخت را من نوشتم؛ رابط کاربری کار دو نفر دیگر بود.»

ادعای مالکیت کل پروژه ریسک بی‌دلیلی است؛ جامعه‌ی فنی کوچک‌تر از آن است که فکر می‌کنید. در مصاحبه‌ی شغلی هم معمولاً درباره‌ی جزئیات همان بخش می‌پرسند و صداقت اولیه کارتان را راحت‌تر می‌کند.

مرز روشن: کدی که نمی‌فهمید

مدل‌ها امروز می‌توانند یک پروژه را از صفر بنویسند. اما پروژه‌ای که کاملاً با هوش مصنوعی ساخته‌اید و از منطق داخلش سر درنمی‌آورید، در اولین مصاحبه‌ی فنی لو می‌رود — نه با سؤال سخت، با پرسشی ساده: «چرا اینجا این تصمیم را گرفتی؟»

مرز عملی: هر خطی که در مخزن عمومی‌تان می‌ماند باید بتوانید توضیحش بدهید و عوضش کنید. مدل برای مستندسازی، پیشنهاد تست و توضیح کدِ نامفهوم عالی است — همان کاربردهای برنامه‌نویسی با هوش مصنوعی. جایی که جواب نمی‌دهد این است: نمی‌داند تیم مقصد دنبال چه مهارتی است، نمی‌داند کدام پروژه در بازار کار ایران دیده می‌شود، و تجربه‌ای را که ندارید نمی‌سازد.

جمع‌بندی

نمونه‌کار خوب فهرست بلندی از مخزن‌ها نیست؛ دو یا سه پروژه‌ی تمام‌شده است با مسئله‌ی واقعی، با فایل معرفی‌ای که در سی ثانیه کارشان را توضیح می‌دهد.

از یکی شروع کنید: مسئله‌ای که خودتان از آن رنج برده‌اید، کوچک بسازید، تمامش کنید و بیشترین وقتتان را صرف فایل معرفی کنید. اگر این هفته یک کار بکنید، همین باشد.

برای ادامه:

پرسش‌های پرتکرار

چند پروژه در نمونه‌کارم بگذارم؟ +
دو تا چهار پروژه‌ی تمام‌شده کافی است، به شرطی که هرکدام فایل معرفی درست و نمونه‌ی اجرا داشته باشند. فهرست بلندی از مخزن‌های نیمه‌کاره نتیجه‌ی معکوس دارد، چون بیننده به‌جای مهارت شما الگوی رهاکردن کار را می‌بیند. اگر مخزن قدیمی‌ای دارید که به آن افتخار نمی‌کنید، خصوصی‌اش کنید؛ پاک‌کردن لازم نیست.
اگر پروژه‌ی واقعی ندارم و فقط تمرین دوره دارم، چه کنم؟ +
یکی از همان تمرین‌ها را بردارید و آن‌قدر تغییرش بدهید که دیگر مال دوره نباشد: یک قابلیت واقعی اضافه کنید، داده‌ی فارسی بدهید، تست بنویسید و محدودیت‌هایش را مستند کنید. در فایل معرفی صادقانه بنویسید که پایه‌اش تمرین فلان دوره بوده و چه چیزی را خودتان ساخته‌اید. همین صداقت خودش یک امتیاز است.
آیا استفاده از هوش مصنوعی برای نوشتن کدِ نمونه‌کار اشکال دارد؟ +
اشکال ندارد تا وقتی هر خط را بفهمید و بتوانید دلیل تصمیم‌ها را توضیح بدهید. اگر پروژه‌ای را کامل با مدل ساخته‌اید و از منطق داخلش سر درنمی‌آورید، در اولین سؤال فنی مصاحبه مشخص می‌شود و آسیبش از نداشتن آن پروژه بیشتر است. بهترین کاربردش نوشتن مستندات، تمیزکردن نام‌ها و پیشنهاد تست است، نه ساختن چیزی که خودتان نخوانده‌اید.
اگر کلید API را اشتباهی کامیت کردم، حذف فایل کافی است؟ +
نه. حذف در کامیت بعدی، کلید را از تاریخچه پاک نمی‌کند و هر کسی می‌تواند نسخه‌ی قبلی را ببیند. اول کلید را از پنل سرویس باطل و کلید تازه صادر کنید، بعد اگر لازم بود تاریخچه را بازنویسی کنید. باطل‌کردن کلید فوری‌تر و مهم‌تر از تمیزکردن مخزن است.
در پروژه‌ی تیمی چطور سهم خودم را نشان بدهم؟ +
در فایل معرفی یک بخش کوتاه بگذارید و دقیق بنویسید چه قسمتی را خودتان نوشته‌اید و چه قسمتی کار بقیه بوده است. اگر مخزن اصلی مال تیم یا شرکت است، لینکش را بدهید و نقشتان را توضیح دهید؛ کپی‌کردن کد دیگران در مخزن شخصی، هم اخلاقی نیست و هم ممکن است با قرارداد کاری‌تان تعارض داشته باشد.
#نمونه کار برنامه نویسی #گیت‌هاب برای رزومه #فایل معرفی پروژه #پروژه برای استخدام #رزومه‌ی برنامه‌نویس
به‌دردِ کسی می‌خورد؟ تلگرام واتساپ
🍊

خواندنش خوب بود — حالا امتحانش کن

هرچه در این صفحه خواندی، همین حالا داخلِ نارنگی قابلِ اجراست. ثبت‌نام با شماره‌ی موبایل، نارنگیِ رایگانِ شروع، بدونِ نیاز به کارت یا تحریم‌شکن.

بدونِ نصب هم کار می‌کند — ولی در اپ سریع‌تر است