مسیر تبدیل شدن به یک دانشمند داده / دیتاساینتیست

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

زبان برنامه نویسی مرتبط

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

لینوکس و ابزارهاش

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

اکسل

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

ویژوالایزیشن

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

پایگاه‌های داده

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

آمار و ریاضی

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

یادگیری ماشین

موضوع داغ این روزها، یادگیری ماشین است. الگوریتم‌هایی که بعد از اجراشون حس می‌کنیم ماشین‌ها به شکل جادویی چیزی رو یاد گرفتن که ما به خوبی ازش سردرنمیاریم. برای درک مساله، خوبه حداقل این ده الگوریتم رو بلد باشین:‌ linear regression ،logistic regression ،SVM ،random forests ،Gradient Boosting ،PCA ،k-means ،collaborative filtering ،k-NN و ARIMA. در این بخش همچنین لازمه بفهمیم که چطوری باید پرفرمنس یه مدل رو سنجید، آپتییمایز کرد، کراس ولدیت کرد، توابع خطی و غیرخطی رو دونست و جبرخطی و حسابان رو بلد بود. البته لیست دونستی‌ها اینجا زیاده مثلا overfitting و شبکه‌های عصبی و درخت تصمیم و … و البته چیزهای بزرگی مثل هوش مصنوعی و تفسیر زبان طبیعی و … اگر در دنیای پایتون هستین دونستن کتابخونه‌هایی مثل نامپای، پایتورچ، سایکیتلرن، پانداز و تنسورفلو می‌تونه خط شروع خیلی خوبی به شما بده. کتاب پیشنهادی؟‌ یه نگاه به کار عملی با سایکیت لرن و تنسورفلو بندازین.

اما…

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

درست کردن اعتبار

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

حرف آخر

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

اگر هم فکر کردین چیزی باید اضافه یا کم بشه، خوشحال می شم تو کامنت ها بگین. تخصص منم نیست.

منبع اصلی این مطلب.

مرتبط

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

یکی از سوال های دائمی اینه که «از کجا شروع کنم» یا «تا اینجا اومدم حالا کجا برم». جواب این سوال نیاز به یک نقشه داره؛ یک نقشه راه!

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

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

برای دیدن عکسهای بزرگتر، روی عکسها کلیک کنید




منبع در گیت هاب

چگونه به یک هکر یا متخصص امنیت عالی تبدیل بشم

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

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

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

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

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

اما با داشتن بحث قبلی در ذهن، بذارین نگاهی هم بندازیم به انواع شغل‌هایی که یکه متخصص امنیت می تونه داشته باشه و ببینیم راه رسیدن به هر کدومش چه چیزیه:

  • تست کننده امنیت اپلیکیشن‌های وب:‌ یاد بگیرین برنامه بنویسین تا توی این بحث از آدم‌هایی که فقط بلدن اپلیکیشن تست کنن فاصله بگیرین. درک از سیستم‌عامل و دیتابیس بهتون کمک خواهد کرد و همینطور دونستن چیزهایی مثل پی اچ پی، جاوااسکریپت، پایتون و جاوا. اگر بتونین شیوه کار چیزی رو درک کنین، شکستنش راحتتر خواهد بود. بعد از اون دنبال OWASP بگردین و مسیر رو پیدا خواهید کرد.
  • متخصص امنیت شبکه:‌ بهتره برای خودتون یک لابراتوار درست کنین که اجزای متفاوتی داشته باشه. مثلا استک لمپ (لینوکس، آپاچی، مای اسکوئل، پی اچ پی) همیشه شروع خوب و مرسومی است و بعد بررسی کنین که هر جزء از این استک چطوری امن می‌شه. درک اولیه‌تون که کامل شد می‌تونین برین سراغ PTES (استاندارد اجرای پن تست) و شیوه‌هایی که هکرها به شبکه‌ها حمله می‌کنن رو یادبگیرین و مطمئنا راحت کشف خواهید کرد که علیه هر متد باید چه کاری انجام بشه.
  • Compliance and Auditing: برای اینکار باید در مورد تکنولوژی‌های پایه‌ای و بیزنس مدل‌ها آگاهی کسب کنین. افرادی که در این سمت هستن، بیزنس و امنیت را درک می کنن و مطمئن می‌شون که کارکرد بیزنس بدون صدمه زدن به توان خلاقیت و سرعت، امن می‌شه. خوبه در مورد کسب و کارها بخوانید و با مدیرعامل‌ها و طراحان کسب و کار حرف بزنید و درک واقعی از جهان داشته باشین. در مورد شرکت‌های بزرگ تحقیق کنین و به مواردی که در Center for Internet Security به آن‌ها اشاره شده نگاه کنین. همچنین قواعدی مثل HIPAA، PCI-DDS، DISA STIG و ایزو ۲۷۰۰۱ و SOC2 رو بخوانید و فراموش نکنین که قراره سازمان بدون صدمه زدن به قابلیت‌ها و کارکردهاش‌، امن می‌شه.
  • رمزنگاری/تحلیل رمز: اگر می‌خواهید در این حوزه کار کنید خوبه در زمینه‌های ریاضی و رمزنگاری، تحصیلات آکادمیک داشته باشین و منابع علمی را دنبال کنین. یک رمزنگار ممکنه تو دانشگاه تدریس کنه یا روی الگوریتم ها کار کنه ولی کمتر شرکتی معمولی هست که یک رمزنگار استخدام کنه.
  • مشاور امنیت: کسی که به عنوان مشاور امنیت کار می‌کند، لازم است دانشی گسترده و درک خوبی از محیط‌های کاری و ساز و کار شرکت‌ها داشته باشه. برای این شغل نیاز دارین دانشی به روز از تکنولوژی‌های مورد استفاده شرکت ها و استانداردهای مورد استفاده آن‌ها داشته باشین و با Best Practiceها آشنا بشین. همچنین باید در مورد قوانین محدود کننده و نیازمندی‌های بالا دستی هم آگاه باشین تا بتونین بهترین مشاوره رو به مشتریانتون بدین. اینجا انتظار می ره شما با افق دید بسیار گسترده‌ و آگاهتون، نقاط مورد نیاز برای تقویت امنیت شرکت‌ها و در عین حال حفظ کارایی اونها و سازگاری‌‌شون با قوانین رو پیشنهاد بدین.
  • محقق آسیب‌پذیری‌ها:‌ این شغل به طور خاص نیاز داره که شما حداقل توی یک حوزه بسیار باسواد و با تجربه باشین و حداقل یک زبون برنامه نویسی، فریم ورک یا سیستم عامل رو به خوبی بدونین. بعد با این دانش روی بخش کوچیکی از یک محصول یا شرکت تمرکز می‌کنین و سعی می‌کنین مشکلاتش رو پیدا کنین. مثلا ممکنه شما در سی یا اسمبلی بهترین باشین و با سواد و دانش کامل روی یک شکل از پروتکل، بیاین و روی شیوه کار یک کتابخونه ارتباطی تمرکز کنین و اشکالاتش رو کشف کنین.
  • متخصص امنیت نرم‌افزار: معمولا مهندسان و معماران با تجربه نرم‌افزار بعد از مدتی به متخصصان امنیت هم تبدیل می‌شوند. باید حداقل در یک استک نرم افزاری متخصص باشید و بعد دانش امنیتی خود را برای امن‌تر کردن یک برنامه در آن استک متمرکز کنید. شاید هم وظیفه شما در این شغل، بهتر شدن امنیت کل یک سازمان یا پاسخ دادن به نیازهای امنیتی بقیه کارمندان و برنامه نویسان باشد.

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

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

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

اگر شما هم چیزی دارین که به نظرتون خوبه به مطلب اضافه بشه، خوشحال می شم در کامنت ها بگین تا بعدا به اصل مطلب اضافه کنم.

مرتبط:
چگونه هکر شویم، ترجمه فارسی از یک هکر واقعی یعنی اریک ریموند

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

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

شروع ایده اصلی

در مورد پایتون کتاب و راهنما خیلی خیلی زیاده. اگر با چیزهایی مثل کتاب های خوندنی راحتتر هستین به نظرم «یاد گرفتن پایتون به روش سخت» منبع کاملا خوبیه؛ بخصوص بخش های آزاد و آنلاینش برای یادگیری اولیه کاملا کافیه. اگر اهل ویدئو باشین و متن و تمرین حل کردن با استاد هم دوره یادگیری برنامه نویسی با پایتون یا ترجمه ما ازش در گوتو کلس به اسم دوره یادگیری فارسی برنامه نویسی با پایتون گوتوکلس یا آموزش مقدماتی پایتون مکتبخونه و آموزش پیشرفته پایتون مکتبخونه گزینه‌های خوبی هستن. اگر زبان بلدین منطقا انگلیسی خوندن بهتره. یادتون باشه در این بخش دارین خیلی مقدماتی درکی از یک زبان برنامه نویسی و شکلش پیدا می کنین. لازم نیست مته به خشخاش بذارین و لازم هم نیست برنامه نویس بزرگی بشین. نکته اینه که با مفهوم برنامه نویسی آشنا بشین و دستورزبان و مفاهیم پایه ای پایتون رو درک کنین؛ که بسیار هم ساده هستن!

در این مرحله اگر از یک زبان برنامه نویسی دیگه میاین و در حال حاضر زبون خودتون رو بلدین، پیشنهاد می کنم به شکل عمومی دنبال python tutorial بگردین و چند تا رو باز کنین و اونی که دوست دارین رو کامل بخونین. اینجوری خیلی زود سینتکس جذاب پایتون رو یاد می گیرین و می تونین برین مرحله بعدی.

نکته: بعضی ها در اولین برخورد با پایتون با یک سورپریز بزرگ روبرو می شن: پایتون از { و } برای مشخص کردن بلوک ها استفاده نمی کنه و به راحتی از اسپیس یا تب برای اینکار کمک میگیره. گفته می شه اولین شروع هر کس که از زبان دیگه اومده به پایتون، با یک فرار همراهه و بار دوم احوالپرسی از پایتون است که عاشق این زبون ساده و کم ادعا می شه (:

پنج نکته برای دوری

جان سونمز پنج نکته رو می گه که باید ازش دوری کنین و یکی از اصلی ترین مراجع این مطلب هم اونو تکرار می کنه و من کی باشم که تکرارشون نکنم؟

  1. کتاب ها رو از اول تا آخر نخونین. در شروع کتاب ها رو از اول تا آخر نخونین. ما بخش کمی از کتاب ها رو یادمون می مونه و فقط کتاب خوندن بخش زیادی از انرژی شما رو می گیره. کتاب مال وقتی است که شما موضوعات رو بلدین و می خواین توش عمیق بشین.
  2. بدون برنامه تو بحث شیرجه نزنین. آدم ها رو به دلایل مختلف جو می گیره. یکهو می خوان خدای چیزی بشن و یک عالمه کتاب دانلود می کنن و شایدم دو تا ادیتور برنامه نویسی و عضو یکسری کانال و فروم و میلینگ لیست می شن و هی چیز می خونن و فیلم می‌بینن. این اشتیاق معمولا به همین سرعت هم فروکش می‌کنه. بدونین برای چی وارد بحث شدین و می خواین به کجا برسین و می خواین باهاش چیکار کنین.
  3. حوزه خودتون رو مشخص کنین. دنیا وسیعه! حتی برنامه نویسی هم خیلی وسیعه و شاید براتون جالب باشه که حتی پایتون هم خیلی وسیعه! بهتره شما بدونین در چه حوزه ای می خواین کار کنین و از اون شروع به یادگیری کنین. اگر می خواین اپ تحت وب درست کنین لازم نیست با numpy شروع کنین و اگر می خواین محاسبات انجام بدین شروع کردن یا اصرار روی scikit اشتباهه. از یک جا شروع کنین و توش پیش برین.
  4. دو (یا بیشتر!) چیز رو همزمان یاد نگیرین. این اشتباه با مورد ۲ شباهت‌هایی داره. آدم ها یکهو می خوان «هکر» بشن و شروع می کنن شبکه و سیستم عامل و برنامه نویسی و انگلیسی و آلمانی و روسی و نقد فیلم و ادبیات کلاسیک رو با هم خوندن و یاد گرفتن. از یک جا شروع کنین و وقتی در حد معقولی پیش رفتین برین سراغ چیز بعدی. این مساله حتی داخل پایتون هم صدق می کنه. اگر دارین جنگو یاد می گیرین نیازی نیست همزمان شروع به خوندن فلسک هم بکنین. یکی رو پیش برین در حد معقول و بعد فرصت برای بعدی هست.
  5. بدون تجربه کردن پیش نرین. بعضی چیزها برای آدم ها لذت بخشه. من از دیدن فیلم بازی شطرنج خیلی خوشم می یاد و در نتیجه شش ماه فیلم دیدم بدون اینکه بازی کنم؛ هیچ پیشرفتی هم نداشتم. حتما حین تئوری با عمل هم برخورد داشته باشین.

شروع عملی پایتون

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

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

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

یک پروزه عملی بردارین

حالا باید تا حدی بدونین که کجا ایستادین و دنبال چی هستین. اگر دنبال وب هستین یک پروژه عملی برای خودتون تعریف کنین و با چیزی مثل جنگو شروعش کنین. درگیر اسم و اینها نباشین. پروژه رو تعریف و شروع کنین. شاید خیلی زود پاکش کردین! اصلا مهم نیست. مثلا یک سیستم رای گیری آنلاین. یا سیستم حسابداری شخصی. یا دفترچه تلفن دوستاتون. یا فهرست کتاب ها و اینکه چی خوندین و چی قرض دادین یا هر چیز دیگه یا یه سیستم وبلاگ شخصی یا صورت غذاهایی که پختین و روش پختش. شایدم یک برنامه مخصوص تنظیم کردن قرار ملاقات. موضوع خیلی مهم نیست. مهم اینه که خیلی زود چیزهایی که یاد میگیرین به شکل عملی در یک جایی استفاده بشه. اگر با جنگو کار می کنین کتاب Two Scoops of Django توصیه می‌شه. من خودم اخیرا به توصیه خودتون اینو خوندم و خوب بود برام. در این مرحله چیزهایی که یاد می گیرین رو نسبتا عمیق کنین. حوزه شما مشخص شده و باید حرفه ای تر بشین توش. اگر مثلا یادگیری ماشینی رو برداشتین یک مساله واقعی تعریف کنین و سعی کنین قدم به قدم حلش کنین. شاید مثلا تشخیص سگ از گربه قدم اول باشه و تشخیص طبقه بندی یک وبلاگ قدم دوم. شایدم علاقمند به یک اپلیکیشن دسکتاپ باشین. بازم امکانش هست. مهم اینه که حوزه خودتون رو کشف کنین و بدونین که در کدوم خط دارین پیش می رین.

در این مرحله مهمه که مثل یک برنامه نویس پایتون فکر کنین. به ذن پایتون برگردین و پپ ۸ که شیوه نامه نوشتن به پایتون است رو بخونین و سعی کنین شبیه یک پایتون نویس حرفه ای باشین – چه تو دستخط چه شیوه تفکر. گفته می شه زبانی که تفکر آدم رو عوض نکنه، زبان مفیدی نیست. به جای تلاش برای بزرگ‌تر کردن برنامه‌تون، رو این تمرکز کنین که پایتونی بنویسینش و زبان رو بفهمین. در این مرحله حتی شاید با بعضی کتابخونه ها آشنا بشین و مثلا خوبه مطمئن بشین که برای برنامه خودتون یونیت تست نوشتین. در هیمن قدم شما ممکنه از خیلی «حرفه ای‌»ها جلو بیافتین.

حالا عمیق بشین

شما درک از زبان دارین و می تونین باهاش کار کنین درسته؟ حالا وقتشه که حرفه ای بشین و بهتر از هر کس زبان رو درک کنین. حداقل بهتر از ۸۰٪ آدم‌های دیگه. این بخش‌ها مهمترین اجزای داکیومنتهای رسمی پایتون هستن برای خونده شدن توسط کسی که می خواد زبان رو به تسخیر خودش در بیاره: 1, 2, 3, 4, 5, 6.1, 6.2, 26.4 و 27.3.

یک تمرین فوق العاده برای بهتر کردن دانش جدید و تثبیت کردنش اینه که کدهای قبلی رو ریفکتور کنین؛ بازنویسی کد برای بهتر کردنش بدون تغییر در خروجی ها.

پیشرفت کنین

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

  • کتاب Fluent Python
  • کتاب Effective Python

در صورتی که می خواین با نوشتن برنامه خودتون رو محک بزنین، به این مطلب محمد فاضلی نگاهی بندازین

نکته پایانی

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

منابعی برای نگاه کردن

کتاب‌های مقدماتی برای شروع به مطالعه جامعه شناسی

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

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

چرا جامعه شناسی

جامعه شناسی علم خوبی برای خوندن است. اولا تلاشی مستمر برای جواب دادن به سوال های کلی در مورد جهان در عین حال دارای روش‌های علمی تجربی و فلسفه. همچنین جذابیت خاص جامعه شناسی در ایران – حداقل سال ۸۱ که من رفتم سراغش – این بود که در فوق لیسانس از اسلامی شدن نسبتا در امان مونده بود. دو واحد خنده دار با عنوان «جامعه شناسان مسلمان» داشتیم که به کلیت رشته صدمه خاصی نمی‌زد.

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

جامعه شناس چیا می دونه؟

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

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

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

اما برای هر یک از این دو حوزه بهترین کتاب‌ها برای شروع چیا هستن؟

منبع مطالعه حوزه‌های جامعه شناسی

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

gidenz

جامعه شناسی
نوشته آنتونی گیدز
ترجمه منوچهر صبوری
نشر نی

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

منابع نظریات جامعه شناسی

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

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

برای مطالعه نظریات کلاسیک یکی از بهترین گزینه‌ها این کتاب است:

solasi

زندگی و اندیشه بزرگان جامعه شناسی
نوشته لوییس کوزر
ترجمه محسن ثلاثی

این کتاب از کنت تا مانهایم رو بررسی می‌کنه و بعد از اون فرمون مطالعه رو می‌دین دست این کتاب:

1

نظریه جامعه شناسی در دوران معاصر
نوشته جورج ریتزر
نشر: علمی (1394)

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

ادامه راه

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

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

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

بازم هستین؟! آفرین که جدی گرفتین.. حالا که جدی هستین اینم مهمه: معمولا کسانی که با کلمات عجیب و قلمبه سلمبه حرف می زنین کسانی هستن که … اونجوری نباشین (: در واقع قشنگی/جذابیت/اعجاب حرف شما به عنوان یک جامعه شناس نباید به پیچیدگی ظاهری اش باشه بلکه باید به انسجام خوب درونی و اتصال محکمش به جهان بیرون باشه.

چطوری لینوکس رو شروع کنیم و توش پیش بریم

از سری: راهنمای شروع

auto-startup-linux-644x250

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

آشنایی اولیه

قدم صفر اینه که بدونیم لینوکس چیه، از کجا اومده و به کجا می ره و چرا باید یادش گرفت. همینطور باید دید داشته باشیم در مورد مطالب مرتبط با این دنیا. در این لحظه پیشنهاد من اینها هستن:

در این مرحله شما مهمه که بدونین چرا دارین لینوکس رو یاد میگیرین. همینجا می تونم بگم که اگر فکر می کنین قراره یاد گرفتن لینوکس شما رو با کلاس کنه یا بتونین باهاش همه چیز رو هک کنین یا باعث بشه دیگه کلا با کامپیوترتون مشکلی نداشته باشین، بهتره کلا بیخیال یاد گرفتن بشین (: لینوکس هم یک سیستم عامله و مثل همه نرم افزارها اشکالاتی داره، شغل هاش گاهی خسته کننده است، گاهی شما رو محدود می کنه و هیچ جای دنیا هم نیست که با یک دانش ثابت بشه بهش نفوذ کرد (: اگر دنبال این چیزها نیستین و مثلا می خواین مدیر سیستم بشین یا کنجکاو هستین مثل یک شمشیرباز بتونین با اسلحه تون کار کنین یا برای پروژه به لینوکس احتیاج دارین، با ما باشین!

کمی ور رفتن با لینوکس

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

مجموعه ویدئویی لینوکس دسکتاپ برای آدم های شاد می‌تونه کمک خوبی برای شما در این مرحله باشه که نصب اول و دوال بوت کردن و غیره رو به شما نشون می ده.

مشارکت در جامعه

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

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

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

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

مدیریت سیستم مقدماتی

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

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

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

پیش‌تر رفتن از الپیک ۱

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

یک ایده هم انجام پروژه‌هایی مثل اینها است:

  • راه اندازی یک وب سرور خونگی برای خودتون (سطح بعدی:‌بشه از اینترنت هم بهش وصل شد)
  • ساخت سرتیفیکت های ssl
  • درست کردن یک فایل سرور که همه بتونن باهاش فایل جابجا کنن
  • درک کردن کامل selinux
  • نصب پروژه های بزرگ مثل owncloud، docker، دیتابیس‌های جدید مثل مونگو، هدوپ، … و کار کردن با اونها برای آزمایش اینکه چطوری کار می کنن و نصب می شن
  • نصب لینوکس روی دیوایس های غیر پی سی کلاسیک که ساده ترینش چیزهایی مثل رزبری پای ها هستن و پیچیده‌تر ها مثل گوشی‌ها و تبلت‌ها
  • کار با لینوکس های خاص منظوره مثل clearOS

در چنین مرحله ای لازمه شما درک خوبی از شبکه داشته باشین، منطقا باید در حد +Network بلد باشین و اگر می خواین واقعا فرق کنین CCNA خونده باشین.

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

قدم‌های بعدی

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

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


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