ده توصیه برای برنامه‌نویسان جوان

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

Eric-Raymon-g-plus

اصل مطلب را می‌توانید این‌جا بخوانید و این هم ترجمه‌اش:


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

تبدیل شدن به یک برنامه‌نویس بزرگ کار ساده‌ای نیست، به زمان احتیاج دارد. من در این‌جا ده توصیه برای برنامه‌نویسان تازه‌کار دارم که می تواند در طی کردن این مسیر به آن‌ها کمک کند.

۱- وقت بگذارید

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

۲- کد بنویسید، کد بنویسید

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

۳- توانایی‌های‌تان را گسترش دهید

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

۴- کار کردن با دیگران را یاد بگیرید

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

group-programming

۵- از دانش استفاده کنید، نه از جادو

بیشتر صنعت نرم‌افزار در گمراهی به سر می‌برد. یاد بگیرید که موضوعات جادویی را بشناسید و از آن‌ها پرهیز کنید. جوهر دانش، حل مسایل واقعی با پاسخ‌هایی فراگیر و غیرقابل مقاومت است و البته [مستلزم] سعی و خطای بسیار شدید خواهد بود. به دنبال مد نروید. اولین مساله واقعا مهم بعدی را انتخاب کنید. یک راه‌حل مینیمال قابل‌استفاده برایش خلق کنید. آن را امتحان کنید و فقط اگر به نظر آمد که کار می‌کند، نگه‌اش دارید.

۶- به غرایزتان اعتماد کنید

ما برای کار کردن با دیگران از غرایز نسبتا خوبی برخورداریم. آموزش و کار این غرایز را در ما می‌کُشند. غالب اوقات به ما می‌آموزند که ناراحتی و درد را تحمل کنیم. اما شما یاد بگیرید که به غرایزتان اعتماد کنید. اگر کاری که می‌کنید غلط به نظر می‌رسد اصلاحش کنید. حتی اگر به یک دهه زمان نیاز داشت، بنویسیدش، درکش کنید و اصلاحش کنید.

۷- با هرچه که در اختیار دارید کار کنید

با مسایل، ابزارها و افرادی که در دسترس دارید کار کنید. تمرکزتان را روی این موضوع قرار دهید که کار را درست، مینیمال و ساده انجام دهید. منتظر نباشید تا فناوری‌های فردا از راه برسند. سعی نکنید آینده را اختراع کنید. هدف کارتان این باشد که راه‌حل‌های واقعی برای مسایل واقعی ایجاد کنید. آینده خودش، خودش را اختراع خواهد کرد.

۸- از انتقادها استقبال کنید

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

criticism

۹- هزینه‌های‌تان را پایین نگه دارید

کم‌هزینه بودن مهم است. یاد بگیرید که از لینوکس و یک کامپیوتر ارزان دست دوم استفاده کنید. استفاده از خط فرمان را یاد بگیرید. به زبان‌های کوچکی مانند C بچسبید و ترجیحا به سراغ زبان‌های عظیمی مانند ++‌C نروید. یاد گرفتن یک زبان بزرگ‌تر شما را برنامه‌نویس بهتری نمی‌کند!

۱۰- کارهای‌تان را منتشر کنید

کدهای‌تان را با اسم واقعی‌تان منتشر کنید. به عنوان یک مشارکت‌کننده در پروژه‌های منبع‌باز شرکت کنید. اگر شما را نخواستند، به دنبال پروژه‌هایی بگردید که شما را بخواهند! وجهه عمومی خوبی برای خودتان بسازید. به سراغ GitHub بروید. همه این‌ها در آینده رزومه شما را خواهند ساخت.


اگر این مطلب مورد پسندتان بود، بد نیست سری هم به مجموعه «پندهای یونیکسی استاد فو» بزنید.

‌BIRRC ابزاری احتمالا مفید برای بلاگرها

خلاصه

برای دوستانی که حوصله خوندن متن طولانی رو ندارند:

برنامه‌ای نوشتم که می‌تونه تعدادی فایل تصویری رو بگیره (در واقع عکس‌هاتون رو انتخاب کنید و بکشید روی آیکن این برنامه) و همه اون‌ها رو به فرمت jpg تبدیل کنه، ابعادشون رو به حداکثر ۸۰۰ پیکسل کاهش بده، کیفیت شون رو برای آپلود در وب تا حدود ۸۰ درصد پایین بیاره و بعد با اسمی که شما تعیین می‌کنید از نو نام‌گذاری‌شون کنه. این برنامه احتیاجی به نصب شدن نداره و می‌تونید از این‌جا دانلودش کنید.

به نظرم رسید که این ابزار می‌تونه برای خیلی از بلاگرها به دردبخور باشه. به همین دلیل گفتم این‌جا منتشرش کنم و در موردش بنویسم تا شاید هم به درد کسی بخوره و هم ایراد و اشکال‌هایی که خودم ندیدم، بهم نشون داده بشه.

پیش‌زمینه

برای سری پست‌های «دوز روزانه معماری» در وبلاگ معماری‌ام، به صورت مداوم به تغییر ابعاد و اندازه عکس‌ها، نام‌گذاری مجددشون براساس شماره پست (مثلا DDA-7-3 برای سومین عکس پست شماره ۷ دوز روزانه) و البته کاهش حجم‌شون (با کاهش کیفیت JPG تا ۸۰٪) نیاز داشتم اما:

۱- نام‌گذاری دسته‌ای ویندوز به خاطر اون پرانتزهاش به دردم نمی‌خورد.
۲- حوصله باز کردن همزمان چندتا عکس توی Paint.NET، تغییر ابعادشون و ذخیره مجدد با کیفیت پایین‌تر رو نداشتم.

به همین دلیل اول برای حل مشکل نام‌گذاری یه برنامه Batch Rename برای خودم نوشتم. بعد هم یک برنامه برای تغییر ابعاد و فرمت عکس‌ها و بعد تصمیم گرفتم هر دو برنامه رو با هم ادغام کنم و اسمش رو بگذارم BIRRC (مثلا سرنام Batch Image Rename,Resize and Convert) که خیلی هم خفن به نظر بیاید.

BIRRC

این برنامه رو به چند دلیل به جای پایتون (همراه با کتابخانه Pillow و شبه‌کامپایلر Pyinstaller) با Pure Basic نوشتم که بعدا توضیح می‌دم. خود برنامه رو می‌تونید از این‌جا دانلود کنید (فعلا فقط نسخه ۶۴ بیتی) و این هم کد برنامه است:

OpenConsole()
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UseJPEG2000ImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()
Print("Enter the constant part of file name:")
constantPart.s=Input()
numberOfFiles.i = CountProgramParameters()
iterator.i = 1
itLength = Int(Log10(numberOfFiles))+1
For i=0 To (numberOfFiles-1)
currentFile.s =ProgramParameter()
im = LoadImage(#PB_Any , currentFile)
If ImageHeight(im) > 800 Or ImageWidth(im) > 800
If ImageHeight(im) > ImageWidth(im)
newHeight.i = 800
newWidth.i = (800 * ImageWidth(im))/ImageHeight(im)
Else
newWidth.i = 800
newHeight.i = (800 * ImageHeight(im))/ImageWidth(im)
EndIf
ResizeImage(im , newWidth,newHeight)
EndIf
;;;File Operation
DeleteFile(currentFile)
newFile.s = GetPathPart(currentFile) + constantPart + RSet(Str(iterator), itLength ,"0") + ".jpg"
SaveImage(im , newFile,#PB_ImagePlugin_JPEG,7)
iterator = iterator + 1
Next

دلیل استفاده نکردن از پایتون هم این بود که اولا نصب Pillow و Pyinstaller روی آخرین نسخه پایتون (3.5) کاری ملال‌آوره و دوم این‌که فایل اجرایی حاصل هم حجم زیادی در حد ۸ مگابایت (در مقابل ۸۰۰ کیلوبایت فعلی) داشت.

شیوه استفاده

برنامه احتیاجی به نصب نداره. هرجا خواستید کپی‌اش کنید. اما برای راحتی کار می‌تونید یک shortcut براش روی دسک‌تاپ درست کنید. حالا فایل‌های تصویری موردنظرتون رو انتخاب کرده و روی این برنامه یا shortcutاش بکشید و رها کنید.

Drag-and-Drop

بعد از اون پنجره‌ای باز می‌شه که از شما می‌خواد اسم جدید فایل‌ها رو وارد کنید. بعد از وارد کردن اسم Enter بزنید.

Consoleو تمام. فایل‌های شما به فرمت jpg تبدیل می‌شن، اسم‌شون تغییر می‌کنه و کیفیت‌شون هم کم میشه تا حجم فایل‌شون پایین بیاد. توی همین نمونه مثلا حجم عکس‌ها از حدود ۳ مگابایت رسیده به ۶۷ کیلوبایت و اسم‌شون هم به BIRRC-1 تا BIRRC-5 تغییر کرده.

Finished

فقط دقت کنید که این برنامه فایل‌های اصلی رو جایگزین می‌کنه. پس اگر بهشون احتیاج دارید قبل از کشیدن‌شون روی آیکون برنامه ازشون کپی بگیرید!

باگ‌ها

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

۱- اگر عکس‌های شما از دوربین اومده باشند و توی EXIF عکس‌ها متادیتای دوران دوربین وجود داشته باشه (دوربین روی عکس زاویه گرفته شدن رو ثبت کرده باشه)‌ عکس بعد از تغییر اندازه دوران می‌کنه و ۹۰ درجه می‌چرخه.

۲- اگر وسط فایل‌هایی که روی روی برنامه می‌کشید فایلی غیر از عکس یا عکسی با فرمت‌های غیرمعمول وجود داشته باشه، برنامه بدون هیچ پیغام خطایی اون فایل رو پاک می‌کنه.


به هر حال اگر از BIRRC استفاده کردید و خوش‌تون اومد یا به هر دلیلی مشکلی داشت و به درد نخورد یا هر چیز دیگه‌ای خوشحال می‌شم بهم اطلاع بدید.