<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سروش ذاکر شبیری</title>
        <link>https://virgool.io/feed/@soroushzsh</link>
        <description>یه برنامه نویس که دوست داره همیشه مطالب جدیدی رو یادبگیره و اونهارو با دیگران به اشتراک بزاره.</description>
        <language>fa</language>
        <pubDate>2026-06-17 06:42:03</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/41830/avatar/LwAIyo.jpeg?height=120&amp;width=120</url>
            <title>سروش ذاکر شبیری</title>
            <link>https://virgool.io/@soroushzsh</link>
        </image>

                    <item>
                <title>طراحی شی گرا - اصول SOLID گام دوم - SRP و OCP</title>
                <link>https://virgool.io/@soroushzsh/object-oriented-design-solid-srp-ocp-w8sv8dftuvlh</link>
                <description>توی قسمت اول درباره لزوم استفاده ازدیزاین پترن ها و مفاهیم اولیه طراحی شی گرا صحبت کردیم. توی این قسمت می خوایم تا در مورد دو مفهموم Single Responsibility و Open-closed از اصول SOLID صحبت کنیم.اصل اول Single Responsibility Principle (SRP)این اصل به ما میگه که هر ماژول، کلاس یا متد در برنامه ما باید تنها یک مسئولیت داشته باشه و فقط یک کار مشخص رو انجام بده. مثلا اگر قراره فرآیند ثبت نام و ورود کاربر به وب سایتمون رو پیاده سازی کنیم طراحی درست استفاده از دو کلاس یا دو متد جداگانه برای هرکدوم از این فرآیندهاست.حالا چطور این اصل رو رعایت کنیم؟برای رعایت اصل single responsibility باید تا حد امکان کلاس ها ومتدهامون رو به فرآیندهای جداگانه بشکنیم.برای مثال در فرآیند خرید باید دو کلاس جداگانه برای خرید در محل و خرید آنلاین داشته باشیم و انجام دادن این دو فرآیند از طریق یک کلاس خرید کار درستی نیست! علاوه براین بهتره تا جاهایی که در این کلاس ها وابسته به یک سرویس خارجی هستیم مثل درگاه بانکی یا پرداخت از طریق دستگاه کارتخوان، را بااستفاده از interface های جداگانه پیاده سازی کنیم.نکته جانبی: بهتره خروجی تمام متدهایی که از یک جنس هستند مثل پرداخت کارت به کارت، کارتخوان یا درگاه بانکی به یک شکل باشه یا به عبارت دیگه از یک template مشترک استفاده کنن.با استفاده از این اصل ما سعی می کنیم تا جاهایی از برنامه رو که احتمال تغییر در اون ها زیاده شناسایی کنیم و اون بخش ها رو با استفاده از Abstraction وInterface های مورد نیاز پیاده سازی کنیم.تنها یک دلیل برای تغییر یک کلاس و یا یک متد باید وجود داشته باشد.Robert C Martinاصل دوم Open-Closed Principle (OCP)در یک جمله یعنی قابلیت افزودن featureهای جدید بدون ایجاد تغییر در کلاس ها و متدهای قبلی وجود داشته باشه. در واقع ما باید ازایجاد شدن تغییرات آبشاری توی سیستم جلوگیری کنیم! یکم تخصصی تر بگیم میشه:open for new features and close for changesطراحی ما در حالت ایده آل طوری جلو میره که برای اضافه کردن قابلیت ها و ویژگی های جدید به سیستم فقط کافیه یک کلاس و یا یک متد جدید بنویسیم بدون اینکه به روندهای موجود دست بزنیم. اگر با اضافه کردن ویژگی یا feature جدید به سیستم مجبور شدیم به کدهای قبلی امون دست بزنیم یعنی یه جای کار می لنگه!معمولا قسمت هایی از کد که if/else کنار هم زیاده استفاده شده نشونه اینه که باید اون قسمت رو با رعایت اصل open-closed بازنویسی یا در اصطلاح refactor کنیم.حالا چطور باید OCP رو در کدهامون پیاده سازی کنیم؟بااستفاده از پارامترهای کنترلی در متدهااستفاده از inheritance (دیزاین پترن template اینجا می تونه مفید باشه.)استفاده از composition (دیزاین پترن strategy اینجا می تونه مفید باشه.)علاوه بر دیزاین پترن هایی که بالا بهشون اشاره کردیم دیزاین پترن های Factory و Builder هم اینجا می تونن مفید و کاربردی باشن.برای روشن تر شدن موضوع بیاید فرض کنیم که ما درحال پیاده سازی یک درگاه پرداخت در محصولمون هستیم. حالا با توجه به اینکه کاربر چه نوع پرداختی رو انتخاب میکنه چندتا if نوشتیم که اگر از نوع پرداخت آنلاین بود برو متد online_payment رو صدا بزن، اگر از نوع پرداخت کارت به کارت بود برو متد cart_to_cart رو صدا بزن و اگر از نوع پرداخت در محل بود متد local_payment رو صدا بزن.اما OCP چی میگه؟میگه شما بیا یه کلاس پرداخت به صورت abstract پیاده سازی کن و ۳ تا کلاس برای هرکدوم از انواع پرداخت. این کلاس ها متد pay رو از والد خودشون (که همون کلاس Payment هست) به ارث میبرن و هرکدوم به شیوه خودشون اون رو override میکنن. اینجوری دیگه اون if/else ها از برنامه حذف میشه و شما هنگام پرداخت کاربر فقط کافیه متد pay رو برای اون object صدا بزنی.برای دیدن یه مثال دیگه از پیاده سازی این اصل می تونید به انتهای این لینک سر بزنید.</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Fri, 08 Sep 2023 18:59:45 +0330</pubDate>
            </item>
                    <item>
                <title>طراحی شی گرا چی میگه؟ - گام اول مقدمه</title>
                <link>https://virgool.io/@soroushzsh/solid-principles-first-step-yatfgkzvifaf</link>
                <description>Object Oriented Design - First Stepقبل از اینکه بخوایم وارد مطلب بشیم باید بدونیم که چه نیازی هست که ما دیزاین پترن ها و معماری های مختلف رو یاد بگیریم؟اگر نظر من رو بپرسید، نظر من اینه که تاوقتی لزوم استفاده از دیزاین پترن هارو در کدهاتون احساس نکنید یادگیری اونها بی فایدست. در واقع شما بعد از یه مدت به جایی می رسید که دغدغه شما از اینکه چطور یک فیچر رو پیاده سازی کنید به این میرسه که چطور این فیچر رو طوری پیاده سازی کنید که تست و maintenance اون راحت تر باشه و اگر قرار شد یه روزی کدهاتون رو یه بنده خدایی بشینه refactor کنه راحت تر باشه (در اصطلاح bad smell کمتری داشته باشین).  خلاصه اینکه نشستن و خوندن این پترن ها به هیچ کاری نمیاد تا وقتی که احساس نیاز بهشون نکردید و حتی پیاده سازیشون باعث پیچیده تر شدن روند برنامه خواهد شد.قبل از اینکه بریم سراغ اصل مطلب چندتا مبحث داریم که خیلی خلاصه وار بهشون اشاره می کنیم:Rigidity: تغییر روی سیستم سخت و زمانبرهFragility: وقتی تغییری روی یک بخشی از سیستم میدیم نگران عملکرد صحیح سایر بخش ها هستیمImmobility: کدهامون رو نمیتونیم در مواقع لزوم درجاهای دیگه ایی از سیستم که نیاز داریم استفاده کنیمViscosity: تغییر در سیستم و اضافه کردن ویژگی های جدید انقدر دردسر داره که بیخیالش میشیمRigidityبرای اینکه از rigidity جلوگیری کنیم باید زمان build و test رو به حداقل برسونیم، یعنی با هرتغییر کوچک مجبور نباشیم تا کل سیستم رو دوباره rebuild وتست کنیمنشونه های rigidity در کد:کدهامون به صورت procedural نوشته شده اند. (۱- همه کدها داخل یک فایل هستن ۲- استفاده از if/else if/else های پشت سرهم)عدم استفاده از Abstraction (توجه به اهمیت استفاده از inheritance و کاربرد interface ها)عدم توجه به Encapsulation (کامپوننت ها و کلاس ها باید کمترین اطلاعات رو از همدیگه داشته باشن.)نکته مهم:  حواسمون باشه مفاهیم Abstraction شده رو بیش از حد برای سیستم customize نکنیم!Fragilityاگر باهرتغییر در سیستم مجبورین بخش های دیگه رو هم تغییر بدید شما دچار fragility هستید.چیکار کنیم دچار fragility نشیم؟ باید وابستگی بین کامپوننت های مختلف سیستم رو به حداقل برسونیم.Immobilityچرا دچار immobility میشیم؟ توجه بیش از حد به جزئیات! (Over engineering نکنید آقا!!! شاید یه روزی یه فیچری لازم شد!)اگر دید که ماژول ها یا متدهایی که کار یکسانی انجام میدند رو دوباره دارید پیاده سازی میکنید تبریک میگم ساختار شما دچار immobility شده. یادمون باشه که ماژول ها باید کمترین وابستگی رو به environment خودشون داشته باشند تا در اصطلاح reusability اون ها حفظ بشه و بتونیم در محیط های دیگه هم در صورت نیاز از اون ها استفاده کنیم.Viscosityکی دچار این بیماری میشیم؟ وقتی که بخاطر سرعت بالاتر در پیاده سازی سیستم قید طراحی درست رو میزنیم! این موضوع باعث میشه تا در آینده تست و اضافه کردن فیچرهای جدید به سیستم انقدر دشوار بشه که از خیرشون بگذریم.افزایش پیچیدگی در سیستم، باعث سخت تر شدن پیشرفت و اضافه کردن قابلیت های جدید میشه در نتیجه برای اینکار راه های میانبری رو انتخاب می کنیم که خودشون باعث افزایش این پیچیدگی ها خواهند شد.Robert C Martinقسمت دوم :  آشنایی با اصول Single Responsibility و Open-Closed</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Sun, 13 Aug 2023 18:54:00 +0330</pubDate>
            </item>
                    <item>
                <title>میکرونکات جنگو - بخش دوم (models.py)</title>
                <link>https://virgool.io/@soroushzsh/django-micro-tips-part-2-models-bl7g5tsix6wn</link>
                <description>Django Models Micro Tips By Soroush Zaker Shobeiriدر ادامه بخش اول میکرونکات جنگو در این مطلب نکات مهمی که درباره فایل models داریم رو بیان میکنم و امیدوارم براتون مفید باشه.models.py:یکی از best practice ها در طراحی modelهامون اینه که برای هر کلاس متد get_absolute_url رو تعریف کنیم. برای مثال:def get_absolute_url(self):
    return reverse(&#039;post-detail&#039;, args=[str(self.id)])اگر این متد رو داخل مدل ها پیاده سازی کرده باشیم، در صورتی که از Template استفاده میکنیم میتونیم به جای {% &#x27;post_detail&#x27; post.pk %}از {% post.get_absolute_url %}استفاده کنیم.براساس پیشنهاد داکیومنت خود جنگو  اگر فکر می کنید که در آینده نیاز دارید تا فیلد های بیشتری به مدل یوزر خود جنگو اضافه کنید بهتره این کار رو در ابتدای پروژه انجام بدید، به بیان دیگه بهتره همیشه اول پروژه ها یه custom user model برای خودمون بسازیم.برای اضافه کردن custom user model بهتره که از کلاس AbstractUser به جای AbstractBaseUser استفاده کنیم.تفاوت null=True و blank=True در مدل ها چیه؟برای جواب دادن به این سوال پیشنهاد میکنم این پست استک اورفلو رو بخونید.به طور خلاصه null=True مربوط به نگهداری مقادیر در دیتابیس هست که ما اجازه میدیم تا مقادیر null در دیتابیس ذخیره بشن. اما blank=True مربوط به مرحله validation فیلدها است که مشخص میکنه آیا این فیلد required هست یا خیر.استفاده همزمان null=True و ‌blank=True خیلی اتفاق می افته و دلیلش هم اینه که وقتی ما یک فیلد رو غیر الزامی تعیین میکنیم (blank=True) در نتیجه این اجازه رو هم باید به دیتابیس بدیم تا مقادیر null رو ذخیره کنه. تنها استثنا این موضوع در مورد CharField و TextField هست که در صورتی که خالی باشند به صورت یک string خالی یا &#x27; &#x27; داخل دیتابیس ذخیر میشن.یکی دیگه از best practice ها اینه که تا حد امکان تغییرات هر model رو داخل migration همون model یا app انجام بدیم نه اینکه یهو با یه migration همه model هایی که نیاز داریم رو ایجاد کنیم.مثلا ما یک مدل پست داریم و هر پست می تونه چندین کامنت داشته باشه در این صورت حتما داخل مدل کامنت یک Foreign Key داریم به مدل پست حالا اگر بخوایم کامنت های یک پست رو از طریق یک کوئری دریافت کنیم چیکار باید کنیم؟راه حلی که اینجا جنگو به ما میده قابلیت اییه که بهش میگیم foo_set در اینجا foo معادل با مدل پست های ما است یعنی مثلا post_set که از این طریق داخل کوئری هامون میتونیم به FKها دسترسی داشته باشیم. روش دیگه تعریف کردن related_name عه مثلا:class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name=&#039;comments&#039;)بهتره related_name اسم جمع اون مدل ایی باشه که FK درونش قرار داره.تفاوت id و pk:خیلی از جاها ما این دوتا رو به جای هم استفاده می کنیم چون به صورت پیش فرض جنگو موقع ایجاد جدول های دیتابیس یک فیلد id ایجاد می کنه و اون رو به عنوان pk یا همون primary key در نظر میگیره. اما ما این قابلیت رو داریم که فیلد دیگه ایی رو (بغیر از id) بعنوان pk در نظر بگیریم. در نتیجه استفاده از  pk به جای id روش safe تری محسوب میشه و تشخیص اینکه کدوم فیلد بعنوان pk در نظر گرفته شده بعهده خود جنگوست.بهتره وقتی که میخوایم داخل یک model به User model رفرنس ایجاد کنیم ( یعنی همون FK مثلا یک مدل پست داریم و هر پست یک نویسنده داره.) به جای نوشتن اسم مدل یوزر در قسمت FK از متد get_user_model استفاده کنیم.author = models.ForeignKey(get_user_model(),  on_delete=models.CASCADE, related_name=&#039;posts&#039;) من سروش ذاکر شبیری هستم و ممنونم که این مطلب رو مطالعه کردید. در صورتی که سوال یا پیشنهادی داشتید خوشحال میشم که اون رو از طریق راه های زیر با من در میون بزارید. :) اگر این مطلب رو دوست داشتید می تونید بخش اول رو در این لینک بخونید.</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Tue, 16 Feb 2021 14:46:47 +0330</pubDate>
            </item>
                    <item>
                <title>میکرونکات جنگو - بخش اول (settings.py)</title>
                <link>https://virgool.io/@soroushzsh/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D9%86%DA%A9%D8%A7%D8%AA-%D8%AC%D9%86%DA%AF%D9%88-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-settingspy-sh6d5dmmdb4t</link>
                <description>Django Admin Micro Tips By Soroush Zaker Shoebiriخیلی وقت ها پیش میاد که ما حین انجام دادن پروژه های مختلف یا مطالعه کتاب ها به نکاتی بر میخوریم که به خودمون میگیم عههه چه جالب!! پس اینطوری بودش! یا مثلا اوه! مطمئنم این نکته یه روزی حتما به کارم میاد! اما دو روز بعد حتی یادمون نمیاد که همچین نکته ایی رو خونده باشیم.حالا راه حل چیه؟ من اخیرا به عنوان یه برنامه نویس بک اند که از فریمورک جنگو استفاده میکنه شروع کردم به مطالعه یه سری کتاب در این زمینه (که احتمال خیلی زیاد بعدا توی یه پست راجع بهشون مینویسم) و با با کلی نکته مواجه شدم که رعایت کردنشون میتونه باعث تمیزتر شدن کدهام، کمتر شدن حجم کدها و شناخت بهتر از ابزاری که دارم باهاش کار میکنم به اسم جنگو بشه. شاید خیلی از این نکات رو هم از قبل میدونستم اما به مرور زمان و استفاده نکردن فراموششون کرده باشم.پس تصمیم گرفتم در یک سری پست به اسم &quot;میکرونکات جنگو&quot; برای خودم بنویسمشون تا هرچند وقت برگردم و مرورشون کنم و البته امیدوارم برای شما هم مفید باشه.نکات مربوط به settings پروژه:ترتیب نوشتن appها در بخش installed_apps اهمیت داره. اگر همزمان دوتا app بخوان به یک resource دسترسی داشته باشن اونی که بالاتره اولویت بیشتری داره.یکی از best parcticeهای جنگو اینه که appهامون رو داخل installed_apps براساس built-in#, #local و 3rd-party# بودن از هم جدا کنیم.بااینکه این امکان وجود داره که وقتی یه app جدید ایجاد می کنیم فقط اسم این app رو داخل installed_apps بزاریم اما بهتره که به صورت کامل به کلاس کانفیگ اش اشاره کنیم مثلا:blog.apps.BlogConfigبرای load کردن فایل های static در پروژه باید STATIC_URL ، STATIC_ROOT و STATICFILES_DIRS رو داخل تنظیمات مقداردهی کنیم.تفاوت  STATIC_URL ، STATIC_ROOT و STATICFILES_DIRS با همدیگه چیه؟STATIC_ROOT:ادرس path ایی که فایل های استاتیک داخل سرور production نگهداری میشن.STATIC_URL:اسم urlایی که از طریق اون میتونیم به فایل های استاتیک دسترسی داشته باشیم. مثلاabcdefg.com/&lt;static_url&gt;/pic1.jpgمشابه همین متغیرهارو ما برای فایل های media (فایل هایی که توسط کاربر اپلود میشن) داریم، یعنی MEDIA_URL و MEDIA_ROOTبرای استفاده از media ها در حالت development لازمه که فایل urls.py به صورت زیر ویرایش بشه:from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [ ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
STATICFILES_DIRS:وقتی که پروژه در فاز development هستش از این لیست برای نشون دادن path فایل های استاتیک استفاده میکنیم.چرا STATICFILES_DIRS به صورت یک لیست تعریف شده؟ چون میتونیم فایل های استاتیک خودمون رو در جاها (یا بهتر بگم سرورها)ی مختلفی بزاریم و از آدرس های مختلفی اون هارو لود کنیم.برای لود کردن فایل های استاتیک برروی سرور پروداکشن میتونیم از دستور زیر استفاده کنیم:python manage.py collectstaticsعلاوه برمقداردهی متغیرهای بالا نیازه که یه فولدر برای فایل های استاتیک ایجاد کنیم و اگر از template استفاده میکنیم حتما باید {% load static %} رو خط اول بنویسیم.برای اینکه مشخص کنیم کاربر پس از لاگین به سیستم به کجا باید ریدایرکت بشه باید متغیر LOGIN_REDIRECT_URL رو داخل تنظیمات مقداردهی کنیم.برای اینکه مشخص کنیم کاربر پس از logout از سیستم به کجا باید ریدایرکت بشه باید متغیر LOGOUT_REDIRECT_URL رو داخل تنظیمات مقداردهی کنیم.وقتی میخوایم custom_user_model درست کنیم باید داخل setting متغیر AUTH_USER_MODEL رو ست کنیم.اگر داخل modelها نیاز داریم که با user model کار کنیم بهتره به جای import کردن مستقیم این model از متد get_user_model استفاده کنیم.جنگو برای پیدا کردن templateها به صورت دیفالت مسیر زیر رو نگاه میکنه:app_directory &gt; templates &gt; same_app_name_directory &gt; abc.htmlپس وقتی لیست DIRS داخل templates در تنظیمات رو اپدیت میکنیم یعنی علاوه بر اون بیا این آدرسی که من میگم رو هم نگاه کن.داخل settings یه متغیر داریم به اسم STATICFILES_FINDERS که به صورت implicit تعریف شده و اگر بخوایم اولویت اش رو تغییر بدیم میتونیم اون رو override کنیم.STATICFILES_FINDERS = [
    &amp;quotdjango.contrib.staticfiles.finders.FileSystemFinder&amp;quot,
    &amp;quotdjango.contrib.staticfiles.finders.AppDirectoriesFinder&amp;quot,
]اولین مورد میاد داخل STATICFILES_DIRS رو میگردهدومین مورد میاد داخل پوشه هر app رو میگردهجنگو به ما این قابلیت رو میده که در یک پروژه چندین سایت رو مدیریت کنیم و برای این کار میتونیم در settings متغیر SITE_ID رو اضافه کنیم.در حالت production:DEBUG = FalseSECURE_BROWSER_XSS_FILTER = TrueSESSION_COOKIE_SECURE = TrueCSRF_COOKIE_SECURE = Trueمن سروش ذاکر شبیری هستم و ممنونم که این مطلب رو مطالعه کردید. در صورتی که سوال یا پیشنهادی داشتید خوشحال میشم که اون رو از طریق راه های زیر با من در میون بزارید. :)در صورتی که این مطلب رو دوست داشتید، می تونید ادامه این مطلب رو در این لینک مطالعه کنید.</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Sun, 10 Jan 2021 17:18:59 +0330</pubDate>
            </item>
                    <item>
                <title>آموخته های من از ریچارد برانسون</title>
                <link>https://virgool.io/ketabaz/%D8%A2%D9%85%D9%88%D8%AE%D8%AA%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%D8%A7%D8%B2-%D8%B1%DB%8C%DA%86%D8%A7%D8%B1%D8%AF-%D8%A8%D8%B1%D8%A7%D9%86%D8%B3%D9%88%D9%86-jdfm1ht7jtbb</link>
                <description>اگر در شروع به انتها فکر کنید، اگر به همه مایل هایی که میخواهید طی کنید بیندیشید و اگر به همه خطراتی که ممکن است با آن ها رو به رو شوید نظر کنید، ممکن است هرگز قدم اول را برندارید. در زندگی اگر برای رسیدن به آن چه میخواهید تلاش لازم را نکنید، هرگز به هدفتان نخواهید رسید. «ریچارد برانسون»Sir Richard Charles Nicholas Bransonاول از همه پیشنهاد میکنم حتما کتاب &quot;نترسید، انجامش دهید&quot; رو مطالعه کنید. من ترجمه مهدی قراچه داغی رو خوندم،متن کتاب خیلی روون ترجمه شده و خوندنش اگر روزی 20 دقیقه وقت بزارید بیشتر از یه هفته طول نمی کشه.این کتاب اتوبیوگرافی (ینی خودش زندگی خودش رو نوشته) آقای ریچارد برانسون هستش. مدیر و موسس گروه ویرجین که 400 کمپانی رو در زیرمجموعه خودش داره. یکی از بزرگترین سوالات من این بود که آقای برانسون چه طور میتونه همزمان مدیریت 400 تا کمپانی رو بعهده داشته باشه و در این زمینه خیلی خیلی موفق هم ظاهر بشه؟!(درحالی که من توی مدیریت پروژه کارشناسیم و تسک های شرکت موندم!)این کتاب به صورت داستانی و نکته وار نوشته شده که باعث میشه تا در یک فضای واقعی (اتفاقاتی که قبلا افتاده) با تجربیات و نکاتی که در کتاب اومده روبرو شیم، نه برعکس خیلی از نویسنده های کتاب های موفقیت که نشستن تو خونه کارهایی که به نظرشون درست بوده رو نوشتن کتاب کردن!میتونم خیلی جدی آقای برانسون رو به شخصیت فارست گامپ تشبیه کنم ( اگر این فیلم رو ندیدید همین الان دانلودش کنید!!!). فارست گامپ ایده های افراد رو گوش میکرد و فرقش با بقیه این بود که شروع میکرد به عملی کردنشون(در ابتدا اصلا خوب انجامشون نمیداد اما انقدر تلاش میکرد تا بهترین میشد...هیچوقت پینگ پونگ بازی کردنش یادم نمیره!) حتی شاید از نظر ما کمی خنگ هم به نظر می رسید. شخصیت ریچارد برانسون هم دقیقا به همین شکل تربیت شده. اگر بخوام روند موفقیت ریچارد برانسون رو ترسیم کنم تقریبا به این شکل میشه:همه ما در زندگی به یک حلقه حمایت نیاز داریم، حلقه حمایت ما خانواده و دوستان خوبمون هستند. پس باید یه حلقه حمایت قوی برای خودمون ایجاد کنیم و همیشه حواسمون بهش باشه.(توی کتاب داستان های زیادی هست که آقای برانسون با کمک دوستانش و خانواده اش تونسته با مشکلاتش رو به رو بشه مثلا خرید جزیره شخصی، خرید یه قلعه در آکسفورد و یا تاسیس ویرجین ایرلاینز)آقای برانسون اغلب در حال تفریح کردنه و مسافرت عه به عقیده ایشون ما باید از کاری که انجام میدیم لذت ببریم، اگر این کار شمارو خوشحال نمی کنه پس دنبال یه کار جدید باشید! هیچوقت به پول فکر نکنید چون پول خودش از راه میرسه و یادتون نره که پول هدف نیست تنها وسیله ایه برای رسیدن به هدف!ریچارد برانسون توی کتاب یکی از مهمترین دلایل موفقیتش رو تربیت خانوادگی ایی میدونه که همیشه از بچگی سعی شده تا شخصیت مستقلی داشته باشه و روی پای خودش بایسته و در مواقعی که تصمیمی میگرفته مورد حمایت خانواده اش بوده ( حتی وقتی که میخواست ترک تحصیل کنه!) و این مسئله باعث شده بود که همیشه یه خودباوری درونش وجود داشته باشه. با توجه به فرهنگ ما در حال حاضر احتمالا خیلی از ما این شرایط رو نداشتیم اما هیچ وقت برای تغییر کردن دیر نیست ما باید به خودمون باور داشته باشیم تا دیگران هم به ما باور داشته باشن. اگر شکست میخوریم بدونیم که قرار نیست همیشه پیروز باشیم از شکست هامون درس بگیریم، تاسف نخوریم، بازهم تلاش کنیم و نگاه رو به جلو داشته باشیم. هیچوقت در زندگی نباید تسلیم بشیم.( اگر ریچارد برانسون تسلیم میشد خیلی وقت پیش از داخل یه بالن به اقیانوس میفتاد و هیچوقت این کتاب به دست من و شما نمی رسید.)با ریاضیات (جمع و تفریق ساده) دوست باشید هروقت خواستید کاری رو شروع کنید خیلی ساده پارامترهاتون( مثله چندتا بفروشم چقدر سود میکنم؟ البته بصورت واقع بینانه نه خوش بینانه برانسون یکی از دلایل موفقیت خودش رو واقع بین بودنش میدونه) رو اندازه گیری کنید، بازار و رقباتون رو بشناسید و راجع بهشون اطلاعات کسب کنید. اگر ناعدالتی در حقتون شد با بلندترین صدایی که میتونید اعتراض کنید و در نهایت موقع تصمیم گیری به غریزه خودتون اعتماد کنید.توی کسب و کارتون هیچوقت با قیمت بازی نکنید، سعی کنید بهترین سرویس و خدمات رو با بهترین قیمت به مشتریاتون ارائه کنید. [ به قول آقای یونچی:«کم خرج بالا نشین.» ]همیشه و تحت هرشرایطی به حرفی که میزنید عمل کنید، باید همیشه سر قول خودتون باشید و اگر نمیتونید بهتره که اصلا قول ندید!قبل از شروع هرکاری دقت کنید که این کار شما به کسی یا چیزی آسیب نمیزنه!(آقای برانسون همیشه خودش رو در قبال کارمندانش و سهامداران شرکتش مسئول میدونه تا این حد که وقتی قیمت سهام گروه ویرجین افت پیدا کرد برای جبران ضرر سهامدارانش با هزینه شخصی و چندمیلیون پوندی تمام سهام رو به قیمت قبلی خریداری کرد.)فرصت ها به سرعت از دست میرن! شما باید همیشه آماده باشید تا از فرصت هایی که پیش میاد استفاده کنید، کارها و پروژه هارو تا جایی که میتونید ساده کنید و سریعا دست به کار بشین. سرعت مهمترین سلاح شما در شرایط رقابتیه، سلاحی که به ریچارد برانسون کمک کرد تا بتونه با در مقابل شرکت بزرگی مثله بریتیش ایرلاینز دوام بیاره و شرکت هواپیمایی خودش رو حفظ کنه. تنها کاری که باید بکنیم اینه که فرصت هارو شناسایی کنیم و به قول خودمون سریع دست به آچار شیم.ممنون از اینکه تاانتهای مطلب همراه من بودین، امیدوارم براتون مفید بوده و خوشتون اومده باشه. خوشحال میشم کامنت ها و نظراتتون رو بخونم ((:من همیشه اعتقاد داشتم تفریح داشتن و لذت بردن باید زمینه همه فعالیت های من باشد. من در زندگی آموخته ام هیج هدفی دور از دسترس انسان نیست. من به این نتیجه رسیده ام آن هایی که پنداره دارند و به خودشان مطمئن هستند، می توانند هرکاری را انجام دهند. وقتی دیگران را میبینم که از شرایط سخت خود گله می کنند، به آنها می گویم اجازه ندهید موانع و مشکلات بر سر راهِ پیشرفت شما سد ایجاد کنند. وضع شما به آن بدی که فکر می کنید نیست! همیشه راهی وجود دارد. «ریچارد برانسون»</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Wed, 26 Aug 2020 16:49:10 +0430</pubDate>
            </item>
                    <item>
                <title>چندوظیفگی یا Multitasking</title>
                <link>https://virgool.io/@soroushzsh/%DA%86%D9%86%D8%AF%D9%88%D8%B8%DB%8C%D9%81%DA%AF%DB%8C-%DB%8C%D8%A7-multitasking-s8cwogd0hsvp</link>
                <description>اگر کمی به کارهایی که هرروز و هرلحظه در حال انجام دادنشون هستیم دقت کنیم متوجه میشیم که ما دائما در حال فکر کردن و انجام دادن کارهای محتلف هستیم. دائما تمرکزمون رو از کاری به روی کار دیگه میبریم و دوباره سعی میکنیم تا مجددا روی همون کار تمرکز کنیم (البته اگه واقعا بتونیم مجدد تمرکز کنیم.)تحقیقات نشون میده که اغلب ما بیشتر از ۶ دقیقه نمی تونیم بروی یک کار تمرکز کنیم. همین حالا که دارین این مطلب رو می خونید احتمالا چندتا تب روی مرورگرتون بازه، همزمان حواستون به گوشیتون هم هست. همه این ها مثالی از مولتی تسکینگ هستند.مولتی تسکینگ یعنی چی؟اول بیاین تا ببینیم تعریف ما از چندوظیفگی یا multitasking چی هستش.انجام دادن چندتا کار به صورت همزمان (شبیه چیزی که توی تصویر بالا می بینید.)انجام دادن چندتا کار بین همدیگه (سوییچ کردن مدام از یه کار به کار دیگه و برگشتن مجدد)انجام دادن چندتا کار بلافاصله پشت سرهم بدون استراحتانجام دادن دوتا کار همزمان چه بلایی سر مغز ما میاره؟خیلی از ما احساس می کنیم که اگر چندتا کار رو همزمان انجام بدیم باعث میشه تا بهره وری بیشتری داشته باشیم و کارهای بیشتری رو انجام بدیم در حالی که تحقیقات مختلفی که توی دانشگاه های سراسر دنیا انجام شده چیزی برخلاف این ذهنیت رو نشون میده و هرچقدر که کاری که داریم انجام میدیم پیچیده تر باشه تاثیر مخرب اش هم بیشتره.کاهش حافظه کوتاه مدتافزایش استرس و اضطرابکاهش خلاقیتکاهش بهره وری و افزایش احتمال خطاکاهش بهره وری و افزایش زمان!یه آزمایش خیلی ساده هست که میتونه به ما نشون بده انجام دوتا کار به صورت همزمان چقدر میتونه روی بهره وری ما تاثیر گذار باشه.یه برگه کاغذ آماده کنید.با یه خط به دو بخش تقسیم اش کنید.روی دومی یکی از حروف جمله “من میتونم این کار رو به خوبی انجام بدم” رو بنوسید.شروع کنید و هربار که یک حرف از جمله بالا رو مینویسید یکی از اعداد ۱-۳۰ رو در طرف دیگه کاغذ بنویسید.زمانی که این کار رو انحام دادید حالا هرکار رو به صورت جدا جدا انجام بدید و زمان بگیرید تا تاثیر انجام چندتا کار به صورت همزمان رو روی بهره وری کاملا متوجه بشید.در هرزمان تنها فقط برروی یک کار تمرکز کنید!انجام ندادن چندتا کار باهمدیگه واقعا کار سختی میتونه باشه. حتی شاید گاهی متوجهش نباشیم مثلا زمانی که داریم یک ایمیل کاری یا نامه اداری رو تنظیم می کنیم و همزمان فکرمون درگیر تسک هایی هستش که باید انجامشون بدیم ( طبق یکی از مطالب منتشر شده در مجله فوربز اینجور مواقع قدرت فکری یه فرد بالغ میتونه تاحد یه بچه ۸ ساله کاهش پیدا کنه!)تمرکز بر روی یک کار = استرس کمترتمرکز بر روی چیزی که باید انجام بشه به جای چیزی که میتونه انجام بشه.افزایش خلاقیت در کاردر این جا چندتا راه معرفی میکنیم که میتونه بهمون کمک کنه تا بازدهی بهتری در انجام دادن کارهامون داشته باشیم.روزانه قبل از شروع کارهاتون زمان ۱۵ تا ۲۰ دقیقه ایی رو به برنامه ریزی و زمان بندی کارهاتون اختصاص بدین.همونطور که جیم کلیر در کتاب عادات اتمی میگه اگه شما یه برنامه ریزی روزانه داشته باشید که مشخص میکنه چه کاری رو ؟ در چه زمانی؟ در کجا؟ و چطور باید انحام بدید؟ باعث میشه تا احتمال موفقیت اتون در اون کار بیشتر بشه و نتایج بهتری بگیرید.زمان مشخصی رو برای چک کردن شبکه های اجتماعی، ایمیل و وب سایت های مورد علاقتون در نظر بگیرید.(برای اینکار میتونید از اپ هایی که در این زمینه بهتون کمک میکنن استفاده کنید.)حتما زمان استراحت بین کارهاتون در نظر بگیرید. متمرکز بودن به معنی این نیست که استراحت نکنید! اما یادتون باشه خیلی خوبه که در زمان های استراحتتون به جای چک کردن اینستاگرام و تلگرام کمی ریلکس کنید، آب خورید تا بدنتون رو هیدراته نگه دارید و برای چند لحظه هم که شده به هیچ چیز فکر نکنید. ( برای زمان بندی کار و استراحت می تونید از تکنیک پومودور کمک بگیرید که خودم خیلی دوسش دارم و واقعا موثر بوده.)محیط اطرافتون رو برای تمرکز و کار کردن طراحی کنید و عوامل حواس پرتی رو تا حد امکان از خودتون دور کنید.ممنون از اینکه تا آخر این مطلب رو مطالعه کردید. امیدوارم مطالبی که گفته شد کاربردی و مفید بوده باشه براتون و کمک کنه تا با بازدهی بیشتری برای انجام دادن کارهاتون داشته باشید. ?</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Thu, 07 May 2020 15:10:22 +0430</pubDate>
            </item>
                    <item>
                <title>برداشت من از کتاب قله ها و دره ها - اسپنسر جانسون</title>
                <link>https://virgool.io/@soroushzsh/%D8%A8%D8%B1%D8%AF%D8%A7%D8%B4%D8%AA-%D9%85%D9%86-%D8%A7%D8%B2-%DA%A9%D8%AA%D8%A7%D8%A8-%D9%82%D9%84%D9%87-%D9%87%D8%A7-%D9%88-%D8%AF%D8%B1%D9%87-%D9%87%D8%A7-%D8%A7%D8%B3%D9%BE%D9%86%D8%B3%D8%B1-%D8%AC%D8%A7%D9%86%D8%B3%D9%88%D9%86-a1ww4rdkyajg</link>
                <description>peaks and valleysدیروز که برای مطالعه درس سیستم عامل و امتحانات دی ماه به کتابخونه رفته بودم حدود ساعت 5 عصر بود یه هوای سرد بارونی-برفی که باعث میشه هر آدمی دلش بخواد یا بره بیرون و زیربارون باشه یا اینکه پتو رو بکشه رو سرش بخوابه!خلاصه شرایط طوری بود که هرکاری میتونستی انجام بدی غیر از درس خوندن بخاطر همین پاشدم و رفتم با اجازه مسئول کتابخونه یه نگاهی به بخش کتاب های مدیریت و روانشناسی کتابخونه بندازم تا اگر کتاب خاصی توجه ام رو جلب کرد برای مطالعه اون رو به امانت بگیرم. اینجوری بود که دیروز کتابی رو که مدت ها بود اسمش رو به واسطه های محتلف می شنیدم و دلم میخواست یه روزی بخونمش رو پیدا کردم.قبل از اینکه بخوام درباره کتاب و برداشت خودم از این کتابی چیزی بگم نویسنده این کتاب دکتر اسپنسر جانسون هستن که از کتاب های دیگه ای که چاپ کردن میشه به کتاب ‘چه کسی پنیر مرا برداشت؟’ و کتاب ‘مدیر یک دقیقه ای اشاره کرد’ که هر دوی این کتاب هارو خوندم و به شماهم پیشنهاد میکنم بخونیدشون.کتاب قله ها و دره ها همون طور که روی جلدش نوشته شده درباره مدیریت لحظه های خوب و بد زندگی هستش اینکه چطور باید از دره های زندگی (یعنی لحظات بد) گذر کنیم تا به قله های زندگی (یعنی لحظات خوب) برسیم.در این کتاب به شیوه داستان گویی راهکارهایی ساده و عملی برای رسیدن به موفقیت و در اصظلاح کتاب قله های زندگی بیان شده.دره ها زمانی هستند که حسرت فرصت از دست رفته را می خورید.قله ها زمانی هستند که قدردان داشته هایتان هستید.به طور خلاصه همه ی مشکلات ما ناشی از زاویه دید ما نسبت به اتفاقات و احساس درونی مان نسبت به آنهاست.نکته ای که نباید فراموش کنیم اینه که این قله ها و دره ها در امتداد همدیگه هستن تا زمانی که از دره ای که ساختیم عبور نکنیم نمی تونیم به قله برسیم پس باید در دل دره ها به دنبال فرصت های خوب باشیم از تغییر، شکست، حرف دیگران و قضاوت شدن نترسیم.با ترس هامون مواجه بشیم و سعی کنیم از آن ها عبور کنیم.به تعبیر کتاب قله ها زمانی هستند که ما بر ترس هایمان غلبه می کنیم.بهترین راه عبور از ترس ها ساختن یک تصویر ذهنی از قله ای است که میخوایم بهش برسیم تصویری همراه با جزییات دقیق، باور پذیر و دست یافتنی از آنچه که به دنبالش هستیم.در لحظاتی که در قله های زندگی هستیم عواملی مثله اعتماد به نفس بی جا و غرور باعث میشن تا از قله به دره سقوط کنیم و قدرشناسی، تواضع، کمک به دیگران، یادگیری و افزایش مهارت ها و کیفیت کارها باعث میشن تا زمان بیشتری رو در قله سپری کنیم.اعتبار واقعی متعلق به کسی است که می آموزد و آموخته هایش را به کار می گیرد.در پایان از شما دوستان عزیزی که این مطلب رو مطالعه کردید خواهش می کنم به این نوشته اکتفا نکنید و نسخه اصلی کتاب رو تهیه و مطالعه کنید.کتاب: قله ها و دره ها – نویسنده: اسپنسر جانسون – انتشارات: قطره – مترجم: ندا شادنظر</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Sat, 30 Nov 2019 21:57:36 +0330</pubDate>
            </item>
                    <item>
                <title>7 اشتباه من به عنوان یک توسعه دهنده تازه کار!</title>
                <link>https://virgool.io/@soroushzsh/7-%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87-%D9%85%D9%86-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%DA%A9-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%AF%D9%87%D9%86%D8%AF%D9%87-%D8%AA%D8%A7%D8%B2%D9%87-%DA%A9%D8%A7%D8%B1-wvtg6w2nwfmx</link>
                <description>قبول کردن اولین پیشنهاد شغلی که از راه می رسه!اگر شما به صورت خودآموز در حال یادگیری برنامه نویسی هستین یا مشغول سپری کردن آخرین ترم های تحصیلیتون در دانشگاه هستید، احتمالا پیدا کردن اولین شغلتون یکی از اهداف اصلی شماست.چیزی که باید متوجهش باشید اینه که پیدا کردن شغل اصلا کارآسونی نیست. هزاران نفر مثل شما منتظرن تا به عنوان برنامه نویس در اولین شرکت خودشون استخدام بشن! چیزی که می تونه شما رو از بقیه متمایر کنه داشتن یک رزومه قوی هستش که طی یک مقاله در آینده بهش می پردازیم.هممون می دونیم که پیدا کردن اولین شغل چقدر می تونه رضایت بخش باشه اما در عین حال همین موضوع ممکنه چندان هم اتفاق خوشایندی نباشه.اولین شغل من کاملا با تصورات و شغل ایده آل ام تفاوت داشت. افراد کارهاشون رو با علاقه انجام نمی دادن و برای رسیدن به ددلاین پروژه ها به ناچار از کیفیت کار کم می کردن. جایی که من کار می کردم سرزنش کردن تبدیل به یه فرهنگ شده بود و بدتر از همه اینکه من هیچ چیز جدیدی یاد نمی گرفتم! من چشمانم رو روی این اتفاقات بد بسته بودم، چون مزیت های پیدا کردن اولین شغل باعث شده بود کورکورانه به این مسائل نگاه کنم تا زمانی که پیشنهاد شغلی بهتری با حقوق بهتر دریافت کردم.اولین شغل شما بسیار مهمه و تاثیر زیادی توی آینده شغلی و اینکه توسعه دهنده بهتری باشین داره به خاطر همین قبل از اینکه بخواین در جایی استخدام بشین باید کاملا در مورد اون شرکت و محیط کاریش تحقیق کنید و حتی اگر کسانی رو می شناسین که قبلا توی اون شرکت کار می کردن بشنید و ازشون در مورد نحوه کار، ارزش های اون شرکت و اینکه به چه چیزهایی علاقه دارن یا ندارن سوال کنید.اینکه سوالات درستی در مصاحبه های کاری بپرسید بسیار اهمیت داره!مصاحبه کاری بهترین فرصت برای شماست تا با اون شرکت آشنا بشید پس بهتره سوالات ایی رو از قبل آماده کنید و بپرسید تا بیشتر و بهتر با اون شرکت آشنا بشید.سوالاتی مثله :از چه متدلوژی هایی برای توسعه نرم افزار استفاده می کنن؟آیا از سیستم های کنترل پروژه استقاده می کنن؟فرآیند مستندسازی در شرکت به چه صورت هستش؟به فرآیندهای تست نرم افزار اعتقادی دارن؟و اینکه چه فرهنگی در سازمان حاکمه؟ محیط کاری با نشاط و فعالی دارن؟یا خشک و سرد؟انتخاب نکردن یک مسیر برای متخصص شدن!شکی نیست که انتخاب مسیر برای تبدیل شدن به یک برنامه نویس حرفه ای کاره سختیه. کلی زبان، فریم ورک و ابزار هستش که هرکدوم مزیت ها و معایب خودشون رو دارن. اشتباهی که من کردم این بود که سعی کردم همه چیز رو یاد بگیرم.هر دقیقه با توجه به حس و حالی که داشتم روی یه زبان یا فریم ورک کار میکردم! به من اعتماد کنید این روش به هیچ وجه روش موثری برای یادگیری نیست!من نتایج خیلی بهتری می گرفتم اگر یه مسیر یا چند تکنولوژی خاص رو مشخص می کردم و تمرکزم رو بر روی یادگیری اون ها صرف می کردم مثلا اگر شما مشتاق یادگیری برنامه نویسی فرانت اند هستید جاوااسکریپت یاد بگیرید و اگر می خواهید بک اند کار کنید یه زبان رو انتخاب کنین و به طور کامل بر روی اون مسلط بشید.پس تمرکزتون رو حفط کنین،‌ مسیرتون رو انتخاب کنین و برای حرفه ای شدن توی اون مسیر برنامه ریزی کنید!چرخ رو دوباره اختراع نکنید!فرض کنید شما در حال آماده کردن نمونه کار برای مصاحبه شغلیتون هستید یا اولین تسک اتون رو در شرکتی که استخدام شدین گرفتید شما می خویان نهایت سعی اتون رو برای تحت تاثیر قرار دادن دیگران انجام بدین. بهترین راه برای اینکار چیه؟ نشون دادن خفن ترین تکنیک های برنامه نویسی که بلدید!!نههه!این یکی از اصلی ترین اشتباهات من به عنوان یه تازه کار بود و اغلب می بینم که بقیه هم این اشتباه رو تکرار می کنن. اغلب تاره کارها سعی می کنن تا چرخ رو دوباره از اول اختراع کنن یا اینکه از راه حل های پیچیده برای حل مسائل استفاده می کنن.بهترین راه برای برنامه نویسی استفاده از قانون K.I.S.S هستش این قانون می گه همه چیز رو تا حد امکان ساده نگه دارید با این کار کدهای خواناتر و توسعه پذیر تری نوشتید و مطمئن باشین نفر بعدی که جای شما میشینه بخاطر اینکار از شما ممنون خواهد بود.زندگی چیزی بیشتر از کار کردن و کد زدن عه!یکی از عادات بد من این بود که هر روز لپ تاپ ام رو با خودم به خونه میاوردم و وقت ام رو ساعت ها بر روی انجام دادن تسک یا برطرف کردن باگ ایی میذاشتم که میتونست روز بعد انجام بشه و همین باعث میشد تا احساس خستگی و استرس شدیدی داشته باشم!یکی از دلایلی که باعث می شد من اینکارو انجام بدم این بود که دلم می خواست تا تسک هام رو در کوتاه ترین زمان ممکن به اتمام برسونم اما نکته ای که بهش توجه نمی کردم این بود که کار کردن یه فرآیند تمام نشدنیه شما باید یاد بگیرید که کار کردن رو متوقف کنید و زمانتون رو برای خانواده،‌ دوستان و سرگرمی ها و علائق شخصیتون سپری کنین.یادتون باشه همیشه فردایی هم وجود داره!از گفتن نمی دونم نترسید!اینکه شما در انجام دادن کاری که بهتون محول شده گیر کنید و نتونید اون رو کامل کنید یه چیز کاملا عادیه و حتی برای افراد حرفه ای که سال هاست مشغول به کار هستن هم اتفاق میفته اما اشتباه من این بود که وقتی مدیر پروژه ازم سوالی می کرد به جای گفتن نمی دونم! سریع یه دلیل الکی میاوردم و می پیچوندمش!من احساس می کردم اگر بگم نمی دونم اونا احساس بدی نسبت به من پیدا می کنن اما واقعیت اینه که هیچکس همه چیز رو نمی دونه!اینکه بگیم نمیدونم باعث میشه:شما رو به عنوان فرد صادقی بشناسن.با توضیحاتی که به شما داده میشه چیزهای جدیدی یاد خواهید گرفت.سعی نکنید خیلی سریع جلو برید!حتما این جمله رو شنیدید”قبل از اینکه بخواید بدویید باید بتونید راه برید”. وقتی اولین کارتون رو به عنوان یه برنامه نویس شروع می کنید همیشه به دنبال این هستید که چطور کارهای بزرگ تری انجام بدید و تسک های بیشتری رو برعهده بگیرید. این افکار خیلی خوبه اما متاسفانه همه چیز هیچ وقت به این خوبی پیش نمیره. شما در ابتدای کارتون تسک های آسون تر و سبک تری خواهید داشت این شاید خیلی هیجان انگیز نباشه اما لازمه و باعث میشه تا کم کم بتونید روی پای خودتون بایستید و با فرآیند کار بیشتر آشنا بشین همچنین باعث میشه تا اعضای تیم هم شناخت بهتری نسبت به شما پیدا کنن.اشتباه من این بود که اجازه می دادم این تسک ها منو ناامید کنه و این ناامیدی روی کار من تاثیر میذاشت. پس امید خودتون رو از دست ندید صبر داشته باشید و تسک هاتون رو به بهترین شکلی که می تونید انجام بدید.عضو انجمن ها بشید و برای خودتون یه شبکه ارتباطی بسازید.انجمن ها می تونن به شما کمک کنن،‌ حمایتتون کنن و در مواقع نیاز به شما انگیزه بدن.به عنوان یه توسعه دهنده تازه کار موقعیت های سختی پیش رو دارین که اگر عضو یه انجمن باشین میتونه خیلی راحت تر سپری بشه.درگیر شدن با پروژه های متن باز و دیدن اینکه بقیه توسعه دهنده ها چطور کد میزنن و چطور با هم همکاری می کنن می تونه خیلی مفید باشه انجام دادن این کارها در طول زمان باعث میشه تا به برنامه نویس بهتری تبدیل بشید.انجمن هایی که براتون جالب هستن رو پیدا کنید و عضوشون بشید حتی توی قرارهای ملاقاتشون شرکت کنید و سعی کنید شبکه خودتون رو بسازید. شبکه شما افرادی هستن که شما در حوزه کاری خودتون باهاشون آشنا هستید و برای مثال زمانی که شما به دنبال فرصت شغلی تازه ای هستید می تونن شما رو به شرکت های مختلفی معرفی کنند یا اینکه می تونید از تجربیاتشون استفاده کنید.ممنون که این مقاله رو تا انتها مطالعه کردید. منتظر خوندن نظراتتون راجع به این مطلب و بقیه نوشته هام در وبلاگ ام هستم :)ترجمه ایی از : Chris Blakely</description>
                <category>سروش ذاکر شبیری</category>
                <author>سروش ذاکر شبیری</author>
                <pubDate>Fri, 11 Oct 2019 22:51:53 +0330</pubDate>
            </item>
            </channel>
</rss>