توجه به کیفیت محصول و جابینجا

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

شغل های پیشنهادی جابینجا

این‌ها رو من در ازای کلمه‌ی کلیدی هدوپ\Hadoop دارم دریافت می‌کنم. رک بگم، افتضاحه. به معنی واقعی کلمه هیچ کمکی نمی‌کنه. اولین کاری که بعد از این نوشته قراره بکنم اینه که این ایمیل ها رو کنسل کنم.

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

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

 

۴. درس اخلاقی: به کیفیت کارتون اهمیت بدین. تناقض تلخیه که چیزی که قراره برای صرفه جویی در وقت استفاده بشه، باعث شه وقت مشتری بیشتر هدر بره.

 

 

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

پایتون دو و سه در آناکوندا

۱. موقع نصب آناکوندا دو تا گزینه هست: آناکوندا برای پایتون ۲ و آناکوندا برای پایتون ۳. من خودم با پایتون سه بیشتر سر و کار دارم اما گاهی ممکنه پیش بیاد که آدم به پایتون ۲ هم نیاز داشته باشه‌(پیش اومد دیروز). نصب دوباره‌ی اناکوندا کار جالبی نبود برام. کمی گشتم و به این راه حل رسیدم:

conda create -n py36 python=3.6 anaconda

با این دستور می‌شه یه محیط مجازی (virtual environment) جدا ساخت و نسخه‌ی پایتون دلخواه رو توش نصب کرد. py36 اسم این محیط مجازیه و می‌تونه هر اسمی باشه(احتمالن باید یکسری قواعد اسم گزاری توش رعایت شه، مثلن با عدد شروع نشه و توش فاصله نباشه و…). python=3.6 مشخص می‌کنه که از چه ورژنی از پایتون توی این محیط مجازی قراره استفاده بشه. می‌تونه مثلن ۲.۷ باشه این مقدار‌(چیزی که من نیاز داشتم.)
برای استفاده از این محیط مجازی هم کافیه عبارت زیر رو توی ترمینال بزنید:

source activate py36

 

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

 

۲.  پروژه‌ی آناکوندا یکی از چیزای خیلی باحال دنیای پایتونه. آناکوندا همه‌ی (تقریبن همه) ماژول های پایتون رو – مخصوصن اونهایی که توی علم داده – کاربرد دارن رو یکجا جمع کرده و آدم رو از نصب های مکرر و پیدا نشدن پکیج ها و اینجور چیزای حوصله سربر خلاص می‌کنه. یک سری ابزار دیگه هم می ده مثل یه نوت بوک که باهاش می‌شه توی مرورگر کد نوشت. خیلی چیز باحالیه در کل. البته این نوت بوک (ژوپیتر) جدا هم قابل دسترسه اما خب توی آناکوندا هم هست. معرفی آناکوندا بمونه برای بعد.

زبان کند و آسون جاوا

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

جاوا: ساده و کند

۲. این که جاوا کند و کم سرعته درواقع زمانی درست بوده. بخاطر این که برنامه های نوشته شده به زبان جاوا، روی ماشین مجازی جاوا اجرا می‌شدن، سرعتشون نسبتن کم بود(نسبت به زبان مثلن سی، خیلی کم بود). ماشین مجازی جاوا یه خلاقیت خیلی باحال بوده اون زمان. این امکان رو می‌داده که برنامه ها فقط یه بار نوشته بشن و کامپایل بشن و همه جا، روی هر سیستم و سیستم عاملی اجرا بشن. اضافه شدن یه لایه‌ی نرم‌افزاری که بین برنامه‌ی نوشته شده و سیستم عامل قرار می‌گرفت، باعث می‌شد برنامه‌های جاوایی کند‌تر باشن. این قضیه توی نسخه‌های اولیه‌ی جاوا خیلی شدید بود ولی از تقریبن جاوای ۱.۴ به بعد خیلی خیلی کم و کمتر شد کندی جاوا و مثلن اگر امروز برید و بنچ مارک‌هایی از جاوا رو ببینید می‌بینید که سرعتش اونقدرهام پایین نیست.

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

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

چرا بیت کوین مهم حساب می‌شه

۱. بیت کوین خیلی وقته که سر زبون‌ها افتاده. توی چند ماه اخیر هم با افزایش ارزش ناگهانیش تقریبن دیگه برای همه شناخته شده حساب می‌شه. ولی چرا؟ چه چیزی باعث می‌شه که بیت کوین مهم باشه؟ اگر هنوز از بیت کوین چیزی نمی‌دونین، بهتره اول فیلم بیت‌کوین: پایان پولی که می‌شناسیم رو ببینید.

بیت کوین - پول دیجیتال - بلاک چین

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

۳. پول رو بانک ها تولید می‌کنن. این که قبل چطور تولید می‌شده و چه اساسی داشته، یه داستان طولانیه. ولی الان عملن هیچ منطقی پشتش نیست و تقریبن هروقت بخوان می‌تونن پول تولید کنن. علاوه بر اون،‌ سپرده‌های ما توی بانک ها هم پول تولید می‌کنن. درواقع اینجوریه که مثلن من یک میلیون تومن پول رو توی یه بانک امانت می‌ذارم که برام ازش محافظت کنه. ولی اتفاقی که می‌افته اینه که به محض این که پول من وارد بانک می‌شه‌(این توضیح حالت خیلی انتزاعی و ساده شده‌ی قضیه‌س) بانک اون پول رو مثلن قرض/وام می‌ده به یه نفر دیگه. من به خیالم پولم توی بانکه، و البته واقعن هم هروقت بخوام می‌تونم پسش بگیرم، درحالی که الان داره یه جای دیگه مصرف می‌شه. درواقع یک میلیون تومن من، الان داره به اندازه دو میلیون تومن کار می‌کنه. این یکی از اتفاق‌هاییه که توی بانک‌ها می‌افته و اونها رو پولدار تر و پولدارتر می‌کنه و مثلن توی سال ۲۰۰۸ گندش درمیاد‌(در کنار یه سری موارد دیگه)‌و باعث بحران اقتصادی می‌شه.

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

۵. بیت‌کوین وابسته به هیچ دولتی نیست. پس کارهایی که دولت‌ها با پول‌ها می‌کنن، با بیت‌کوین نمی‌تونن بکنن. مثلن یکیش اینکه بیت‌کوین مرزی نمی‌شناسه. شما می‌تونین بدون جواب پس دادن به این و اون، هرچقدر که خواستین پول منتقل کنید از ایران به آمریکا – دو کشوری که رابطه‌ی سیاسی خوبی ندارن و عملن انتقال پول بین این دو تا به صورت مستقیم ممکن نیست. توی حالت غیر مستقیم هم این اتفاق با کلی دردسر همراهه و خیلی هم زمان می‌گیره. درحالی که با بیت کوین این اتفاق بین چند دقیقه تا چند ساعت(در بدترین حالت) زمان می‌گیره.

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

۷. بیت کوین امنه. یعنی دزدی توش تقریبن غیر ممکنه. دلیل اصلی هم اینه که هیچ فردی با قدرت و نفوذ بالا ، توی دنیای بیت کوین وجود نداره. هیچ تصمیم گیرنده‌ای نیست که بتونه با یه تصمیم شخصی، بیت کوین بوجود بیاره یا مصادره کنه یا امثال‌ این ها. از طرف دیگه، مثل ریال و دلار، نمی‌شه بیت کوین تقلبی چاپ(!) کرد. تقلب کردن توی بیت کوین تقریبن غیر ممکنه.

۸. بیت‌کوین شفافه. درواقع چیزی که بهش می‌گیم سکه‌ی بیتی(!) یه نرم افزار اوپن سورس و آزاده که هرکسی که دلش بخواد می‌تونه روش نظارت کنه، سورس کد رو ببینه تا مطمئن شه از صحت و سلامتش و حتی بیاد و به بقیه کمک کنه توی بهبودش. کسی برای توسعه‌ی بیت‌کوین حقوق نگرفته. بلاک چین  (تکنولوژی پشت بیت‌کوین) و بیت‌کوین چیزیه که برنامه‌نویس‌ها و گیک‌ها به دنیای ما دادن (در راسشون، ساتوشی ناکاموتو که هنوز هویت واقعیش مشخص نیست و کسی اونو ندیده از نزدیک) . یک اتفاق بزرگ که حاصل کنجکاوی گیک‌ها در دونستن، و علاقه‌شون به انجام دادنه. دنیای ما از این جور چیزها زیاد دیده و بیشتر هم خواهد دید.

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

 

 

امنیت و جنگو

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

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

امنیت وب - پایتون و جنگو - پایکان

۳. پایکان یه اجتماع سالانه(!) س که هر سال برگزار می‌شه و برنامه‌نویس‌ها و علاقه‌مندهای پایتونی رو دور هم جمع می‌کنه. توی پایکان ۲۰۱۷ ارائه‌ی خیلی خوبی دیدم به اسم آشنایی با توسعه‌‌ی وب امن با پایتون و جنگو. توی این ارائه‌ي سه ساعته،‌ آقایی به نام  جیمز بنت درمورد نکات و تهدیدات امنیتی رایج و حتی غیر رایج حرف می‌زنه و یک سری راه حل هم (خیلی مختصر) ارائه می‌ده. البته که اینجا بیشتر تمرکز روی جنگو هست، اما به نظرم برای هر دولوپری با هر زبان برنامه‌نویسی‌ای، دونستن این مطالب( حد اقل خود تهدید‌ها) می‌تونه مفید باشه. برنامه نویس خوب شدن کار سختیه. نه که جادویی در کار باشه. لازمه‌ش اینه که از کنار هیچ چیز ساده رد نشه آدم. در کنار این ویدیو که درباره یه موضوع خاصه، کتاب 97 چیز که هر برنامه نویس باید بدونه هم می‌تونه برای هربرنامه‌نویسی مفید باشه.

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

 

 

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

مصاحبه با ۲۵ دیتا ساینتیست

۱. علم داده یا همون دیتا ساینس یقینن یکی از شاخه‌های علم توی قرن حاضره. دیتا ساینتیست ها هم یقینن گروهی از متخصصان که برای آدمهای کنجکاو جذابیت زیادی دارن. کتاب Data Science Handbook تشکیل شده از ۲۵ تا مصاحبه. هر کدوم با یکی از چهره‌های برجسته‌ی این فیلد، معروف ترینشون دی‌جی پاتیل. خوندنش یقینن خالی از لطف نیست.

Data science handbook مصاحبه با ۲۵ متخصص علم داده

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

۳. مصاحبه‌های  کتاب Data Science Handbook، خیلی متنوعن. توی بعضی‌هاشون مثل مصاحبه‌ی دی‌جی پاتیل (آدم فکر می‌کنه با یه موزیسین مست لایعقل طرفه 🙂 ) بیشتر درمورد اهمیت این حوزه‌ حرف زده می‌شه. توی یه سریاشون، درمورد فواید و دستاورد‌های افراد این فیلد، توی یه سریا هم مسائل فنی بحث می‌شه. حتی چند جا برای افرادی که می‌خوان توی این فیلد خاص فعالیت کنن، راهنمایی هم هست. این که چی باید بدونن و چی باید یاد بگیرن و چه مسیری رو طی کنن. البته نمی‌شه این کتاب رو، کتاب آموزشی حساب کرد. همچنان باید در نظر داشت که با یه سری مصاحبه طرفیم. نکته‌ی خیلی خوب این کتاب هم اینه که کاملن رایگانه.

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

تایپ ده انگشتی برنامه نویس حرفه ای

۱. نکته‌ی جالبی که درمورد حرفه‌ای شدن اینه که برای حرفه‌ای شدن، لازم نیست کار جادویی و خارق‌العاده‌ای انجام بده آدم. شایدم لازم باشه ولی مهم‌تر از اون، رعایت نکات ریز و پیش‌پا افتاده‌س. درمورد برنامه‌نویسا مثلن، تایپ ده انگشتی. شاید مسخره بیاد ولی تایپ ده انگشتی واقعن یکی از چیزاییه که برای برنامه نویس، حتی از خیلی مهارت‌های تخصصی مهم‌تره. بی‌نهایت بار تا حالا برنامه‌نویسای خوب و خلاقی رو دیدم که درعین حال که خیلی توی تخصصشون خبره بودن، ولی توی تایپ کردن اونقدر مبتدی و ناشی به نظر میومدن که آدم، حتی درمورد مهارتاشونم شک می‌کرد.  انقدر سوتی می‌دادن توی تایپ، یا انقدر موقع نوشتن خیره بودن به کیبورد که هی یه سلسله کاراکتر اشتباه رو می‌نوشتن و بعد مجبور می‌شدن که همه رو پاک کنن و از اول بنویسن، یا رایج ترین حالتش این که خیلی کند بودن. یه بار با یکی از برنامه‌نویسایی که ۳  ۴ انگشتی تایپ می‌کرد، این نکته رو مطرح کردم، واکنشش این بود که چیزای مهم تری برای یادگرفتن داره و نمی‌تونه وقتشو پای این چیزا بزاره. یه بارم یکی دیگه گفت که تا مجبور نشه شروع به یادگرفتن چیزی نمی کنه و الان هم در وضع فعلی،‌ نیازی به این کار احساس نمی کنه. عجیب‌ترین مورد هم ادعا می‌کرد که می‌تونه فقط با دو تا انگشت اشاره، از هرکسی سریع‌تر تایپ کنه.  تایپ ده انگشتی واقعن ممکنه. اگر دست من بود به عنوان یه نکته اضافه می‌کردمش به کتاب 97 چیزی که هر برنامه نویس باید بداند.

تایپ ده انگشتی برای برنامه نویس

۲. تایپ ده انگشتی واقعن آسونه. توی دو خط می‌شه جا داد تایپ ده انگشتی رو.  روی کیبورد حروف ت و ب فارسی‌( جی و اف انگلیسی) یه برآمدگی خفیف دارن. این برای اینه که دست ما بتونه با لمس اونا رو پیدا کنه. دو تا انگشت اشاره ما باید روی این دو تا قرار بگیره. باقی انگشتا هم به ترتیب روی کلید‌های مجاور. به همین راحتی. هر انگشت فقط حرفی رو می‌نویسه که توی این حالت، روش قراره گرفته، به اضافه‌ی کلیدای بالا و پایین اون کلید اصلی. توی تصویر بالا هم اگر دقت کنید می‌شه جای قرار گیری انگشت‌های اشاره رو دید. همینطور، کلید‌هایی که قراره با یه انگشت فشرده بشن، با یه رنگ مشترک مشخص شدن.

۳. برای یادگرفتن تایپ انگشتی کافیه یه متن ۲۰۰ کلمه‌ای رو بنویسید تا جای دکمه‌ها حفظتون بشه. یکی دو هفته هم اگر خودتون رو ملزم به ده انگشتی تایپ کردن کنید، بعد از اون حتی تصور استفاده از کمتر از ۹ انگشت برای تایپ کردن،‌ غیر ممکن می‌شه. سایتای زیادی هم برای یادگرفتن تایپ ده انگشتی هستن. فقط کافیه به انگلیسی گوگل کنید: Ten finger typing. یا مثلن به عنوان نمونه یه نگاهی به تایپینگ آکادمی بندازید که حروف کیبورد رو دونه دونه براتون میاره برای تایپ تا حفظ شدن جای حروف هم براتون راحت تر بشه. یه سایت دیگه هم هست به اسم تایپینگ با دومین خیلی بجای آی‌او که تایپ کردن رو مخصوص برنامه نویس ها یاد می‌ده و تمرین‌های باحالی هم برای کمک کردن به سریع شدن تایپ کردن داره.

 

اتم: ادیتور دوست داشتنی

۱. یه سریا ویژوال استودیو رو می‌پرستن. واقعن هم حق دارن. فکر کن می‌خوای کد بزنی. دو سه تا کاراکتر می‌زنی، بقیه دستور و فانکشن و کلاس و … رو خودش برات می‌اره. فکر کن داری از یه کلاس استفاده می‌کنی ولی یادت نیست اسم اون متدی که میخواستی استفاده کنی چی بود. یه نقطه می‌ذاری،‌ کنترل اسپیس و اجی مجی همه متدهاش لیست میشه برات. خوبه. نیست؟ نیست آقا. نیست!

نرم افزار ویرایشگر اتم

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

۳. اتم رو خیلی دوست دارم. یه ادیتور ساده با کلی ویژگی خوب. اولین خوبیش اینه که – مخصوصن توی پروسه یادگیری- مجبور میکنه برنامه نویس رو که همه چیز رو خودش بنویسه. البته یه سری کمک می کنه ها. ولی خب اینا اسمشون کمکه، نه این که بیاد کل کار رو از رو دوش برنامه نویس برداره.

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

 

چرا پایتون؟

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

لوگو زبان برنامه نویسی پایتون

۲. پایتون زبان جدیدی نیست. در واقع از نظر قدمت تقریبن هم سابقه جاوا حساب می‌شه و از دات نت و سی شارپ هم پیرتره. اما تا حدودی گم نام تر از الباقیه. بارها اتفاق افتاده که آدم ها بدون آگاهی داشتن، من رو متهم کنن به استفاده از زبان گمنام و بدون کاربرد. اما پایتون شاید معروف نباشه(که داره می‌شه)‌ اما اصلن بدون کاربرد نیست.

۳. شاید در برخورد اول، سینتکس یک زبان مهم‌ترین چیزیه که می‌شه بهش توجه کرد و اینجا هم به همین قضیه بسنده می‌کنم. پایتون از نظر ظاهری شبیه زبان‌های رایج نیست. درواقع دقت اگر بکنید می بینید که اکثر زبان‌هایی معروف به شدت از روی سی الگو برداری کردن. ولی توی پایتون قضیه فرق داره. اینجا خبری از سمی کالن نیست. خبری از کرلی بریس(آکولاد) نیست. خیلی جاها حتی از پرانتز هم استفاده نمی‌شه. مثلن شرط ها و حلقه ها به پرانتز احتیاج ندارن. این باعث می‌شه برنامه نویس تا حد زیادی از شر اون دکمه‌های اعصاب خورد کن و پرتکرار که همه‌شون هم توی قسمت‌های ناجور کیبوردن، خلاص بشه.

۴. کد‌های زیر رو نگاه کنید:

پایتون در مقابل سی و جاوا

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

۴. توی مطالب بعدی احتمالن برم سراغ گستردگی حوزه‌هایی که پایتون توشون قابل استفاده‌س. همینطور اینکه کجا و چرا باید پایتون رو به مثلن جاوا ترجیح داد و چیزای دیگه‌ای از این دست. اگر برنامه‌نویس و مخصوصن برنامه‌نویس پایتون هستید ممنون می‌شم تجربیاتتون درمورد پایتون رو برام کامنت کنید یا توی به جیمیل resa.keshavarz بفرستید (به املای ادرس حتمن دقت کنید). شاید بتونیم با همفکری پایتون رو جور بهتری معرفی کنیم به تازه برنامه‌نویس ها یا اونایی که هنوز از پایتان زیاد آگاه نیستن.

 

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

۹۷ چیزی که هر برنامه نویس باید بداند

۱. کتابیه که اسمش کاملن واضح می‌گه محتوا چیه:‌ نود و هفت چیز که یه برنامه نویس باید بدونه. یا بهتره بگیم نود و هفت نکته که دونستنش به یه برنامه نویس کمک می‌کنه که برنامه نویس بهتری بشه. کارهای خورد و ریزی مثل کامنت گذاری و اهمیتش و شیوه‌ی درست انجام دادنش گرفته تا اهمیت استفاده از نرم افزار های ورژن کنترل(مثلن گیت) برای توسعه نرم افزار. یا مثلن این که کد زدن و مهارتهای مهندسی تنها عاملهای موفقیت نیستن و چیزای دیگه ای هم هستن که یه برنامه نویس باید حواسش بهشون باشه. درکل کتابیه که به شدت به هر کسی که برنامه نویسه یا می ‌خواد برنامه نویس باشه توصیه می‌شه. این رو هم بگم که هیچ کدوم از این نود و هفت چیز بیشتر از دو صفحه نیستن و خب زمان زیادی رو از آدم نمی گیرن. پیشنهاد شخصی من هم البته اینه که وقتی برین سراغ این کتاب که حداقل روی یه زبان برنامه نویسی مسلط باشین و یکی دو تا پروژه (چه بهتر که تجاری/واقعی/کاربردی باشن ولی پروژههای تمرینی هم قبوله) انجام داده باشین و تا حدودی با پروسه تولید نرم افزار آشنا باشین. این رو هم بگم که کتاب کاملن رایگان هست و هم روی گیتهاب و هم توی خیلی از سایتهای دانلود کتاب می‌تونید با خیال راحت پیداش کنید و دانلود کنید.

۹۷ چیزی که هر برنامه نویس باید بداند

۲. این جا تعدادی از تیتر ها رو می ذارم که شاید جذاب تر کنه خوندن کتاب رو:

  •  رعایت اصول بنیادی برنامه‌نویسی
  • از خود بپرسید کاربر – در این موقعیت- چکار خواهد کرد!‌ (شما کاربر نیستید)
  • زیبایی در سادگی ست
  • قانون پیشاهنگی
  • ابزار‌های خود را با دقت انتخاب کنید
  • مرور کد
  • کامنتی درباره کامنت ها
  • تنها چیزی را کامنت کنید که کد نمی تواند بیان کند
  • یادگیری مستمر
  • از خراب کردن چیزها نترسید
  • با دیتای تست نرم رفتار نکنید
  • ارور ها را نادیده نگیرید
  • به یاد گرفتن یک زبان بسنده نکنید،‌ فرهنگ آن را هم درک کنید
  • خودتان را تکرار نکنید
  • و …

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