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

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

در میان شیب

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

ایجاد یک خزنده ساده با Nodejs برای دانلود تلفظ صحیح کلمات از لانگمن

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

فرار از جهنم Callback با تبدیل Callback به Promise

برای کار با توابع Async در جاوااسکریپت، از کالبک (Callback) استفاده میشه. با اینکه این راه در خیلی از موارد ممکنه مشکل رو حل کنه، زمانی که به انجام چند عمل Async باهم و در ادامه هم میرسیم، استفاده از Callback ما رو درگیر مشکلی به اسم جهنم Callback Callback Hell میکنه. برای حل این مشکل خوبه که بدونیم میشه Callback ها رو تبدیل به Promise کرد.

جدال با پس زمینه‌ی زرد ، یا چطور رنگ پس‌زمینهٔ زرد کروم برای ورودی‌های autocomplete را از بین ببریم

مدت زیادی می‌گذره از زمانی‌که گوگل کروم این قابلیت رو اضافه کرد. منظورم هایلایت کردن ورودی‌هایی هست که کاربر از قابلیت autocomplete مرورگر استفاده می‌کنه.

هماهنگ سازی مخزن Fork شده با مخزن اصلی

هر زمان که بخواین یه مخزن رو توی گیتهاب برای خودتون ذخیره کنین یا بخواین بهش یه Contribution داشته باشید، باید در مرحله اول اون مخزن رو Fork کنین. ولی اگر صاحب مخزن اصلی اونو آپدیت کنه چی؟ چطور باید مخزن Fork شده تون رو باهاش هماهنگ و آپدیت نگه دارین؟ (مخزن = Repository)

متد کاربردی Object.select

همین چند لحظه پیش یکی از دوستانم در توییتر MValipour ایده ای رو باهام درمیون گذاشت مبنی بر اضافه کردن متدی به اسم Object.select که به نظرم خیلی کاربردی و جالب بود و تصمیم گرفتم تا تنور داغه تبدیلش کنم به یه مطلب توی بلاگ :p

Proxy و کاربردهاش در جاوااسکریپت

یکی از فیچرهایی که در نسخه ES6 به جاوااسکریپت اضافه شد، کانستراکتور Proxy هست. توی این مطلب باهم در مورد Proxy بیشتر یاد میگیریم وکاربردهایی که میتونه در برنامه نویسی روزانه جاوااسکریپتمون داشته باشه رو باهم بررسی میکنیم.

نگه‌داری متغیرها توی پروژه‌های بزرگ در جاواسکریپت

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

گیت Rebase به زبان ساده

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

مینیفای کردن HTML و CSS در جکیل

برای بالا بردن سرعت لود وب سایت ها از تکنیک مینیفای کردن محتوای وب سایت استفاده میشه. مینیفای کردن محتوا به این معنیه که خروجی HTML وب سایت، فایل های CSS و JS ای که در سورس وب سایت قرار دارن رو با حذف فاصله های اضافی (whitespace) و سایر فنون (نمیخوام وارد جزییاتش بشم چون از حوصله این مطلب خارجه :دی) به کمترین حجم ممکنش میرسونن.