چند توصیه به برنامه نویسان مبتدی


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

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

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

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

در ابتدای راه، سعی کنید پروژه های کوچک برنامه نویسی برای خود مشخص سازید -مثلا طراحی صفحه ی تماس با ما در یک سایت- سپس به مرور زمان پروژه های پیشرفته‌تر و دشوارتر برای خود تعریف کنید همچون ساخت صفحه ی لاگین یک وب سایت با زبان‌های سمت سروری مثل پی اچ پی یا پایتون.

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

آشنایی با روش‌های دیباگ کردن کد
در حین کدنویسی، کمتر برنامه نویسی -از مبتدی گرفته تا کاملاً حرفه ای- را می‌توان یافت که باگ تولید نکند. به همین دلیل، یکی از اصلی‌ترین فرایندهایی که در کدنویسی می بایست مد نظر قرار دهیم روش‌های دیباگ کردن یا مشکل یابی کدها است. پیش از این هم توضیح دادیم که باگ ها در برنامه نویسی به چند دسته تقسیم می‌شوند که در ادامه خلاصه‌ای از هر کدام را شرح می دهیم:
- ارورهای سنتکسی: این دست ارورهای زمانی ایجاد می‌شوند که ما دستوری را به سورس کد خود اضافه می‌کنیم که برای آن زبان برنامه نویسی مد نظر تعریف نشده است!
- ارورهای سمنتیک: این دست ارورها زمانی ایجاد می‌شوند که کد نوشته شده از لحاظ سینتکسی درست است اما خروجی کد بر خلاف انتظارات برنامه نویس است مثلاً تقسیم کردن عدد 12 بر عدد 0.
- ارورهای منطقی: ارورهایی از این دست زمانی ایجاد می‌شوند که دستورات نوشته شده توسط برنامه نویس درست هستند و همان تاثیر مد نظر را باز می گرداند اما نتیجه اشتباه است!

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

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

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

ابزارهایی هم مثل Firebug برای مرورگر فایرفاکس وجود دارند که کمک شایانی به طراحان سایت در دیباگ کردن کدهایشان می‌کنند که به رایگان می‌توان آن را روی مرورگر فایرفاکس نصب کرد.

انتشار
مؤسس شبکه ی اجتماعی لینکدین -آقای راید هافمن- جمله ی جالبی دارد با این مضمون که «اگر شما از اولین نسخه ی نرم‌افزار خود حالتان بهم نخورد، شک نداشته باشید که نرم‌افزار خود را خیلی دیر به بازار عرضه کرده اید!» بسیاری از افرادی که تازه وارد دنیای برنامه نویسی می شوند، از این که اولین نسخه ی نرم‌افزار خود را به دیگران عرضه کنند ابا دارند چرا که دوست دارند اولین کارشان واقعاً حرفه‌ای باشد. در عمل، چنین چیزی امکان‌پذیر نیست و تا زمانی که شما نرم‌افزار خود را منتشر نکنید، باگ ها، مشکلات و نواقص آن معلوم نخواهد شد.

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

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

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

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

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

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

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

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

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

اگر هم مسائل شغلی و درآمدی را نادیده بگیریم، با یادگیری اصول برنامه نویسی شما از ذهنی تحلیلی برخوردار خواهید شد که علاوه بر لذت بردن از کدنویسی، در سایر بخش های زندگی هم می توانید تصمیمات به مراتب منطقی تر، اثربخش تر و بهتری بگیرید و در نهایت به فردی مبدل خواهید شد که از تفکر انتقادی برخوردار است یعنی مسائل را از زوایای مختلف سنجیده سپس تصمیم می گیرد که صرفا همین یک قابلیت بسیار ارزشمند خواهد بود!

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

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

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

 

ارادتمند
بهزاد مرادی
مدرس سکان آکادمی

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
amirsa
amirsa امیر هستم. یک توسعه‌دهنده فرانت‌اند
سلام.

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

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

بازم تشکر میکنم
ممنون
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
با سلام
بنده تو گوشی،توسط آی دی ای QPYTHON3،کلا پایتون کار میکنم.
میخواستم بپرسم،آیا میشه،با گوشی،واسه اندروید،اپلیکیشن نوشت با پایتون؟
اگر بلی،چه ابزارهای دیگری نیاز داره تا تو گوشی نصب کنم در کنار این IDE؟؟

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

دیدین این ویدیوها چندتا مزیت داره:

- یادگیری برنامه نویسی
- یادگیری پایتون
- آشنایی با یک ادم باحال و سرزنده

https://www.aparat.com/video/video/listuser/username/jadi/usercat/94189
baran
baran
سپاس هوال بهزاد گلک سپاس
بژی سرکوتن
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
با سلام خدمت شما عزیزان
سایتتون خیلی عالیست امیدوارم که همیشه موفق و پیروز باشید در پناه حق
mahdisms2020
mahdisms2020
ممنون از شما و تیم تون
پویا نظری
پویا نظریتوسعه‌دهنده‌ موبایل اپ، دانشجوی نرم‌افزار
خواستم این اجاره رو بگیرم که آیا مشکلی نداره این دوره رو چاپ کنم و یا PDF با ذکر نام منبع یعنی شما؟
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام خسته نباشید
امکانش هست که کل دوره رو pdf کنید
ammi1378@gmail.com
H.beig
H.beig
تشکر بابت مطالب عالی و ارزشمندتون