<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سروش محمدی</title>
        <link>https://virgool.io/feed/@emprism</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 20:54:01</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/66223/avatar/DmbvsI.jpeg?height=120&amp;width=120</url>
            <title>سروش محمدی</title>
            <link>https://virgool.io/@emprism</link>
        </image>

                    <item>
                <title>معماری مسئله محور DDD</title>
                <link>https://virgool.io/@emprism/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%85%D8%B3%D8%A6%D9%84%D9%87-%D9%85%D8%AD%D9%88%D8%B1-ddd-zxow8sthkzzt</link>
                <description>اگر مطالب قبلی من رو خونده باشید متوجه تاکید زیاد روی بیزینس مشتری به جای تکنیک های فنی میشید. مشتری با توجه به بیزینسی که داره یک مشکل را ارائه میده(Problem Domain). این مشکل با یک زبان مشترک بین همه تیم ها ارائه میشه و مستنداتش تهیه میشه(Ubiquitous Language). پس الان مشکل را میدونیم و به صورت مشترک مستند سازی های اولیه انجام شده. حالا قرارداد و مسائل مالی بین کارفرما و پیمانکار رو حل میکنیم و میشینیم سر کد نویسی.اول باید دامنه رو ایجاد کنیم(Domain). برای این مسئله یک دامنه اصلی ایجاد میکنیم. و حالا مسئله را به مسائل کوچیکتر میشکنیم تا زیر دامنه ها(Sub Domain) ساخته بشند. اینکار رو اینقدر ادامه میدیم که مسئله بزرگ به کوچکترین مسائل تبدیل بشه.دقت داشته باشید که زیاد کوچک شدن مسئله باعث از بین رفتن صورت اصلی سوال نشه. در واقع انتخاب  sub domain ها یک موضوع کاملا نسبی است، به تیم بستگی دارد و هیچ قاعده و قانون ثابتی ندارد.خب حالا باید با استفاده از زبان مشترک پیاده سازی زیر مسئله ها انجام بشه. با استفاده از زبان برنامه نویسی مناسب و دیتابیس خوب این کارها را انجام میدیم.در بین زیر مسئله های مواردی هستند که مشترک بین همه استفاده میشند یا مواردی که برای پشتیبانی از بقیه ایجاد میشند و برای مشکل خاصی برنامه نویسی نشدند و عمومی هستند. به این موارد دامنه پشتیبان و دامنه عمومی (Supporting Domain و Generic Domain) گفته میشه.روند کلی کار به این صورت میشه که کار بزرگ به کارهای کوچک تقسیم میشه. هر کاری با استفاده از متد برنامه نویسی مورد نظر(مثل TDD) پیاده سازی میشه. نتایج کارهای کوچک تجمیع میشند و نتیجه نهایی به دست میاد.روند کلی کاردر این بین لایه هایی هم ایجاد میشند که برای جلوگیری از ارتباط مستقیم بین بقیه و واسطه گری استفاده خواهند شد(Anti-Corruption Layer).اولین چالش ارتباط بین زیر مسئله ها با هم یا ارتباط بین مسئله های اصلی با هم هست. چند نوع ارتباط وجود داره:روش Seprate Waysروش Customer-Supplierروش Conformistروش Partnershipروش Anticorruption Layerروش Shared Kernelروش Published languageروش Open Host Serviceبا ترکیب این روش ها میتوان ارتباط بین زیر مسائل را حل کردمن محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Sat, 29 Oct 2022 08:30:19 +0330</pubDate>
            </item>
                    <item>
                <title>فضا بده بهم(نق نامه)</title>
                <link>https://virgool.io/@emprism/%D9%81%D8%B6%D8%A7-%D8%A8%D8%AF%D9%87-%D8%A8%D9%87%D9%85%D9%86%D9%82-%D9%86%D8%A7%D9%85%D9%87-dkz2z1bqthck</link>
                <description>مسئله مهمیه!! ماجرا از این قراره که کنار هم بودن زیباس و جذابه. زیادی کنار هم بودن میشه سیریش شدن. همینطور که تو مهمون داری و میخوای با مهمون هم جنست تنها باشی، منم دوست دارم با دوستان هم جنسم تنها باشم. نیاز دارم و نیاز داری که گاهی نباشیم. این معنیش جدایی و خیانت و دعوا و چیزهای بد نیست. این صرفا رفع نیاز هاییه که از دست تو برنماد رفعشون کنی.بردمش اورژانس برای دا درد شدیدی که داشت. مثل پروانه دورش میچرخیدم. قبل از اینکه دکتر  بگه براش همه چیز محیا کردم. کفش میخواست، قبل از اینکه پرستار براش دمپایی پیدا کنه کفشاما بهش دادم که بپوشه. ولی از یه نقطه ای نیاز داشت تا یه هم جنسش کنارش باشه و اون از این درد خبر داشته باشه. دوستش اومد و من رفتم با فاصله مواظب بودم تا اگه نیاز بود برم کمک. و بودن به هم جنسش باعث شد راحتتر با دردش کنار بیاد و خوب بشه. این به این معنا نیست که من مشکلی دارم. فقط این حقیقتا یاد آور میکنه که بعضی وقتا من نمیتونم بعضی چیزها را رفع کنم. و این موضوع کاملا دو طرفس.من گاهی نیاز دارم سوار دوچرخم بشم و پا بزنم و بعد از چند ثانیه وارد دنیای خودم بشم و با خودم مسائلم را حل کنم. یا تنهایی برم کافه و خودم را به یه چایی مخصوص دعوت کنم. یا با دوستان هم جنسم برم بیرون و صحبتهای خاص خودمون را بکنیم، شوخی هایی از جنس متفاوت، از چیزایی بگیم که برای بقیه مسخرس ولی برای ما مهمه. و این به معنی دوست نداشتن یا خیانت نیست.بعضی وقتا بهم فضا بدیم. این فضا ندادن باعث فراری شدن میشه. باعث دورغ گفتن میشه. باعث انجام دادن کارای مخفیانه میشه. باعث حساسیت بیشتر میشه. باعث فضا ندادن بیشتر میشه. باعث دروغهای بیشتر میشه. باعث مخفیکاری بیشتر میشه. باعص حذف حریم خصوصی و دخالت های بیجا میشه. و در نهایت باعث فرار کامل یه نفر از دست یه نفر دیگه میشه.میگفت رابطه مثل یه پرنده کوچولو تو مشت آدمه. زیادی فشارش بدی میمیره. البته که اگه زیادی هم رها بذاری فرار میکنه و گربه میخورتش. باید همه چیز به اندازه باشه. یه بار یکم فشار بده اگه جیغ پرنده در اومد آزادی هاش را تنظیم کن. پرنده ها دوست ندارن برن. ولی خورده شدن توسط یه گربه بهتر از مردن تو مشت کسیه که دوستش داری.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Fri, 04 Mar 2022 07:42:11 +0330</pubDate>
            </item>
                    <item>
                <title>هوش، طبیعیش چیه که مصنوعیش باشه؟</title>
                <link>https://virgool.io/@emprism/%D9%87%D9%88%D8%B4-%D8%B7%D8%A8%DB%8C%D8%B9%DB%8C%D8%B4-%DA%86%DB%8C%D9%87-%DA%A9%D9%87-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C%D8%B4-%D8%A8%D8%A7%D8%B4%D9%87-vcqvsjh7gz0j</link>
                <description>ارشد که قبول شدم رفتم و فکر میکردم الان یه مشت ربات های عجیب و غریب میذارن جلومون و میگن این یعنی هوش مصنوعی، یا تمام چیزهایی که بلدم دیگه به درد نمیخوره آخه هوش مصنوعی یه چیز عجیبیه که هوش من آدمیزاد بهش نمیرسه و خلاصه داشتم تو ابرا سفر میکردم. ناگهان پرده بر افتاد و دیدم اینا یعنی چه؟هوش مصنوعی کلا دو قسمت مهم داره: ۱- چجوری آدم خوبی باشیم ۲- چجوری آدم بهینه ای باشیم.شاید باورتون نشه ولی هوش مصنوعی پیاده سازی هوش طبیعی بود. طریقه آدمیزادی فکر کردن. سالهای سال من وقتی میخواستم برنامه نویسی کنم سعی میکردم مثل آدمیزاد فکر نکنم و مثل کامپیوتر فکر کنم. بعدها که با جاوا آشنا شدم فهمیدم باید مثل یه بچه ۳ ساله فکر کنم که همه کاری میتونه بکنه ولی باید هر مرحله را تک تک براش بگی. این بچه ۳ ساله من یه چیزاییش مثل بچه های واقعی نبود. تجربه نمیکرد، یا نمیگرفت، پیامای مناسب نمیداد، هر دفعه بهتر از دفعه قبل نمیشد و در واقع همیشه ۳ سالش بود. هوش مصنوعی یعنی بزرگ شدن اون بچه ۳ ساله.حالا متوجه جمله بالا میشم. چجوری آدم خوبی بودن اصل هوش مصنوعیه. آدمی که تجربه کسب کنه و یاد بگیره و بتونه رشد کنه. هوش طبیعی در طی زمان چیزهای زیادی یاد میگیره. در نتیجه وقتی قراره یه کاری را انجام بده برای دفعه اول خیلی اذیت خواهد شد ولی با تکرار و تمرین میتونه بهتر و بهتر بشه.بیاید یه نیمرو درست کنیم درست کردن نیمرو را در نظر بگیرید: دفعه اول فقط میدونیم باید تخم مرغ شکسته بشه و ریخته بشه توی روغنی که توی ماهیتابه روی گازه همراه با نمک.(الگوریتم اصلی را میدونیم)احتمالا در شکستن تخم مرغ مشکل خواهیم داشت. یا نمیدونیم که روغن باید چقدر داغ باشه یا چقدر نمک اضافه کنیم. حرارت زیر ماهیتابه هم قطعا تنظیم نیست.(وضعیت اولیه در شرایط کاملا اتفاقی) نمک میریزیم و یادمون میمونه چقدر ریختیم.(خاطره) بعد نیمرو را میخوریم. ۳ حالت داریم: شوره که دفعه بعد کمتر نمک میزنیم، بی نمکه که دفعه بعد بیشتر نمک میریزیم و مناسبه که این وضعیت را حفظ میکنیم. این مرحله را اینقدر تکرار میکنیم و به خاطره میسپاریم تا اتفاق خوشمزه ای که میخوایم بیفته.(کسب تجربه با تکرار با استفاده از خاطره)تخم مرغ را محکم میزنیم به گوشه گاز و میشکنه و میریزه بیرون. دفعه بعد میزنیم کنار ماهیتابه و روغنا میریزه بیرون و تخم مرغ نمیشکنه. دفعه بعد با قاشق میشکنیمش و یه اتفاق دیگه میفته. میریم فیلم میبینمیم و میفهمیم که ۲ تا تخم مرغا به هم میزنیم تا یکیش بشکنه ولی خب مشکل تخم مرغ آخر همچنان باقیه. شاید باورتون نشه ولی همه ما تمام این مراحلا در طی زمانی انجام دادیم و باعث تغییر در نگرش ما شده و الان در بهینه ترین روش ممکن تخم مرغ را میشکنیم و جایی نمیریزیمش. ما بارها و بارها الگوریتمها و روشهای مختلف را تست کردیم و در نهایت روش خوب را انتخاب کردیم. و شاید باورتون نشه که این کار همچنان هم ادامه داره و ما هنوز داریم الگوریتمهای بهتر را کشف میکنیم و الگوریتمهای قبلی را بهینه میکنیم.(بهینه سازی)این داستانها در مورد دمای روغن یا میزان حرارت اجاق و اضافه کردن ادویه های دیگه هم صادقه. و خلاصه بگم که ساختار هوش طبیعیه شما با درست کردن نیمرو به عنوان یک مسئله رفتار میکنه و در طی زمان یاد میگیره و انجامش میده(تجربه)هوش مصنوعی یعنی آدم خوبه بودنمنظورم از لحاظ اخلاقی و منش و اینها نیست. اون مال علوم انسانیه و من سوادشا ندارم. منظور از آدم خوب آدمیه که تجربه کنه، از خاطراتش استفاده کنه، تجربه کنه و بهینه سازی انجام بده.نیمروهای خوشمزه زندگیش را بسازههوش مصنوعی روشی در علوم کامپیوتر است که با پیاده سازی رفتارهای هوش طبیعی قصد انجام کارها را دارد. برخلاف روش عادی برنامه نویسی که الگوریتمها هیچ رشدی در طی زمان نداشتند و خاطراتی وجود نداشت و نقطه شروع و پایان کاملا مشخص بودند(تصادفی نبودن) در هوش مصنوعی مثل هوش طبیعی شما تجربه کسب میکنید و به سمت بهینه ترین نقطه پایان حرکت میکنید و هر بار اجرا باعث رسیدن به یک خروجی متفاوت میشه که امیدواریم بهینه تر از دفعه قبل باشه.هوش مصنوعی مثل هوش طبیعی اشتباه میکنه و از اشتباهات خودش درس میگیره. مثل آدما به مسائل نگاه کنبارهای و بارها شنیدید که میگن کامپیوتر منطقیه و صفر و یکیه. آدم ها الزاما منطقی نیستند و فقط درست و اشتباه ندارند. منطقی هم که دارن دارای فقط ۲ حالت نیست و حالتهای بیشماری را داره. اگر کامپیوتر فقط صفر و یک باشه، آدم از صفر تا یک(همراه با همه اعداد اعشاریه بینش) هست. البته کامپیوتر در هر صورت ریاضی هست. چون باید بتونه محاسبات انجام بده و مقایسه کنه. نزدیک ترین شاخه علم ریاضی که میتونه احساسات و منطق آدمی را نشون بده آماره. مثلا شما باتوجه به لحن هایی که از یه نفر توی ذهنتون دارید، لحن حال حاضرش را مقایسه میکنید و متوجه میشید طرف عصبانیه یا شاده یا غمگین یا ....هوش مصنوعی هم مثل آدمها از حالت منطق باینری خارج شده و وارد دنیای آمار گرفتن شده. نسبت میبنده، مقایسه میکنه، نتیجه گیری میکنه، ارزیابی میکنه که چقدر نتیجه گیریش درسته و در صورتی که اشتباه کرده بود نتیجه گیری بعدیش را بهتر میکنه. ایینقدر که آمار در هوش مصنوعی نقش داره، کامپیوتر نقش ندارهآدمای سمی زندگیتا حذف کناین توصیه یه توصیه روانشناسی و دوستانه نیست. نگاه به اطلاعات نویز و دور از دسترسی در هوش مصنوعیه. رفتار آدمیزادانه ای که هوش مصنوعی هم تکرارش میکنه. داده هایی که خارج از عرف هستند یا به درد نمیخورن یا پیدا کردن ربطشون سخته را به عنوان نویز در نظر میگیره و به مرور زمان ارزششون را اینقدر کم میکنه که حذف بشن. در نظر داشته باشید که هوش مصنوعی در لحظه به این نتیجه نمیرسه که یه داده را حذف کنه و با کم رنگ کردن اون داده باعث حذف شدن تدریجی اون داده میشه.هوش مصنوعی شبیه سازی هوش طبیعیههوش طبیعی نه فقط در انسانها بلکه در تمامی موجودات وجود داره، و هوش مصنوعی خوب یعنی پیاده سازی بهتر اون هوش طبیعی. مثلا کلونی مورچه ها، شبکه های عصبی، نظریه تکامل داروین(الگوریتم ژنتیک)، مسیر یابی ماهی آزاد، منطق فازی در تصمیم گیری انسان و ....نکته جالب هوش مصنوعی اینه که با دین و عقاید خرافی کار نمیکنه و واقعیت های علمی و آماری زندگی هوش های طبیعی را در نظر میگیره. برای همین هوش مصنوعی از طرف بیشتر جوامع به عنوان یه عنصر خطرناک در نظر گرفته شده. این علم اثبات میکنه که عقل و ماهیت تصمیم گیری در هوش های طبیعی چجوری کار میکنه و چه اتفاقات هورمونی یا عصبی ای باعث اون تصمیمات میشه.هوش طبیعی وحشی میشه، پس هوش مصنوعی هم وحشی میشهبا توجه به اینکه هوش طبیعی در تصمیماتش ممکنه تصمیمات هیجانی و خشم آلود بگیره و هوش مصنوعی پیاده سازی هوش طبیعیه، پس هوش مصنوعی هم ممکنه خشم و هیجان را یاد بگیره و تصمیمات سریع و هیجانی بگیره. پس همینطور که آدمیزاد و کلا هوش طبیعی در طول زمان به این نتیجه رسیده که باید وحشی باشه، هوش مصنوعی هم اینکار را میکنه.هوش مصنوعی میتونه کارای عجیبی انجام بدههوش مصنوعی میتونه تجربه کنه، یاد بگیره، الگوریتمهاش را بهینه کنه، و رشد کنه. مثل هوش طبیعی. پس میتونه کارای عجیبی انجام بده، مثل هوش طبیعی. این کارهای عجیب میتونه باگهای هوش طبیعی را پوشش بده. و میتونه کارهایی که هوش طبیعی به خاطر محدودیت هاش انجام نداده را انجام بده.دنیا با هوش مصنوعی زیبا تر میشهمن محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Thu, 03 Mar 2022 09:22:41 +0330</pubDate>
            </item>
                    <item>
                <title>چجوری تحلیل کنم؟</title>
                <link>https://virgool.io/@emprism/%DA%86%D8%AC%D9%88%D8%B1%DB%8C-%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%DA%A9%D9%86%D9%85-s1kmilfsy750</link>
                <description>تو نوشته های قبلیم در مورد مراحل ساخت یک برنامه گفتم. اولین مرحله ارتباط و قرارداد با مشتری بود. اون را بعدها براتون میگم. ولی اولین مرحله فنی تحلیله.چجوری تحلیل کنیم؟ تحلیل چیه؟ چه خبرتونه؟تحلیل کردن در اصل ترجمه کردن حرفای مشتریه به زبان فنی. مشتری از چیزای زیادی حرف میزنه، ازآرزوهاش برای شرکتش، از هدفاش، از آیندش، از همسر و عیالش، از کارهای مسخره ای که همکارا کردن، از طریقه کسب و کارش، از دفترهایی که توش حساب و کتاباشا مینویسه و هزار چیز دیگه.وسط این همه حرفی که میزنه کلی چیز بدست میاد که ما بهش میگیم نیازمندی های پروژه. و البته به منابعی که داده های مورد نیاز سیستم از اونجا بدست میاد هم اشاره هایی میشه که بهش میگیم جریان داده. و همچنین روند کار و شرط هایی که توی کار اعمال میشه و تصمیم گیری میکنه که بهش میگیم بیزینس.خب پس ارکان اصلی مشخص شدن: نیازمندیها، جریان داده، شرایط بیزینس.دقت داشته باشید که خود مشتری نمیدونه چی میخواد. فقط میدونه که برای سر و سامون دادن به کسب و کارش نیاز به یه سیستم نرم افزاری داره.سر و سامون دادن به کسب و کارخیلی مهمه که هدف ما سر و سامون دادن باشه. ساده سازی باشه. نه اینکه تازه خودمون باعث بشیم کار سخت بشه یا یه چیز جدید به چیزهای قبلی اضافه بشه. کمک کنیم که سنگی از جلوی پای مشتری برداشته بشه. به این معنی نیست که به مشتری برای بهبود پیشنهاد ندیم یا کارش را بهتر نکنیم. ولی شرط اصلی بهتر شدن کار ساده شدن اون کاره.مستند سازیحالا که اینها مشخص شدن باید چیکار کنیم؟ آفرین!! مستند سازی کنیم. روند کاری و داده های مشتری را بنویسیم. به چه زبانی؟ به زبان مادری! بنویسیم که چه داده ای را از کجا میگیریم و چه شرایطی را اعمال میکنیم و به چه شکلی اون داده ها را تبدیل میکنیم به چیزی که مشتری میخواد. مشخص میکنیم که به چه داده و چه امکانی کدوم کاربرها دسترسی دارند و کدوم کاربرها دسترسی ندارند. قدیمتر ها توی مهندسی نرم افزار مباحثی در مورد Use Case ها وجود داشت و روند کارهایی که کاربر انجام میداد را به ترتیب نمایش میداد.بستر ارائهبستر ارائه سیستم را مشخص کنید. تحت وب یا موبایل یا سرور یا دسکتاپ. روی هر بستری یه سری امکانات وجود داره و یه سری محدودیت ها. برای هر بستری هم یک زبان برنامه نویسی وجود داره و در هر زبان برنامه نویسی برای هر بستری فریم ورکهایی تعریف شدند. سازوکار گرافیکی نرم افزار هم وابسته به بستر انتخابیه. تکنولوژی و معماری نرم افزاری که میخواید استفاده کنید هم وابسته به همه موارد گفته شده خواهد بود. بخش مهمی از تحلیل باید بر اساس این موضوعات باشه. مثلا نمیتونید امکاناتی که روی نرم افزار تحت وب هست را برای نرم افزار موبایل درنظر بگیرید.روی هر بستری یه سری امکانات وجود داره و یه سری محدودیت ها.دیتابیسداده هایی که داریم درموردش حرف میزنیم را باید یه جایی ذخیره کنیم. بستری که انتخاب کردید و به طبع اون زبان و معماری مشخص شده ای که دارید، حجم داده ای که در سیستم وجود خواهد داشت، تعداد کاربرانی که در یک زمان از سیستم استفاده میکنند، جدولی یا سندی بودن داده ها(SQL/NOSQL)، وابسته به تراکنش بودن یا نبودن جریان داده ها و ... باعث میشه که دیتابیس شما انتخاب بشه. بسته به نوع دیتابیس و ساختاری که داره نمودار اتصالات بین داده ها را رسم کنید. این هم یکی از بخش های اصلی داده خواهد بود. باید بتونید به داده های مورد نیازتون در سریعترین زمان ممکن و با کمترین تعداد مراجعه به دیتابیس دسترسی داشته باشید.شکل و ظاهردرسته که میگن ظاهر بین نباشید ولی اون مال جای دیگه ایه. اینجا باید ظاهر هم دیده بشه. ظاهر از دو لحاظ مهمه: اول اینکه رنگ و لعاب برنامه چه جوری باشه که کاربر سیستم از کار کردن باهاش لذت بصری ببره(خارجی ها به این میگن UI). و دوم اینکه جای هر چیزی توی صفحه کجا باشه تا کاربر با کمترین تلاش به هدفش برسه(خارجی ها برای این هم اسم گذاشتن و بهش میگن UX). مواظب باشید که برای راحتی زیاد کاربر خودتون زیادی ناراحت نشید. محدودیت های بستری که قراره نرم افزار روی اون ارائه بشه هم در نظر بگیرید.البته مرسومه که اول و آخر مستندات هم فهرست و مقدمه و معرفی تیم و اینها میذارن. اونها را میتونید با یه سرچ ساده ببینید.حالا شما مستندات فنی و بیزینسی لازم را دارید. به این چیزی که میبینید میگن تحلیل.من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Mon, 28 Feb 2022 11:35:03 +0330</pubDate>
            </item>
                    <item>
                <title>به من چه؟(نق نامه)</title>
                <link>https://virgool.io/@emprism/%D8%A8%D9%87-%D9%85%D9%86-%DA%86%D9%87%D9%86%D9%82-%D9%86%D8%A7%D9%85%D9%87-iay4tf7xgux9</link>
                <description>زیاد لازم میشه که از عبارت به من چه استفاده کنم. چه در زندگی کاری و تخصصی و چه در زندگی شخصی. فکر کنم بیشتر ذهنم درگیر چیزهاییه ک به من چه هستند. براش یه معادل ادبی پیدا کردمصلاح مملکت خویش خسروان دانندچنتا نمونه براش بیارم:به دوستم میگم بیا این مسئله را کار کن(کسب یک مهارت کاری با امکان پیشرفت و استخدام و مهاجرت) و فقط دوماه از کل عمرتا که داری میگذرونی را بذار سر این کار و نتیجش تضمین شده استفاده کن. قطعا من هم پا به پات کمکت میکنم. جواب اینه که من میخوام برم خودکشی کنم و بلاکت میکنم و همه چیزایی ک این سالها ساختم را میندازم دور ولی کاری که تو میگی را انجام نمیدم. به دوست دیگه ای میگم لوکیشنت را توی لینکدین بذار ایران و آماده برای کارت را فعال کن تا برات کار پیدا بشه و میگه کسی را تو اسفند استخدام نمیکنن و بعد بی احترامی بهم میکنه. البته شبش دیدم که همه اون کارا را کرده و من خوشحالم که کارش درست خواهد شد.به دوست دیگه ای میگم برو پیش مشاور و برای رفع مشکل بزرگت تلاش کن و اون با چیدن کلی حرف پشت سر هم منا مقصر میکنه و با زور میره مشاور و اونجا هم همه را بجز خودش مقصر میکنه و پیروز برمیگرده خونه.به دوست دیگه ای میگم نوشابه نخور و برای اینکه بدونی همراهتم منم نوشابه نمیخورم و باهام قهر میکنه جلو مهمونهای دیگه و قطعا مقصر و آدم بد داستان من میشم.به دوستی دیگری و دیگری و دیگری و ...واقعا به من چه خب؟حمایتگر بودن با نابود کردن عزت نفس فرد حامی متفاوته. شاید اصلا من حمایت نمیکنم. اعتقاد دارم تو هیچ جایی یک نفر مقصر نیست و دو طرف مقصرن. پس تقصیرا از خودم بر نمیدارم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Sun, 27 Feb 2022 19:47:29 +0330</pubDate>
            </item>
                    <item>
                <title>خارجی ها بهش میگن تست TDD</title>
                <link>https://virgool.io/@emprism/%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C-%D9%87%D8%A7-%D8%A8%D9%87%D8%B4-%D9%85%DB%8C%DA%AF%D9%86-%D8%AA%D8%B3%D8%AA-tdd-cae8ocrb0nut</link>
                <description>خارجی ها برای هر چیزی یه اسم اختصاری میذارن و میرن. وقتی اسمش کوچیکه آدم فکر میکنه چیز خاصی نیست ولی نگم براتون که چقدر بعضی هاش چقدر عمیقه. ورود شما را به عمق دنیای تست خوش آمد میگم.برنامه نویسی تست محور Test Driven Developmentاین یه سبک برنامه نویسیه نه تست کردن. من سوادی در مورد تست ندارم و برنامه نویسم پس قطعا در مورد تست چیزی ندارم که بگم. ولی حالا این چجوریه؟۱- شما با استفاده از تحلیل توابع اصلی را داخل اینترفیس مورد نظر مینویسی۲- داخل محیط تست نویسی این توابع را صدا میزنی و بدنه تست تموم میشه. اینکار بر اساس سلسله مراتب و روند کاریتون انجام میشه. مثلا برای ثبت نام یک دانشجو اول تابع دریافت اطلاعات دانشجو و بعد تابع اطلاعات تحصیلی و بعد تابع انخاذ واحد درسی و بعد تابع مالی و در نهایت ثبت اطلاعات در دیتابیس. این وسط هم کلی اعتبارسنجی های کوچیک و بزرگ و شرطای مختلف. در هر صورت روند کاری بر اساس بیزینس پیاده سازی میشه.۳- تست را اجرا کنید. قطعا قرمزه. درسته میدونیم قرمزه. ولی گویا دیدن این قرمز ها یه مرحله اصلی از این روشه.۴- حالا برید اون اینترفیس را پیاده سازی کنید. هدف از برنامه نویسی اینجا با قبل تفاوت کوچولویی داره. هدف از پیاده سازی اینترفیس پاس شدن تسته ولاغیر. در این کار با توجه به مقتضیات زبان برنامه نویسیتون و میزان تجربتون و فریم ورکی که استفاده میکنید کار را انجام بدید.۵- تست را اجرا کنید. اگه سبز شد که مبارک باشه بریم مرحله ۶. در غیر اینصورت دوباره برید مرحله ۴ و ایرادا رفع کنید.۶- حالا که تست سبز شد برید و ببینید که حتما کدهاتون بهینه باشن. اصول برنامه نویسی مثل سالید یا بستن اتصالاتتون به دیتابیس یا بقیه موارد را چک کنید. دقت کنید که ساختار کد نباید عوض بشه و فقط بهینش کنید.۷- دوباره تست را اجرا کنید که خراب نشده باشه. اگه قرمز شد برگردید مرحله ۴.خب حالا که تموم شد شما برنامه ای دارید که درست کار میکنه و بهینس و تست هم شده.مواظب باشید زیاد درگیر تست نشید جوری که اصل برنامه نویسی از بین بره یا برای ۲ خط کد برنامه نویسی ۵۰۰ خط کد تست ننویسید.(خارجی ها چون خیلی با کلاسن به این کار میگن : Over-Testing)من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Sun, 27 Feb 2022 17:28:53 +0330</pubDate>
            </item>
                    <item>
                <title>تحلیل یک فروشگاه</title>
                <link>https://virgool.io/@emprism/%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%DB%8C%DA%A9-%D9%81%D8%B1%D9%88%D8%B4%DA%AF%D8%A7%D9%87-atndpzgkhs8l</link>
                <description>برای شروع نیازهای اصلی را میگیم:1- پنل کاربری 2- محصولات 3- دسته بندی محصولات 4- سبدخرید 5- واریز 6- نقش های مختلف(خریدار-فروشنده) 7- پنل مدیریتی 8- ویژگی های محصولات 9- انبار داری 10- حسابداری 11- تخفیف و کپن 12- پیشنهادات 13- نظرات خریداران قبلی 14- بنر تبلیغاتی محصولات 15- درگاه بانکی 16- ارسال و بسته بندی(لوجستیک) 17- مدیریت کارتهای بانکی 18-اطلاعات تماس 19- تبلیغات و اینستاگرام 20- گزارش انبارداری و گزارش حسابداری 21- گزارش مربوط به کمپین های تبلیغاتی 22- گزارش مربوط به روند فروش 23- داده کاوی مواردی که سلیقه کاربر در آن دخیل استیک سری از موارد بالا مربوط به پروژه ما نمی شود:این موارد توسط سازمان های دیگر پیاده سازی شده اند و من فقط از آنها استفاده میکنم. اصلا سایت من قابلیت پیاده سازی اینها ندارد17- مدیریت کارتهای بانکی 16- ارسال و بسته بندی(لوجستیک)یک سری از موراد بالا در فاز اول قابل پیاده سازی نیستند. حتی این موارد را میتوان به صورت برون سپاری به شرکتها و تیمهای دیگر سپرد: در ابتدای کار یک ماژول کوچک از این نیاز را پیاده سازی میکنم تا در آینده و فازهای بعدی آنها را کامل کنم:9- انبار داری 10- حسابداری 19- تبلیغات و اینستاگرامیک سری از موارد بالا مربوط به گزارش ها است. گزارش ها بر روی داده ها اتفاق می افتند پس تا زمانی که پروژه راه اندازی نشده و داده کافی وجود ندارد نمیتوان در مورد اینها نظری داد. برخی از این گزارش ها هم وابسته به زمان خاص و پیاده سازی صرفا برای یک دفعه هستند:20- گزارش انبارداری و گزارش حسابداری 21- گزارش مربوط به کمپین های تبلیغاتی 22- گزارش مربوط به روند فروش 23- داده کاوی مواردی که سلیقه کاربر در آن دخیل استیک سری از موارد کاملا گرافیکی هستند و باید با نظر قطعی گرافیست و طراحان تیم پیاده سازی بشوند:14- بنر تبلیغاتی محصولات 19- تبلیغات و اینستاگرامحالا میتوانیم موارد بالا را دسته بندی کنیم و موارد مربوط هم را در دسته های مشخص وارد کنیم:سیستم کاربری: 1- پنل کاربری 6- نقش های مختلف(خریدار-فروشنده) 18-اطلاعات تماسکالاها: 2- محصولات 3- دسته بندی محصولات 8- ویژگی های محصولات  13- نظرات خریداران قبلیفرآیند خرید:  4- سبدخرید 5- واریز 11- تخفیف و کپن 15- درگاه بانکیگزارشات و داده کاوی: 20- گزارش انبارداری و گزارش حسابداری 21- گزارش مربوط به کمپین های تبلیغاتی 22- گزارش مربوط به روند فروش 23- داده کاوی مواردی که سلیقه کاربر در آن دخیل است  12- پیشنهادات مالی و دارایی: 9- انبار داری 10- حسابداریدر مورد جزئیات هر یک از موارد بالا بیشتر توضیح میدهیم:1- سیستم کاربری: سیستمی است که در آن اطلاعات مربوط به نام کاربری و رمز عبور و بازیابی و ورود و خروج کاربر در آن مدیریت می شود. هر کاربر دارای نقش هایی است که باعث می شود منو های مختلف به او نمایش داده شود. یعنی به کاربر خریدار یک پنل نمایش کالا نشان داده شود با گرافیک زیبا و جذاب ولی به مدیران و فروشندگان یک پنل مدیریتی همراه با گزارش و گرافیکی آرام بخش نشان داده شود. ثبت نام خریداران ابتدا صرفا با استفاده از شماره موبایل آنها خواهد بود. این حساب موقت کاربری قابلیت خرید نهایی ندارد، در صورتی که کاربر مایل به خرید نهایی باشد باید اطلاعات تکمیلی را نیز وارد کند. اطلاعات تماس کاربران فروشنده و خریدار جهت امور پستی همچنین اطلاعات تماس تلفنی و مشخصات فردی نیز ذخیره می شود. خریداران و فروشندگان می توانند حقیقی یا حقوقی باشند در صورتیکه حقوقی بودند باید اطلاعات مالیاتی آنها نیز ذخیره شود.2- کالاها: محصولات در دسته های مشخص که خود دسته به صورت سلسله مراتبی هستند دسته بندی مشوند. هر محصول می تواند مشخصات مربوط به خود را داشته باشد. هر مشتری میتواند در مورد محصول نظراتی را ارسال کند. این نظرات به دو دسته نظر و پرسش تقسیم می شوند که پرسش ها دارای پاسخ از طرف مدیران یا فروشندگان است. هر نظر میتواند دارای امتیاز نیز باشد که در رنج صفر تا 10 ذخیره می شوند. نظرات مثبت با علامتی سبز رنگ و نظرات منفی با علامتی قرمز رنگ مشخص میشوند. افراد دیگر نیز متوانند نظرات را تایید یا رد کنند(لایک و دیسلایک).در فاز اول تعداد موجودی کالا نیز به صورت ساده و بدون انبار داری ذخیره می شود و قابل شارژ میباشد. در آینده با اتصال به سیستم انبارداری این مورد حذف خواهد شد، در صورتی که کالایی موجودی صفر داشته باشد قابلیت خرید ندارد. قیمت هر کالا نیز در این جا نگهداری میشود. اگر از یک محصول انواع مختلفی وجود داشت(مثلا رنگهای مختلف) همه آنها یک جا نمایش داده میشوند ولی به کاربر اجازه انتخاب نوع خاص داده میشود. قطعا قیمت و موجودی انبار هریک از این محصولات مربوط به خود آن است.3- خرید: برای خرید محصولات موجود در انبار(موجودی آن بیشتر از صفر باشد) توسط کاربر فعال(کاربری که اطلاعات تماس و آدرس خود را وارد کرده باشد) مشخص میشوند. به صورت پیش فرض همه محولات با تعداد یک عدد در سبد خرید می آیند. در این سبد خرید در مرحله بعدی باید بتوان تعداد هریک محصولات مورد نظر کاربر را افزایش یا کاهش داد. این افزایش باید کمتر از موجودی انبار باشد. در صورتی کاهش مقدار صفر گرفت از سبد خرید حذف شود. در صورت تایید کاربر باید مجموع مبلغ سبد خرید به کاربر نمایش داده شود. همچنان سبد خرید قابلیت ویرایش(افزودن و کاستن کالاهای موجود در سبد خرید) دارد. در این فرم از کاربر کپن تخفیف درخواست میشود. در صورتیکه کاربر کپن معتبری داشته باشد مبلغ یا درصد تخفیف از مجموع مبلغ سبد خرید کم می شود و مبلغ نهایی به کاربر نمایش داده میشود. از کاربر پرسیده میشود آیا مایل به انجام پرداخت می باشد. در صورتی که تایید کرد بقیه مراحل به درگاه بانکی سپرده خواهد شد. درگاه بانکی بعد از عملیات نتیجه را برمیگرداند. اگر نتیجه موفقیت آمیز بود دیگر سبد خرید قابل ویرایش نخواهد بود. در غیر اینصورت همچنان مراحل قابل تکرار است. در صورتی که موفقیت آمیز بود فعلا تا قبل از پیاده سازی سیستم حسابداری صرفا مبلغ دریافتی همراه با زمان پرداخت و کاربر پرداخت کننده و شماره فاکتور در جدولی ذخیره خواهد شد. از موجودی تمامی کالاهای موجود در سبد کالا نیز به تعداد فاکتور شده کم می شود. بقیه مراحل لوجستیک توسط نیروی انسانی فروشگاه جهت بسته بندی و ارسال انجام خواهد شد. بخش نظرات روی کالاهای موجود در فاکتور برای کاربر خریدار باز میشود و از این ببعد این کاربر قابلیت ارسال نظر روی کالاهایی که خریده است را دارد. سبدهای خرید در لحظه ایجاد با وضعیت فعال نشانه گذاری می شوند. بعد از تراکنش مالی وضعیت سبد خرید به پرداخت شده تغییر میابد. در صورتی که مدت 3 روز از ایجاد سبد خرید بگذرد و پرداخت انجام نشود، سبد خرید به وضعیت انصراف در می آید.4- گزارش ها و داده کاوی ها: این باشه برای بعدا.5- مالی و دارایی: سیستم حسابداری و انبار داری به صورت کامل باید توسط تیمی دیگر تحلیل و پیاده سازی شود. به صورت موقتی اطلاعات اولیه در جداولی ذخیره خواهند شد. این نیز باشه برای بعدا.مرحله بعدی باید این موارد به صورت نمودار های موجودیت رابطه (Entity-Relation-Diagram ERD) رسم شوند. یک عدد وایت برد آنلاین یا یکی از نرم افزار های رسم ERD را اجرا کنید و رسم آنرا شروع کنید.هر چیزی که در مورد آن داده ای ذخیره می شود یک موجودیت است. لیست موجودیت با توجه به توضیحات بالا عبارتند از:1- سیستم کاربری: کاربر-نقش کاربری-منو-اطلاعات تکمیلی-اطلاعات تماس-اطلاعات مالیاتی مشتریان حقوقی2- کالاها: محصول-دسته بندی-مشخصات محصول-نظر-انواع کالاها-ویژگی برای انواع کالا3- خرید: سبدخرید-کپن تخفیف-اطلاعات درگاه بانکی-اطلاعات درخواست هایی که به بانک میفرستیم-اطلاعات نتیجه از بانک-تراکنش مالیدر نمودار ERD برای هر یک از این موجودیت ها یک مستطیل رسم می شود. سپس این موجودیت به هم متصل میشوند. چهار نوع اتصال داریم: یک به یک- یک به چند- چند به یک- چند به چند. اتصالات چند به چند باید به دو اتصال یک به چند و چند به یک تبدیل شوند. برای پیاده سازی بهتر اتصالات یک به یک نیز باید به صورت یک اتصال یک به چند در نظر گرفته شود. همه موجودیت به هم وصل نیستند. ولی همانطور که در قسمت توضیح هر سیستم گفته شد بعضی از موجودیت ها به موجودیت های دیگر وصل هستند: برای مثال سبد خرید به محصولات و کاربر خریدار وصل است.الهمانطور که که میبینید یک کاربر دارای چندین سبد خرید است ولی هر سبد خرید مربوط به یک کاربر می باشد. و همچنین میبینید که اتصال سبدخرید و کالا چند به چند است و باید اصلاح شود.به همین شکل کل سیستم را به صورت نمودار ER در میاوریم.من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Sat, 26 Feb 2022 20:12:06 +0330</pubDate>
            </item>
                    <item>
                <title>دستور پخت یک برنامه</title>
                <link>https://virgool.io/fboard/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%D9%BE%D8%AE%D8%AA-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-pobypoziisqp</link>
                <description>خب دوستان عزیزم امروز اومدم تا براتون طریقه پخت یک برنامه خوشمزه را بگم.مواد لازم:*- یک عدد مشتری که نیازش را بگه*- خودکار در رنگهای مختلف*- کاغذ*- گوش شنوا*- یک عدد لپ تاپ خوب*- تعداد زیادی موسیقی و پادکست و اینجور چیزها*- قهوه یا چایی یا آب یا هر نوشیدنی دیگه ای که دوست دارید*- مواد قندی*- یک مقدار زیادی هنرهای گرفتن پول کار از مشتری*- سلیقه گرافیکی*- هنر پیاده سازی سلیقه گرافیکی*- یک ابزار برنامه نویسی + پایگاه دادهخب دوستان برای شروع اول برید و با مشتریتون صحبت کنید. حتما حتما یادتون نره که قرارداد های لازم در خصوص بیمه و مالیات و روش های پرداخت و تاریخ ها ببندید.در مرحله بعدی گوش شنوا و خودکارهاتون و کاغذهاتون را همراه با مشتریتون بریزد توی هم و حسابی هم بزنید و ورز بدید. با اینکار باید تمام نیازهای مشتری به دست بیاد و دقیق و مشخص باشه.مشتری ها خودشون هم نمیدونن چی میخوان، پس این مرحله را با صبر و شکیبایی زیاد انجام بدید.با استفاده از ابزار های مستند سازی یا تایپ عادی ترجیحا تحت وب مصل گوگل داک بشینید و نیازها را تایپ کنید و مستند کنید و روال ها را مشخص کنید. برای هر نیاز هم زمان تحویل دادن را برای خودتون و مشنری تعیین کنید. این مستند را هم به امضای طرفین برسونید.با توجه به ماهیت پروژه و تخصص خودتون زبان برنامه نویسی را مشخص کنید.هیچ زبان برنامه نویسی در جهان وجود ندارد که به درد همه چیزی و همه نیازها بخوره.بسته به نیازتون و بستری که قراره برنامه ارائه بشه(تحت وب یا دستکتاپ یا اندروئید یا ...) زبان برنامه نویسی و تکنولوژی های مورد استفاده را انتخاب کنید.با توجه به زبانی که انتخاب کردید و تکنولوژی ها و فریم ورکی که قراره باهاش کار کنید، دیتابیس یا همون پایگاه داده را هم مشخص کنید. امکان داره که برنامه ای وجود داشته باشه که از دیتابیس های موتور دار بزرگ نخواد استفاده کنه و صرفا از فایلها استفاده کنه یا اصلا نیازی به دیتابیس در هر اندازه ای نداشته باشه.حالا با استفاده از سلیقه گرافیکی و نیاز مشتری و ... بیاد و یک طراحی گرافیکی از محصول نهایی بسازید. این را هم میتونید با استفاده از ابزارهایی که وجود دارند پیاده سازی اولیه کنید و به تائید مشتری برسونید و ازش امضا بگیرید.حالا اون ظاهر گرافیکی را پیاده سازی کنید و به هسته نرم افزارتون وصل کنید و با استفاده از هسته نرم افزار به پایگاه داده وصل بشید.خارجی ها به این معماری میگند MVCگاه گداری هم یک نمونه قابل مشاهده به مشتری ارائه بدید. البته من خودم تجربه کردم و اینکارا انجام نمیدم ولی زیاد با مشتری در ارتباطم تا بدونه داره کارش پیش میره. اگر قسمتی به طور کامل پیاده سازی شد اون را به مشتری نشون میدم و حتی اگه قابل تحویل دادن باشه برای تست و ارزیابی زمان اجرا تحویل تستر ها یا مشتری میدم.کلا مرحله تست خیلی خیلی مهمه. بعضی از خارجی ها اول تست را مینویسن بعد برنامه را! یعنی اینکه میگن من انتظار دارم وقتی برنامه اجرا شد فلان کار را انجام بده و بعد میگن حالا برو پیاده سازی کن برنامه ای را که این کارا انجام بدهدر فرهنگ برنامه نویسی به این معماری میگن TDD. خلاصه که تست چه اول باشه و چه آخر خیلی مهمه. در حین تست قطعا ایرادات برنامه باید کشف و حل بشه. تجربه میگه که تست را به مشتری نده، چرا؟ چون برنامه ایراد دار را میبینه و میخوره تو ذوقش.خب حالا که برنامه تست شده و خوشگل هم هست و مطابق نیاز و درخواست مشتریه، باید چکار کنیم؟سروش کنیم. بسته بندی لازم انجام بشه و جایی که راحت بتونید هم پشتیبانیش کنید و هم مشتری ازش استفاده کنه قرار بدید و تحویل مشتری بدید. اگه تحت وبه با توجه به زبان و تکنولوژی سرور و وب سرور و اینهاش را تهیه کنید. و مبارک باشه. برنامه شما آمادس. تا اینجاش که واقعا آشپزی نبود. با پولی که از مشتری میگیرید برید یه رستوران خوب و یه غذای خوشمزه بخورید.ممکنه که برنامتون مشتری نداشته باشه و برای خودتون تولیدش کرده باشید. پس قاعدتا شما مشتری خودتونید. و دقیقا همه چیزهایی که در مورد مشتری هست در مورد خودتون هم رعایت کنید.من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Thu, 24 Feb 2022 09:35:05 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت برنامه نویسی در دانشگاه و دنیای واقعی</title>
                <link>https://virgool.io/Solidity/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87-%D9%88-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D9%88%D8%A7%D9%82%D8%B9%DB%8C-vuwmsydcshcs</link>
                <description>یادمه که ترم اول، اولین کلاسی که رفتم مبانی برنامه نویسی و پاسکال بود. چی درس میدادن؟ فلوچارت و پیاده سازیشون در زبان برنامه نویسی پاسکال! چه اتفاقی افتاد؟ من با 5 سال تجربه برنامه نویسی دلفی درس را افتادم با نمره 3 از 20.خاطره مشترک من با همه افرادی که با تجربه کار وارد دانشگاه شدند و درس برنامه نویسی را مفتضحانه افتادند.به نظرتون چرا اینجوریه؟یادمه شرکت زدم و تعدادی از نخبگان دانشگاه ها را در مقطع ارشد دانشگاه استخدام کردم. انتظار داشتم لااقل اینها بلد باشن یه برنامه ساده بنویسن. از قضا حتی بلد نبودن که ۲ تا شرط تودرتو را بنویسن. همشون میدونستن لیست پیوندی داریم و آرایه چیه، ولی حتی نمیتونستن یه آرایه را تو محیط برنامه نویسی بیارنش و بهش مقدار بدن.اینم خاطره مشترک من با همه افرادی که شرکت زدن و برای اولین گزینه رفتن از دانشگاهیان تحصیل کرده نخبه نیرو آوردن تا شرکت مشکل نیرو نداشته باشن.به نظرتون چرا اینجوریه؟به نظر من چنتا دلیل داره: من خودم ارشد هوش مصنوعی دارم با استادی که بالاترین رتبه علمی در کشور توی موضوع هوش مصنوعی داره. ولی من توی کلاسهای ایشون یادگرفتم که مسايل 100 معادله 100 مجهول را بهیه حل کنم. توی بقیه درسهام چه کارشناسی و چه ارشد هم همین بوده. من توی دانشگاه درس پایگاه داده پاس کردم ولی فقط به صورت تئوری و ریاضی. یا ساختمان داده یا طراحی الگوریتم یا شبکه یا ..... از روزی که دارم برنامه نویسی میکنم تا حالا هیچ کدوم از این مسائل به کارم نیومده و نخواهد اومد.توی درس برنامه نویسی که مهمترین درس برای دانشجوی رشته کامپیوتر چی درس داده میشه؟ زبان برنامه نویسی سی یا پاسکال. اخیرا شنیدم که جاوا و پایتون هم درس داده میشه. خب من به عنوان آدمی که سالهای ساله که برنامه نویسی میکنم میدونم که زبان صرفا ابزار کاره و مهم نیست. مهم قسمت دوم این دروسه، مسائل و تمرین هایی که داده میشن. همه ما بارها برنامه نوشتیم که ریشه دوم یک معادله را با ورودی های a و b و c را محاسبه کرده. آیا واقعا بجز حفظ کردن ۷ ۸ خط کد کار دیگه ای هم کردیم. بهتر نبود به جای اون ها لااقل یکسری مسئله به درد بخورتر یاد داده میشد؟ لااقل مباحثی آموزش داده میشد که بعدا با ادامه دادنش بشه وارد دنیای برنامه نویسی شد. همه دانشجوها بعد از گذروندن این درسها برنامه نویسی را میبوسن میذارن کنار. این موضوع در مورد درسهای مهندسی نرم افزار و شبکه هم صادقه.داشتن تصور اشتباه از برنامه نویسی اصلی ترین دلیل میتونه باشه. برنامه نویسی شاخه های مختلف و دلایل زیادی داره. هوش مصنوعی، ریاضی، بهینه سازی، بازی، مدیریت داده و ..... همه بخش های برنامه نویسی الزاما حل مسائل پیچیده ریاضی در یک محیط خشک و مسخره سیاه و سبز نیست. واقعا یه جاهایی برنامه نویسی بسیار هم گرافیکی و زیباس و وظیفه اصلیش فکر کردن به جای انسانهاس بدون هیچ گونه محاسبه ای. مثلا نیاز مشتری ثبت اطلاعات تماس افرادیه که باهاش کار میکنن. بدون هیچ معادله ریاضی و در یک محیط زیبا و کاربردی.برنامه نویسی یک هنره و نه یک فن. چرا این حرفا میزنم؟ چون شما باید بتونید صدها چیز متفاوت در دنیای واقعی و مجازی را به بهترین شکل ممکن کنار هم بچینید و ازش خروجی مورد انتظار را دریافت کنید. برنامه در دنیای امروز مثل یک نقاشی آروم آروم از ذهن برنامه نویس خارج میشه و میاد روی کیبورد و شکل میگیره. باید زیبا باشه. باید ایراداتش دیده بشه و رفع بشه. باید استفاده کننده خودش را راضی کنه.برنامه نویسی هم مثل رانندگی ۲ بخش داره و اولیش تئوری هست و بعدش عملیه. برای مهارت در برنامه نویسی نیاز هست که ساعتها و روزها و سالها تمرین کنید و مطالب تئوری که بلد هستید را دنیای واقعی استفاده کنید. و این نیاز به صبر و تلاش و ممارست و مطالعه داره.برای برنامه نویس شدن اول یادبگیرید نیاز خودتون از برنامه را به زبان مادری بگید و بنویسیداین جمله چیزی بود که در تمام سالهای دانشگاه هیچ وقت گفته نشد. و وقتی من به کسانی که باهام کار میکنند یا ازم یادمیگیرن یا ازم میپرسن این جمله را میگم صرفا مورد حمله قرار میگیرم که برنامه نویسی چیز دیگه ای و من نمیدونمش. در صورتی که اگر من یک برنامه نویس موفق هستم و سالهاس تجربه دارم همیشه کارم را با نوشتن فارسی نیازها و بسط اونها همچنان به زبان فارسی شروع میکنم و در نهایت در یک زمان کوتاهی اون نوشته ها را به زبان فنی خودم ترجمه میکنم و تحویل میدم.من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.</description>
                <category>سروش محمدی</category>
                <author>سروش محمدی</author>
                <pubDate>Tue, 22 Feb 2022 14:03:48 +0330</pubDate>
            </item>
            </channel>
</rss>