یادگیری لغت انگلیسی با اپ موبایل

۱.  اینجا ۳ تا اپ می‌خوام معرفی کنم که هرکدوم یه جور جالبی به آدم کمک می‌کنن تا لغات و کلمات جدید یاد بگیره.

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

۳. بریم سراغ اپ ها. لینک گوگل پلی رو برای هر کدوم گذاشتم. از ورژن آی‌او‌اس اپ ها هم خبر ندارم.

Memrise

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

memrise تقویت دایره لغات

در واقع ممرایز برای حفظ کردن هر چیزی که یک معادل داره مفیده( f(x) = y ) و توی اپ هم علاوه بر لغات انگلیسی و غیر انگلیسی کلی چیز جالب دیگه هم هست مثلن پرچم کشور ها، پایتخت‌ها،‌و حتی کامند‌های ترمینال لینوکس. هرچند به نظرم درمورد مثلن کامندها نشه راه خوبی برای یادگیری حسابش کرد.

Ultimate Vocabulary Prep for English, GRE® & exams

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

تقویت دایره لغات

Magoosh Vocabulary Builder

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

magoosh فلش کارت لغت انگلیسی

 

 

 

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

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

conda create -n py36 python=3.6 anaconda

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

source activate py36

 

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

 

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

بهترین زبان برنامه نویسی برای شروع

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

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

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

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

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

انتخاب توزیع لینوکس مناسب

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

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

اوبونتو ۱۷.۱۰

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

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

امنیت و جنگو

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

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

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

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

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

 

 

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

بیت کوین – پایان پولی که می‌شناسیم

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

بیت کوین پایان پولی که می شناسیم

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

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

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

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

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

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

 

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

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

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

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

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

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

اوپن سورس معنیش این نیست که همین الان می‌تونم عوضش کنم

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

اوپن سورس - متن باز

۲. یکم فنی‌تر: پروسه‌ی تولید یک نرم‌افزار تقریبن اینجوریه:

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

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

 

 

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

استارت‌آپ و با کله سقوط کردن و سیلیکون ولی

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

startup

۲. اولین چیزی که توی این پیشنهاد توی ذوقم خورد،‌ این بی-درنگ-پیشنهاد-دادن بود. حتی حاضر نبود چنددقیقه صبر کنه تا باهام یکم بیشتر آشنا شه و اندکی محک بزنه منو.

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

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

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

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

silicon valley

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