سال بدون شلوار: تیم‌ها و چابکی

اینم یه تجربه پراکنده دیگه!

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

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

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

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

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

انشالا در آینده نزدیک بیشتر از این کتاب می‌نویسم.
همین!

سال بدون شلوار: معرفی

اینم یه تجربه پراکنده دیگه!

اول از همه باید اعتراف کنم که برخلاف علاقه‌ی درونیم خیلی کم کتاب می‌خونم و این من رو خجالت زده می‌کنه. الان یه مدت هست که کتاب the year without pants یا «سال بدون شلوار»، که در مورد تجربه یکی از مدیران میانی شرکت اتوماتیک هست میخونم و دوست دارم اونرو معرفی کنم. این شرکت توسعه دهنده اصلی wordpress هست. اول از همه باید بگم که این کتاب خیلی خوب هست و خوندنش رو به همه اونهایی که دوست دارند بدونن حال و هوای دور کاری و توسعه محصول چطوریه پیشنهاد می‌کنم.

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

فعلا همین!

کارایی خود را افزایش دهید

اینم یه تجربه پراکنده دیگه!

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

علائم خطر را بشناسید

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

حالا درمان این مشکل چیست؟ راه حل هنسلمن برای این کار انجام کار «موثر» در قبال کار «بهینه» است.

تفاوت موثر با بهینه را درک کنید

موثر بودن هدف گرایی است. یعنی انجام دادن یک کار، یعنی انتخاب هدف درست و انجام آن.

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

پس می‌توان گفت که موثر بودن انتخاب کار درست برای انجام و بهینه بودن انجام یک کار به درستی است.

«کار» را تعریف کنید

یادمان باشد که میخواهیم موثر باشیم هنسلمن میگوید که سه دسته کار را بشناسیم:

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

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

کار را انجام دهید، رها کنید، به دیگری بسپارید یا به تعویق بیاندازید

هنسلمن روی روش دیوید آلن با نام GTD تاکید میکند که
– کار را انجام دهید
– کار را رها کنید
– کار را به دیگری بسپارید
– کار را به تعویق بیاندزید

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

کار را رها کنید

ممکنه رها کردن کار به نظر غیر مسئولانه برسد اما این باعث می‌شود که بتوانید روی کارهای خودتان تمرکز بیشتری داشته باشید.

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

برای اینکه بدانید چه کاری را انجام دهید و چه کاری را رها کنید به نمودار بالا که براساس اهمیت و اورژانسی بودن موضوع نگاهی بیاندازید
– موضوعات مهم و اورژانس را انجام دهید
– موضوعات بی اهمیت و زماندار را انجام ندهید
– مضوعات اورژانسی غیر مهم را به دیگران بسپارید
– موضوعات مهم غیر اورژانسی را زمانبندی کنید

اما یادتان باشد که ما عادت داریم کارها را غیر واقعی اورژانسی در نظر بگیریم.

مشکل ایمیلهایتان را حل کنید

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

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

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

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

کلیکهایتان را ذخیره کنید

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

صندوق زندگیتان را مرتب کنید

فرض کنید که گاراژ شما پر از افراد زخمی است اولین و مهمترین کاری که باید انجام دهید مرتب کردن آنهاست که بدانید هریک از آنها زنده است یا مرده و اینکه آیا به درمان نیاز دارند یا نه. در زندگی امروز اطلاعات زیاد و متناوبی به زندگی آدم وارد می‌شود. شما باید انتخاب کنید که کدام جریان اطلاعات برای شما مهم است و کدام بی اهمیت به عنوان مثال لیست هنسلمن شامل موارد زیر است:
– تلفن
– ایمیل کاری
* از روسا
* و To ها بجای CC ها
– ایمیل شخصی
– توییتر
– گوگل ریدر

از دست بار روانی خود را خلاص کنید

نگذارید چیزی برای شما بار روانی ایجاد کند به عنوان مثال اگه تمام قسمتهای سریال محبوبتان را دانلود کرده اید و قرار است آنرا تماشا کنید. اگر نتوانید این کار را انجام دهید تنها برای خود بار روانی ایجاد کرده اید. یعنی به جای لذت بردن خود را اذیت کرده اید. سعی کنید از هر آنچه در زندگی در وضعیت «منتظر» قرار دارد خلاص شوید.

روز پایانی هفته را برای بررسی کنار بگذارید

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

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

از تکنیک پومودورو استفاده کنید

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

مشغله زیاد نوعی تنبلی است

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

با حقیقت روبرو شوید: انجام همزمان چند کار افسانه است

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

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

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

هنسلمن لیستی از کارهایی که میتواند بصورت همزمان ارائه دهد نام می‌برد
– راه رفتن و آدامس جویدن
– ورزش کردن هنگامی که به پادکست گوش می‌دهید
– رانندگی و ارسال ایمیل با صدا
– رفت و آمد و خواندن
– رفت و آمد و فکر کردن
– استفاده از زمان انتظار و بیکاری

بی‌نظمی‌های ذهنیتان را پاک کنید

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

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

مشق

او از دیگران می‌خواهد که کارهای زیر را انجام دهند

  1. منابع زندگیشان را بررسی و مرتب کنند
  2. برای زمان‌های کاری برنامه ریزی کنند
  3. مواردی که باعث حواس پرتی می‌شوند را خاموش کنند
  4. شما چگونه صندوق زندگیتان را مرتب می‌کنید؟ آیا شما موثر این کار را می‌کنید؟ آیا شما این کار را بهینه انجام می‌دهید؟
  5. از ابزارهایی که به درد شما میخورد استفاده کنید

کسی ممکن است از ابزارهای پیچیده مدیریت زمان استفاده کند در حالی که دیگری تنها به یک لیست todo نیاز دارد.

پیش‌نمونه‌سازی :آغاز و انجام ایده CMS as a Service

اینم یه تجربه پراکنده دیگه!

خب اگه تاحالا خواننده وبلاگ من بوده باشید میدونید که من به خیلی چیزهای متفاوتی علاقه مندم و همیشه بین موارد مرتبط به عملیات(کارهای مرتبط با شبکه و زیرساخت و سرور و نگهداری و …) و توسعه چرخ میزنم. یکی دیگه از چیزهایی بهش واقعا علاقه‌مندم و حداقل در موردش میخونم و سعی میکنم بنویسم کارایی و افزایش اون برای استفاده بهینه از منابع و این چیزاست. از تلاقی این سه تا ایده و خب طبق معمول رونویسی از محصولات خارجی به این نتیجه رسیدم که یه سیستم cms-as-a-service درست کنم.

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

  • خب من کلا از یک سیستم مجازی سازی سبک برای اینکار در محیط لینوکس استفاده کرده بودم. خب پیاده‌سازی‌های مختلفی برای اینکار در لینوکس وجود داره که انتخاب من docker بود چون خیلی ترکونده بود!
  • به عنوان loadbalancer/router من از یه nginx استفاده کردم. خب چون دیدم اولا سریع و کم مصرفه. دوما اینکه میشه با استفاده از زبان lua کلی توسعه روش داد در این حد که بشه waf (مثلا)
  • یه image برای کارهای متفاوتی که میخواستم ساختم
    • با استفاده از nginx، php-fpm و تنظیمات دروپال تونستم یه image برای دروپال بسازم
    • با استفاده از apache و mod-php دوتا image مجزا برای piwik و wordpress ساختم
    • با استفاده از nginx هم سایتهای ایستا رو سرویس میدادم
    • یه image هم ساختم که فقط توش ابزارهای مثل drush و این چیزا بود که بروزرسانی و backup رو سریع‌تر کنه.
  • از fig که اخیرا شده docker composer هم برای یه شبه orchestrator استفاده میکردم.
  • دوست داشتم از redis به عنوان cache توی loadbalancer/router و همچنین app container استفاده کنم که عمر سیستم کفاف نداد
  • میخواستم با استفاده از service recovery بصورت اتوماتیک loadbalancer/router رو کانفیگ کنم
  • دلم میخواست که بتونم این سیستم رو تبدیل به یه سیستم multi-host کنم.
  • خیلی چیزهای دیگه هم دلم میخواست که در صورت درست بودن ایده قطعا انجام میشد.

این سیستم رو من حدودا یک سال هست که بصورت عملیاتی اجرا میکنم(همین الان هم ۴ یا ۶ تا سایت روشه) اما تصمیم گرفتم به دلایل زیر دیگه توسعه ندم و سایتها رو هم از روش بردارم:

  • خب اولین و مهمترین دلیل خاموش شدنش اینه که من فکر میکردم میتونم از طریق سینه به سینه و دوستانه این سیستم رو معرفی کنم و حداقل ۲۰ تا ۳۰ سایت روش داشته باشم اما نشد! یعنی عدم وجود مشتری کافی یا عدم توانایی من در بازاریابی که نتیجه نهاییش یکیه.
  • دومین دلیلش اینه که نگهداری این سیستم کلی زمان و انرژی میخواست و میخواد که من داشتم ولی دیگه ندارم. حتی با توجه به جستجوهایی هم که انجام دادم نتونستم کسی رو پیدا کنم که حاضر باشه سیستم رو نگهداری کنه و پول براش بگیره.
  • دلیل بعدی اینه که یه ویژگی خیلی خفنی که توی این سیستم وجود نداشت email بود که با توجه به سطح دانش من از کارهای مدیریت سیستم راه‌اندازی برام توی این مدت غیر ممکن بود.
  • کسی به پست‌های مرتبط با این زمینه علاقه مندی خاصی(کامنت یا اشتراک گذاری یا سوال پرسیدن بصورت خصوصی) نشون نداد.
  • توی شرکت قبلی که کار میکردم تمام سایت‌های مبتنی بر دروپالشون به دلیل عدم تواناییشون برای بروزرسانی و نگهداری دروپال(کمبود نیروی انسانی نه توان فنی) دچار مشکل میشد. حتی اونها هم علاقه مندی به استفاده از این سیستم نشون ندادن.
  • با چندتا از شرکت‌هایی که قاعدتا میشناختمشون که توی حوزه وب فعالیت میکردن از دروپال یا وردپرس استفاده میکردن و چندتا از مدیران سیستمی که میشناختم پیشنهاد دادم که از این سیستم استفاده کنند اما اونها ترجیح میدادند از سیستم سنی «هاست» استفاده کنند یا خودشون سرورشون رو نگهداری کنند.

جمع بندی اینکه :

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

پ.ن. میتونید سورس کاری که من انجام دادم رو اینجا پیدا کنید اما یادتون باشه این سورس اونقدرها که باید مرتب و کامل نیست چون فقط یک پیش‌نمونه است.

مشکل تولید محتوا روی موبایل و تبلت

اینم یه تجربه پراکنده دیگه!

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

دلایل عدم تولید محتوا

خب دلایل اینکه از نظر من واقعا نمی‌شه محتوا تولید کرد اینهاست:

  • نبود کیبرد! مهمترین دلیل نداشتن یک کیبرد خوب هست که شما با دردسر کم بتونی مستندات رو تولید کنی.
  • اندازه کوچک صفحه! البته این در مورد تبلت‌ها خیلی صدق نمی‌کنه اما در مورد موبایلهای هوشمند به شدت صادقه
  • نبود برنامه تولید محتوا! محتواهای متنی معمولا به فرمت‌هایی تولید می‌شوند که اکثرا برای ما در دسترس نیستند، مثلا به کمک MS Word یا MS Powerpoint درست میشن. اما نرم‌افزارهای موبایل این فرمت‌ها به شدت ابتدایی بوده و کارایی خاصی ندارند. همچنین نرم‌افزارهای مشابه هم اکثرا نیاز به اتصال به اینترنت و داشتن اینترنت سریع دارند که خیلی قابل استفاده نیستند.

زمان نیاز به تولید محتوا

خب بعد از بررسی اینکه چرا نمی‌شه از موبایل و تبلت استفاده کرد برم سراغ اینکه چه زمانی اگه راه‌حلی برای این موضوع باشه میشه از این راه‌حل استفاده کرد:

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

راه حل پیشنهادی من

من چندتا راه حل دارم! اولا اینکه فرمت تولید محتوا رو باید از فرمت‌های خاص به متن تبدیلش کرد و فعلا هم فرمت مورد علاقه من markdown هست.

  • ویرایشگرهای متنی خوبی برای اندروید و iOS که توان ویرایش markdown رو دارن وجود داره
  • من مشکل صفحه کوچک موبایل رو وقتی که زمان استراحتم باشه با استفاده از تکنولوژی Screen Mirroring که روی همه موبایلهای امروزی هست حل میکنم و صفحه موبایل رو میندازم روی تلوزیون.
  • مشکل نبود کیبرد رو هم من به وسیله یکی از راه‌حل‌های زیر حل می‌کنم
    • استفاده از OTG و یه کیبرد موس بیسیم!
    • استفاده از برنامه‌هایی مثل remote keyboard یا wifi keyboard. این راه حل مورد علاقم نیست چون باید از لپ تاپ یا کامپیوتر به عنوان کیبرد استفاده کنم که خب اگه میخواستم این کار رو بکنم از اول پای همون مینشستم و محتوا رو تولید می‌کردم.

همین!

همه ایده‌های من: CMS as Service

اینم یه تجربه پراکنده دیگه

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

برم سراغ ایده. چیزاهایی در دنیا وجود داره که در کشور ما به دلایل مختلفی اجرایی نمیشه و کسی هم روش کار نمیکنه. یکی از اون‌ها سرویس‌های زیرساختی هست که بصورت اتوماتیک ارائه بشه. تنها سیستم‌های زیرساختی اتوماتیکی که وجود داره سیستم‌های خرید هاست هست که اون هم به همت whmcs و cpanel هست که دیگرانی زحمت کشیدن و اون رو اتوماتیک کردن. پس جای خالی فراهم کنندگان IaaS و PaaS حس میشه. از طرف دیگه همیشه علاقه به وجود آوردن سایت سازهای اتوماتیک در بین مهندسین کامپیوتر وجود داشته و داره. یعنی اونها از قبل با زدن سرویس وبلاگ و اخیرا با زدن سایت سازهای متفاوت(مثل لینکسایت ساز کاموا، لینکتکنولوژی ۷۸، لینکسایت سازی کانی وب) سعی کردن خدمات از نوع SaaS ارائه بدن. این خدمات معمولا خدمات خوبی بودن اما کاربر حرفه‌ای که میخواد کار جدی بکنه رو جذب نمی‌کرده. همچنین معمولا سایت‌داران حرفه‌ای میرفتن سراغ خریدن vps و سرور و مدیریت کردن زیرساخت خودشون. اما من برخی از دوستانم رو میشناسم که توی مدیریت زیرساختشون همیشه مشکل دارن و بهشون حمله میشه و کلی اتفاق بد دیگه براشون میفته. پس اگه کسی باشه که بتونه سایت داران حرفه‌ای خدمتی ارائه بده و بهشون آزادی عمل بده که بتونن هر کاری میخوان انجام بدن و توی حجم بازدید بالا دوام بیارن و کمر خم نکنن اونها رو خوشحال میکنه.

پس اگه من بخوام تیتر وار بگم که چه کاری میخوام انجام بدم و به چه دلیلی این کار خوبه اینهاست:

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

بزم سراغ کاری که میخوام انجام بدم:

  • ابزار اصلی مورد استفاده: با توجه به آنچه که در شرکت‌های مشابه در دنیا انجام شده، استفاده از مجازی سازهای سبک یا همان مجازی سازی در سطح سیستم عام یا همان container ها رمز موفقیت این تجربه‌هاست. برای آشنایی بیشتر با این تکنولوژی‌ها به اینجا و اینجا مراجعه کنید. لیست این تکنولوژی‌ها که مستندات و منابع کافی در مورد آنها در اختیار است به شرح زیر است
  • هدف نهایی
    • اینکه کاربران بصورت اتوماتیک بتوانند سایت بسازند
    • نسخه‌های سایت آنها در git یا سیستم مشابه مدیریت نسخه‌های ذخیره شود
    • هر سایت دو سایت کمکی برای وضعیت stage و dev داشته باشد که از نظر ساختار شبیه سایت نهایی باشد
    • هر سایت بتواند در صورت نیاز افزایش کارایی پیدا کرده (با اجرا شدن کانتینرهای دیگر)
    • هزینه سرویس بصورت ساعتی محاسبه شود
    • به فایل‌های سایت(عکسهای آپلود شده و سایر مستندات) دسترسی معمول مثل ftp وجود داشته باشد
    • سایت بصورت on demand فعال و غیر فعال شوند تا در هزینه‌ها صرفه جویی شود.
  • مراحل اجرا
    • فاز اول(انجام شده):
      • استفاده از docker به عنوان تکنولوژی
      • استفاده از fig به عنوان سیستمی که سایت‌ها و کانتینرها را سر هم میکند
      • ایجاد یک image خاص منظوره برای cms ها استفاده شده. علی الحساب برای drupal و WordPress
      • استفاده از git برای نگهداری نسخه‌های مختلف سورس سایت‌ها
    •  فاز دوم:
      • ایجاد یک سیستم توزیع بار برای امکان افزایش کارایی
      • ایجاد یک سیستم برای share کردن فایلهای سایت بین کانتینرهای مختلف
      • رفع اشکال سیستم
    • فاز بینهایت
      • پیاده سازی service discovery در سیستم توزیع بار
      • پیاده سازی کانتینرهای on demand
      • پیاده سازی پرتال مشتریان برای انجام این عملیات بصورت اتوماتیک
  • چالش‌های کار
    • انتخاب تکنولوژی کانتینرها
    • سخت بودن service discovery و on demand بودن سیستمها
    • سخت بودن بازاریابی و جلب اعتماد سایت‌داران بزرگ
    • نیاز به سرمایه قابل توجه انسانی و مالی

نمیدونم چیزی از قلم افتاده یا نه ولی فعلا همین!

کتاب نویسی دیجیتال: چیزاهایی که من جمع آوری کرده‌ام

اینم یه تجربه پراکنده دیگه!

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

  • اول اینکه راحت بتونه کتاب رو بنویسه و خیلی درگیر فرمت و این چیزا نباشه
  • بتونه نسخه‌های مختلف کتاب رو بصورت همزمان و با کمترین زمان تولید کنه یعنی
    • نسخه وب  که همون html باشه
    • نسخه دسکتاپ که pdf بااشه
    • نسخه موبایل که یکی از فرمت‌های epub, fb2, mobi باشه.
  • نوشتن کتاب راحت باشه و نیاز به نرم افزار خاصی برای نوشتن نباشه که بشه روی تبلت، موبایل یا لپ تاپ با تمام سیستم عامل‌ها نوشت. این باعث میشه که بشه کتاب رو به راحتی در وقت‌های آزاد نوشت یا ترجمه کرد.
  • سایت کتاب رو بشه تولید کرد.
  • تاریخچه تغییر و تحول کتاب  رو بشه به خوبی مدیریت کرد.

خب مجموعه خام چیزایی که من پیدا کردم توی منابع اومده و خلاصه اونها اینه

  • استفاده از markdown و pandoc: این میشه همون پستی که نوشتم. تنها ایرادی که به این روش گرفته شده اینه که برای نوشتن متن‌های فنی و علمی که فرمول و کد زیاد دارن خوب نیست
  • راه حل‌های متن بازی مثل gitbook و softcover مخصوص این کار توسعه پیدا کردن که به نظر خوب میان
  • یه راه حل تجاری که توسط یکی از ناشران بزرگ خارجی درست شده O’Reilly’s Atlas هست که همه نسخه‌های کتاب رو تولید می‌کنه. این نرم‌افزارهای متن باز سعی میکنن ادای این نرم افزار رو در بیارن

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

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

منابع: لینک، لینک، لینک، لینک، لینک، لینک

 

 

 

 

 

 

 

 

استارت آپ و جو پیرامون آن

اینم یه تجربه پراکنده دیگه!

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

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

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

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

همین!

 

دانش T شکل

اینم یه تجربه پراکنده دیگه!

این یه پست کوتاهه. یه چند وقته که یه کتاب در مورد نحوه کار توی شرکت atumattic میخونم که پشت سایت wordpress.com هست. این شرکت کاملا بصورت دور کاری اداره میشه و افراد زمان‌های بسیار کمی کنار هم کار میکنن و اکثرا دور کاری میکنن. مدیریت این شرکت‌ها و کار کردن توشون کاملا متفاوت از کارکردن توی شرکت‌های عادیه پس قوانین مخصوص به خودشون رو دارن که من سعی میکنم در موردش بنویسم.

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

همین!

مجازی‌سازی سبک قسمت دوم

اینم یه تجربه پراکنده دیگه!

همونطور که احتمالا همه میدونید الان بازار containerها یا همون مجازی سازی سبک در دنیا و خب در ایران داغه. من توی یه سری پست سعی میکنم (قسمت اول) که راهی رو که خودم برای درک این موضوع طی کردم رو بنویسم.

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

  • لینوکس
    • Linux-VServer: این تکنولوژی یکی از قدیمی ترین(سال ۲۰۰۱) تکنولوژی‌های مجازی سازی در سطح سیستم عامل هست که نیاز به تغییر کرنل(پچ شدن کردن) برای بوجود آوردن امکان ایزوله کردن منابع سیستم هست. این سیستم متن باز بوده ولی هیچوت تغییراتش به هسته سیستم عامل راه پیدا نکرده
    • Parallels Virtuozzo Containers : این سیستم هم بسیار قدیمی است(سال ۲۰۰۱) و بصورت تجاری توسعه پیدا کرده.
    • OpenVZ: یک محصول متن بازه که اون هم نیاز به پچ کردن کرنل داره و تغییراتش هیچوت به درون هسته لینوکس راه پیدا نکرده. شروع توسعه این ابزار به سال ۲۰۰۵ برمیگرده.
    • ابزارهای مبتنی بر cgroups و namespaces در کرنل لینوکس: این تکنولوژی در سال ۲۰۰۶ توسط مهندسان گوگل شروع شده و به کرنل لینوکس راه پیدا کرده. با توجه به این ویژگی‌ها محصولات متفاوتی تولید شده
      • lmctfy: این ابزار توسط گوگل توسعه پیدا کرده و مورد استفاده قرار گرفته. شروع توسعه این ابزار به سال ۲۰۱۳ برمیگرده.
      • LXC: این ابزار تا اونجایی که من میدونم از دل اوبانتو در اومده و تبدیل به یک ابزار قابل استفاده شده. اما به دلیل مستندات محدود خیلی مورد استفاده قرار نگرفته. شروع توسعه این ابزار به سال ۲۰۰۸ برمیگرده.
      • Docker: سازندگان این ابزار ارائه دهنده سرویس paas بودند که از روند مشابهی برای مدیریت paas خود استفاده می‌کردند و تجربیات خودشون رو در قالب این ابزار ارائه دادند. این ابزار به دلیل سادگی، مستندات خوب و معرفی راه‌حلهای کارا بسیار مقبولیت پیدا کرده. شروع توسعه این ابزار به سال ۲۰۱۳ برمیگرده.
      • libvir lxc: این ابزار هم جزئی از کتابخانه libvirt برای مدیریت تکنولوژی‌های مجازی سازی هست که ابزاری برای مجازی سازی سبک هم ارائه کرده.
  • FreeBSD Jail: در این سیستم عامل از سال ۱۹۹۸ کرنل از ویژگی‌ای به نام jail پشتیبانی میکنه که مجازی سازی سبک رو بوجود میاره. برخلاف لینوکس که چند  ویژگی مجزا کرنل برای مجازی سازی سبک استفاده میشه ویژگی jail در freebsd یک ویژگی یک پارچه برای مدیریت مجازی سازی سبک به حساب میاد ابزارهای سطح بالایی هم برای این مدیریت این ویژگی بوجود اومده که لیست کوتاه اونها در پایین اومده:
  • Solaris Containers: این تکنولوژی در هسته سولاریس از سال ۲۰۰۵ وجود داره و من اطلاع زیادی از اون ندارم
  • sysjail: این تکنولوژی در هسته netbsd و openbsd تا سال ۲۰۰۹ وجود داشته و من اطلاع زیادی از اون ندارم
  • WPARs: یک سیستم خاص منظور برای سیستم عامل AIX هست(سال ۲۰۰۷) و من اطلاع زیادی از اون ندارم
  • HP-UX Containers (SRP): این تکنولوژی مختص HPUX هست(سال ۲۰۰۷) که من باز اطلاع خاصی ازش ندارم
  • Sandboxie: این یه تکنولوژی برای ویندوز هست و من دیدم دوستانی که روی بررسی ویروسها کار میکنن ازش استفاده میکنن.

همونطور که میبیند این سیستم و تکنولوژی‌های و ابزارهای مرتبط با اونها جدید نیستن اما اخیرا دوباره مورد استفاده قرار گرفتن.

همین!