description

ازکجا شروع کنیم نوشته ای برای تازه کار ها

- 7 ماه پیش
توسط متین آپدیت شد
محمد نقلانی ( 49 تجربه )
7 ماه پیش

با نام و یاد خدا
با توجه به علاقه در زمینه برنامه نویسی امروز می خوام در خصوص تجربه های خودم صحبت کنم تجربه هایی که به صورت آزمون و خطا انجام دادم و احساس می کنم به درد خیلی از دوستان هم بخورد (البته می تونه فقط به صورت یه متن هم دیده بشده ! به قول یه دوست و برادر عزیزم به نام مجید ایمانی عزیز هر کتاب و مقاله ای ارزش یک بار خوندن رو داره پس امیدوار هستم این مقال ارزش چند بار خوندن رو داشته باشه ).
راستی یادم رفت خودم رو معرفی کنم من محمد نقلانی هستم از سال ۱۳۸۲ تو زمینه های مختلف کامپیوتر که فارسیش میشه رایانه فعالیت کردم و زمینه برنامه نویسی رو از سال ۱۳۸۸ به صورت حرفه ای دنبال کردم ۹۰ درصد مفاهیمی که یاد گرفتم به صورت خود آموز بوده علاقه شخصیم هم PHP هست . ولی جاوا و C# روهم کار کردم و از اندروید متنفرم ولی گوشیم اندرویدی هستش . راستی این رو هم بگم که من خدای غلط املایی هستم پس اگر غلط املایی دیدین من شمارو به خاطر اینکه روش های دیگر نگارش کلمات رو بلد نیستین می بخشم ( به دور از شوخی ببخشین اگر خیلی غلط و غلوط می نویسم )
حالا از این حرف ها یکم فاصله بگیرم و بیایم تو مسیر اصلی برای شروع برنامه نویسی باید از کجا شروع کنیم !
این سوال مدت ها ذهن من رو به خودش مشغول کرده بود واقعا هم جوابش سخت هستش برای همین احساس کردم که این مقاله میتونه به خیلی از دوستان کمک کنه .
برنامه نویسی یک غول بی شاخ و دم این دیدگاه خیلی از دوستانی هستش که می خوان تازه شروع کنن .
یه زمانی بود که وقتی میگفتی من برنامه نویس هستم طرف مقابل فکر میکرد با یه شخصی طرف هست که از مریخ ویا زهل وشایدم از اورانوس آمده ستا چشم داره ۱۲ عدد دست و کل بندنش به جای ماهیچه مغز داره و به صورت نامفهوم حر ف میزنه و جواب هر سوالی رو هم داره ( البته تو ایران شما با Css هم می تونی هک کنی و با صابون زندان می تونی مودم وای فای بسازی و باهاش فرار کنی فیلمش که اینجوری بود ) ولی الان این طور نیست هر کسی می تونه ادعای برنامه نویسی کنه ، ولی مرد میدان کسی است که اصول رو بدونه و به صورت اصولی کار کنه برای دونستن این اصول واقعا باید چکار کرد از کجا باید شروع کنیم ؟
یادمه زمانی که می خواستم برنامه نویسی رو شروع کنم هیچ تصوری ازش نداشتم فقط می خواستم شروع کنم  یه کارت اینترنت خریدم البته با شماره ۹۰۹۲۳۲۳۹۰۹ هم کانکت میشدیم بعد از شنیدن صدای نستالژی قیژقیژ مودم Dial Up و ورود به دنیای مجازی که البته برای ورود بهش باید ۲ ساعت التماس میکردیم که اجازه صادر بشه و تلفن اشغال بشه ( تازه همیشه مقصر هزینه های بالای تلفن هم من بودم. وی از همان کودکی مظلوم واقع شد در خصوص من صدق میکنه ) شروع به سرچ در گوگل کردم یا این کلمات :

  • چگونه برنامه نویس شویم
  • برم آموزشگاه کجا بهتر هستش
  • آموزش برنامه نویسی
  • برای برنامه نویس شدن باید چکار کرد و چیا یاد گرفت
    این سرچ ها هیچ وقت از ذهنم پاک نمیشه چون واقعا با این ها شروع کردم.
    بعد از این جست و جو ها تازه فهمیدم که برنامه نویس شدن اصلا الکی نیست خیلی راه سختی در پیش هست و با توجه به زبان های موجود خیلی بیشتر گیج شدم . یکم صبر ، یکم فکر ، یکم ترس و در آخر یکم سمج بازی بالاخره شروع کردم اول یه سی دی آموزشی از شرکت مانا سافت خریدم و شروع به یاد گرفتم ماکرومدیاDW که الان شده Adobe Dw کردم اولین جدولی که تو صفحات HTML ایجاد کردم شدم برنامه نویس جو جوری گرفت بود منو که بندگی یادم رفته بود رفتم پیش یه دوست ( ساسان خدابخش ) جوری باهاش حرف زدم که احساس می کردم دیگه باید یه سیستم عامل مبتنی جداول بنویسم ! چشمتون روز بد نبینه ضایعم کرد تا مدت ها WinRAR رو به عنوان سیستم عامل قبول داشتم  .
    خلاصه سرتون رو درد نیارم ساسان یه وب سایت بهم معرفی کرد به نام php.net گفت برای شروع این برات خوبه ماهم آمدیم توی این وبسایت و شروع کردیم به خودن و یاد نگرفتن با هزار بدبختی و سرچ یه وبسایت دیگه پیدا کردمی به نام IRANPhp.org و شروع کردیم به خوردم مغز کاربران وبسایت تا به جایی رسید که یک سری از دوستان اعتراض کردن که بابا می خوای یاد بگیری بگیر چرا انقدر تو بوق و کرنا میکنی ! بعد از این همه داستان تازه فهمیده بودم که چقدر راه رو اشتباه رفتم و اصلا اصولی کار نکردم حال دوباره آمدم نقطه صفر . کمکم راه خودم رو پیدا کردم و به زبان PHP علاقه پیدا کردم یادمه یه دوستی اولین راهنمایی که بهم کرد این بود Wamp رو نصب ، یه صفحه با پسوند PHP ایجاد کن کن بعد توش بنویس Echo “ Hello World”; بعد اجراش کن و جوابشو بده .کمکم انقدر تو این زبان پیشرفت کردم که لزت یاد گیریش چندین برابر شد هنوز هم دنبال یاد گرفتنش هستم و برام جذاب هستش .
    تا این جا هرچی گفتم خوب بود پس بدیا کجاش !؟
    مشکلات از اونجایی شروع شد که فقط بلد بودم PHP بنویسیم و اصلا بهایی یه HTML و یا Css و ... نداده بودم و تازه فهمیدم که چقدر اشتباه کردم و اصلا کار رو اصولی انجام ندادم .
    تا اینجا به نظر شما باید از کجا شروع کرد !؟
    با توجه به تحقیق هایی که خودم کردم برنامه نویس شدن راه ساده ای نیست شما باید اولی تصمیم بگیرین که تو کدوم زمینه از این دنیا می خواهید فعالیت کنید ؟
    این موضوع رو هم در نظر بگیرید که امکانش هست یکی که خیلی بیکاره پیدا شه که یه پایان نامه ، تز خفن برای دکتری و یا یه ایده خلاق تو زمینه های IT داشته باشه و یا یه زبان جدید ایجاد کنه و یا کلا زبانهای موجود رو متحول کنه پس این امکان وجود داره که یه تحول بزرگ در زمینه انتخابی ما بوجود بیاد پس باید همیشه به روز هم باشیم و در حین یادگیری از تغییرات و به روز شدن اطلاعاتمون غافل نشیم .
    فعالیت تو تمام زمینه ها میشه اقیانوسی با عمق یک سانتی متر ، خوبه که توانایی همه رو داشته باشیم و لی عالی تر هست که رو یک موضوع تمرکز داشته باشیم و همیشه اون موضوع رو بروز نگاه داریم «البته این نظر شخصی من هست خیلی هارو. میشناسم که پس از حرفه ای شدن در یک حوضه به حوضه جدید روی اوردن و تو اون زمینه هم حرفه ای شدن ».
    وقتی تصمیم گرفته شد و زمینه انتخاب شد باید شروع کنیم تا جایی که یادم هست خیلی جاها خسته شدم ( خسته نباشی دلاور ) ولی چون علاقه داشتم دست از یاد گرفتن برنداشتم پس از شما هم همین انتظار هست نباید روی علاقه و توانایی خودتون پا بزارید شما که این راه رو انتخاب کردین پس حتما توانایی این راه پر فراز و نشیب رو دارید . همیشه به بچه خوهرم میگم اگر می خوا بازیهم کنی حرفه ای بازی کن براش تلاش کن کاری که براش زحمت کشیده نشده باشه هیچ وقت برات ارزشمند نمیشه .

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

  • برای آموزش و یاد گرفتن از سایت ها و آموزش های مرجع قافل نشیم .
  • اگر دنبال کلیپ آموزشی خوب میگردیم حتما و حتما از آموزش های مفید و پایه ای استفاده کنیم خیلی از آموزش ها تجاری ده هستن ( اموزش باید ماهیگیری بادتون بده نه ماهی بده دستتون ).
  • اگر به مشکلی خوردیم اول فکر کنید بعد جست و جو و در آخر از دیگران کمک بگیریم .
  • قبل از جست و جو کردن به سراغ افرا کار بلد و حرفه ای نرید ( این دسته خیلی بد ضایع تون میکنن ۹۰ درصد لینک های انگلیسی می دن بهتون )
  • از تالار های گفت و گو استفاده کنیم ( nsic.ir، iranphp.org)
  • دست از تمرین و تکرار برنداریم تا تسلط به موضوع ها پیدا کنیم
  • عجول نباشی( این آخری بلای جون هر مومن هست که به سوی رسالت برنامه نویسی می آید راحت بگم دوتا کد زدین جواب داد فکر نکنید تمام شد لامصب خیلی این دنیا عمیق هستش یوهو زیر پاتون خالی میشه )

با توجه به این موضوعاتی که تا اینجا مطرح کردم بد نیست یه نکته ای رو یادآوری کنم :
در دنیای نرم افزار باید یاد بگیریم که حق مالکیت رو رعایت کنیم اگر من به این موضوع اعتقاد ندارم پس اگر فردا نرم افزاری که نوشتم و یا آموزشی که تهیه کردم به صورت کپی تو بازار یا اینترنت و ... دیده شد نباید ناراحت بشم به قول بزرگ دین هرچیزی که برای خود می پسندی برای دیگران هم بپسند .
دلیل این نکته هم این بود که بدونیم خیلی ها تو دنیا نرم افزار دارن فعالیت میکنن و زندگیشون با این راه می چرخه و شاید فردا ماهم جزئی از این دسته بشیم پس از الان شروع کنیم به نشر و توسعه این فرهنگ « خدایی خودم هم فکر نمی کردم توانایی این گونه سخن گفتن رو داشته باشم ، بروبچ حرفه ای برای تشکر ایمل ندن وقت چک کردن ندارم ! ».
اشتباه های مرگ بار در یادگیری
( کاش میشد تو نوشته ها موسیقی متن گذاشت )
از نظرمن اموزش رو نباید به صورت پروژه مهور یا محور شروع کرد می دونی چَرا ؟
چون که در اموزش های پروژه محور شما یاد میگیری یه وبسایت مثلا فروشگاهی رو طراحی کنی ولی با خیلی از توابع و یا کار برد های دیگر توابع آشنا نمیشی در اموزش های پروژه محرو شما تمام تکنیک های مثلا فروشگاه اینترنتی رو یاد میگیری و شاید تا اخر آموزش شما با خیلی از توابع ویا حتی یه حلقه هم رو به رو نشی و یا درک درستی پیدا نکنی از کاربرد حلقه ها و تفاوت هایی که باهم دارن و دارین طوطی وار کار رو ادامه میدین .
ولی در آموزش های پایه ای شما به ترتیب سرفصل های استاندارد رو می خونید و با هاشون آشنا میشید و زهنتون رو قلقلک میدیدن و خیلی ایده های بهتر می خوره تو ملاجتون حالا پس از این روند یه آموزش پروژه محور زهن شمارو مدیریت میکنه و کاربرد های عملیاتی آموزش قبلی رو متوجه میشید .
حالا درنظر بگیرید که شما قرار در مسابقه فرمول یک جهانی رانندگی یاد بگیرین این دقیقا از نظر من شروع آموزش با آموزش های پروژه محور هستش ( البته می تونید نظری غیر من داشته باشید در این مقاله من تجربه شخصی خودم رو دارم بیان میکنم )
یکی دیگه از دلایلم برای آموزش صحیح و شروع نکردن با آموزش های پروژه محور این هست که شما با پایه و اساس زبان مورد نظر و یا زبان های استفاده شده در اون آموزش به هیچ وجه آشنا نمیشید این یعنی چی در ادامه بهتو عرض میکنم . ببنید ( متن رو میگن نه من رو چون تصویریش هنوز نیامَده) شما به عنوان کسی که ادعا می کنه یک برنامه نویس هستش باید زیر و بم پیدایش زبانی که یاد گرفته رو بدونه چرا این زبان خلق شد ، خالقش کی هست ، سیر تکاملیش چی هست و ... حالا شما در نظر بگیر داری با یه آموزش پروژه محرو مثلا یه وبسایت فروشگاهی کارت رو شروع میکنی و هیچ اطلاعاتی نداری ، مدرس میگه نسخه جی کوری من x هستش و شما رفتی نسخه y استفاده کردی خودت رو حلق اویز میکنی کدت کار نمیکنه بعد میری نسخه x رو پیدا میکنی کار میکنه میگی اااااااا این نسخه من خراب بود مشکل رو پیدا کردم ولی اگر یه اطلاعات صحیح از زبانت داشته باشی دلیل اینکه این دوتا نسخه چرا فرق میکنن چرا این نسخه این عمل رو انجام داد و اونیکی نداد رو متوجه میشی و این به نظرمن فقط فقط در یاد گرفتن صحیح اون زبان هستش ولا غیر پس اگر با من هم نظر شدین حتما آموزشتون رو جوری شروع کنید که با علت ها و معلول ها جلو بررین نه با شاید ها .
مثل بارز این موضوع در PHP استفاده از تابع منسوخ شده mysql در اتصال به دیتابیس و کار روی دیتابس هست خیلی آموزش دیدم که هنوز دارن با این تابع کار میکنن بعد دوست عزیزمون که داره آموزش می بینه یه هاست تهیه کرده و تو هاست با نسخه ۷ php ( شاید باورتون نشه ولی دیدم که طرف نهایت درکش از نسخه های بالاتر و به روز تر خوشکلی محیط بوده دلامصب مگه فتوشاپه... میگه هاست خریم با نسخه ۷ PHP محیط Cpanel خیلی فرق داره با محیط ۵.۲PHP ) از این تابع استفاده کرده وبعد رفته خودش رو کشته میگه من تمام کدهام دقیقا مثل آموزش بوده ( لامصب حداقل اسم متغیرات رو عوض کن بدونی می تونی اسم دلخواهم هم بزنی ) ولی سایتم بالا نمیاد و ارور میده در صورتی که با اندکی سواد پایه و شناخت نسخه ها متوجه میشدش که مشکل کجاس .
نظرشما دوستان رو به اشتباه مرگ بار بعدی جلب میکنم
تمرین نکردن و عجول بودن
تا جایی که من متوجه شدم واقعا بعد یک بار کار کردن با حلقه for درک میکنی کار این حلقه چیه و چکار هایی میشه باهاش کرد این حلقه ستا پارامتر داره یکی شمارنده ، دومی شرط و سومی افزاینده و یا کاهنده ولی بابا این چرا وقتی پیچیده میشه نمیشه درکش کرد نمیشه فهمید کارشو . دقیقا نکته همنجاس شما با یه موضوع ساده این حلقرو یاد گرفتی و به تمرین ساده هم کردی شدی خدای حلقه فور بعد بهت مگن برنامه ای بنویسید که با حلقه for یک مثلث متوازی الاضلاع که تو خالی هم باشه و اضلاع از ستاره تشکیل شده باشه رسم کنید (کاربر در دسترس نمیباشد ...) با تعجب فراوان خاموش میشوی و میگی مگه میشه انم با for . بله میشه اونم با for ولی نیاز به تمرین های زیادی داشته تا کاربرد این حلقه زیبارو درکر کرده باشیم .
پس هرچیزی که یاد گرفتیم رو باید در تمام حالت هایی که می تونیم ازش استفاده کنیم تمرین کنیم ( ۹۰ درصد حالت ها موقع تمرین قابل پیشبینی هست و چون تمام زهن شما روش تمرکز کرده پس ایده هایی به سرتون خطور یا ختور می کنه که لبخند بر لبانتون جاری میشه و واقعا لزت میبرین ).
در اوایل یادگیریم یا یه تابع تو PHP آشنا شده بودم به نام in_array() کابرد این تابع این بود که داخل ارایه رو بررسی میکنه ببینه مقداری که شما بهش دادین داخل آرایه هست مدتها کنج کاو این بودم که این تابع چجوری کار میکنه تو فرم های مختلف سوال می پرسیم که یکی بهم توضیحش بده یه دوستی راهنمایی عجیبی کرد گفت برو خوت یه تابع بنویس که همین کار رو کنه متوجه میشم ( از همین تیریبون به اون دوست عزیز اعلام میکنم اگر اون لحظه پیشم بودی الان به جرم قتل اعدام شده بودم ) واقعا برام این راهنمایی عجیب بود پیش خودم گفتم بابا این تابع رو خالقای این زبان نوشتن من که در حد انگشت کوچیکه اوناهم نیستم چجوری بنویسم جاتون خالی یه دو یا سه ساعتی با افکارم ور روفتم بعد گفتم خوب من که نوشتن تابع رو بلدم با حلقه for و یا foreach هم که میشه داخل آرایه ها رو پیمایش کرد، ااااا یه دستور دیگه هم داریم به نام if که شرط رو بررسی میکنه همه اینارو که کنار هم گذاشتم دیدم به به من خودم این تابع رو نوشتم و نیاز به خالق بودن این زبان هم ندارم و فقط موضوع با تمرین و تکرار و البته عجول نبود حاصل میشه .
دیگه بیشتر از این نه سرتون رو درد بیارم و نه با نحوهی نگارش دوم کلمات آشانتون کنم در آخر باید بگم در راه یاد گرفتن همیشه باید تشنه باشید و به این در و آن در بزنید و از همه مهم تر حق نشر و حق امتیاز رو هم در نظر بگیرید واقعا کساینی هستن که با نوشتن و ساخت آموزش و یا تولید یه نرم افزار زندگی میکنن هیچ وقت دلایل فوکاهی و یا این که بابا طرف یه برنامه نویشه میلیونر شده حق سازنده و تولید کننده رو ضایع نکنید .
امیدوارم تجراباتم هرچند اندک به درتون خورده باشه و وقتتون رو ضایع نکرده باشه .( اگر ضایع کرده بوده حلال کنید )
یا حق
محمد نقلانی بالسینی .

heather ( 160 تجربه )
7 ماه پیش

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

حجت ( 388 تجربه )
7 ماه پیش

ممنون جالب بود

رضانیازی ( 615 تجربه )
7 ماه پیش

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

sardar ( 96 تجربه )
7 ماه پیش

سلام ممنون از اینکه تجربیاتتون رو در اختیار ما گذاشتین
یه سوال شما گفتین تجربی یرنامه نویسی رو یاد گرفتین درسته ؟ من دانشجوی این رشتم ولی بیشتر خودم دنبال برنامه نویسی رفتم و علومش رو تو دانشگاه دارم میخونم . و به قول خود شما خوره هستم یعنی بشینم پا یه موضوع تا صب بیدارم میمونمو میخونم و کار میکنم ولی الان یه مشکلی دارم که ذهنمو به شدت مشغول کرده یک این که زبان های زیادی رو وررفتم و در نهایت علاقم رو سمت وب دیدن الان دارم php به خصوص فریمورک laravel و node.js به خصوص فریمورک express رو کار میکنم گفتم رو اینا عمیق شم . (گفته بودین تو متن رو یه موضوع عمیق شیم ) اما خب اومدم نمونه کد بزنم دیدم اِ باید ui هم طراحی کنم خب منم که عاشق fullstack شدن شروع کردم به کامل کردن دانشم در زبان های سمت کلاینت الان میدونم باید باهاشون چجوری کار کنم و چیا دارن و چه استفاده های میشه ولی همیشه یه ترس دارم یک اینکه زبان هارو کامل بلد نیستم شاید یه جور وسواس دارم شایدم مریضیه چون فکر میکنم باید درمورد همه چی همه تابع ها همه کدا رو بدونم نمیدونم درسته یانه این کارم !!!؟
از یه طرف به گذشتم نگاه میکنم میبینم کلا یک سالو نیمه چحوری میگم این زبان هارو بلدم تازه تو دوران دانشحویی ام اونم کارشناسی که وقت گیره منم کمال گرا و اصلا اهل پیچوندن نیستم .
به خودم گفتم برم کارآموزی فقط صرف تیکه کد نباشه یه پروژه بزنم اعتمادم به خودم زیاد شه ولی هیج جا پاره وقت قبول نکردن . الان من چیکار کنم خوندنو تیکه کد زدن و درواقع درگیری عمیق نداشتن که علمو زیاد نمیکنه میترسم اینایی ام که بخونم یادم بره . از یه طرف میگم بیام برا خودم پروژه تعریف کنم بعد یا خیلی پرو بالش میدم که بشه یه ایدش کرد یا میترسم میگم در حد چیزایی که بلدم باشه که خب درگیری ای ایجاد نمیکنه .
از یه طرف کلا یهو فکر میکنم اصلا چیزی بلدم میرم کد های حرفه ایا رو میبینم میگم خب میفهمم چیکار کرده و توابع چیه و الگوریتم چیه ولی ته دلم خالی میشه منم میتونم . نمیدونم. شاید باید یه پروژه سنگین بزنم یا نمیدونم
الان بهترین کار برا من چیه ؟؟؟ بشینم مفاهیم رو کامل تر کنم . داکیومنت های سایتای هر زبان رو معمولا نگاه میکنم
اما بازم یه جارتی نیست که مفاهیمو گفته باشه اسماً بازم اینجا ادم میترسه میگه نکنه مفهوم مهمی بوده و من ندیدمش .
فکر کنم دارم میرم سمت بیراهه اگه ...
چیکار کنم در حال حاضر بهترین راه باشه ؟؟؟

محمد نقلانی ( 49 تجربه )
7 ماه پیش

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

محمد نقلانی ( 49 تجربه )
7 ماه پیش

ممنون از نظرات امید بخش تمام دوستان

متین ( 32 تجربه )
7 ماه پیش

خیلییی ممنون از توضیحاتتون

برای ارسال پاسخ باید وارد سایت شوید