هرکسی که میخواهد کدنویسی را یاد بگیرد، این را میداند که هیچچیز قطعی درمورد آن وجود ندارد. شما با مشکلات و موارد غیرقابلانتظاری در این راه روبرو خواهید شد.
در طی 6 ماه گذشته، من زمان قابلتوجهی برای یادگیری برنامهنویسی با زبانهای مختلف صرف کردم. من مطالب بسیاری در ارتباط با روند کدنویسی حرفهایی و تبدیلشدن به یک برنامهنویس خوب را یاد گرفتم. ممکن است بعضی از آموختههای من برای شما هم در این مسیر مفید باشد. پس با من در این مقاله همراه باشید.
من متوجه شدم که مردم برای علاقهمند شدن به چیزهای قطعی به دنیا نیامدهاند. این یک خیال است و تا حد زیادی بستگی به چشمانداز شما از هدفتان، در حال حاضر دارد. هیچچیزی در کلاس علم کامپیوتر در زمان دبیرستان مرا جذب نمیکرد و بهاجبار در آن شرکت میکردم؛ اما الان که خودم دنبال آن رفتم، همهچیز کاملاً فرق میکند.
من شروع کردم به کشف اینکه بهتنهایی با روشها و گامهای خودم چهکارهایی میتوانم با برنامهنویسی انجام دهم. این موضوع بهطور کامل چشمانداز مرا تغییر داد. یادگرفتن کدنویسی با هر روشی که خودم دوست داشتم، بدون محدودیت زمانی و وجود یک معلم که مدام بگوید چهکاری انجام دهید، طرز فکر مرا تغییر داد. الان پتانسیل برنامهنویسی بالایی در خودم میبینم و از آن لذت میبرم.
احتمالاً در زمان دبیرستان تدریس معلم برای من جالب نبوده و یا اینکه از نظر ذهنی آماده یادگیری برنامهنویسی نبودم. بههرحال دلیل آن هرچه که بوده، این سخن کوتاه شخصی است که به شما در فهم بهتر گام اول کمک میکند:
اگر شما فکر میکنید که نمیتوانید کدنویسی کنید، بهتر است سعی کنید طرز فکر خود را تغییر دهید
تقریباً 4 ماه پیش، من در دوره آموزشی راکت شرکت کردم. من عاشق قسمت HTML و CSS شدم چون میتوانستم بفهمم که کد من در لحظه چهکاری انجام میدهد. فعل و انفعالی و بصری بودن آن، برای من عالی بود و در آن بخش تحت تأثیر قرار گرفتم.
اگرچه زمانیکه به بخش جاوااسکریپت رسیدیم، آنقدر تحت تأثیر قرار نگرفتم؛ اما بخش Syntax جاوااسکریپت را به اتمام رساندم، چون میدانستم که به آن نیاز دارم و درنهایت توانستم از پس تکالیف آن بربیایم.
من از این بخش وحشت داشتم چون مرا به یاد کلاس دبیرستانم میانداخت. بهجای از دست دادن انگیزهام، راکت را نگهداشتم و به سمت سایر منابع رفتم. با الهام گرفتن از بین برنامههای ساده مثل Tic-Tac-Toe و Tetris توانستم اولین برنامه خودم را بنویسم . با استفاده از این روش روی syntax جاوااسکریپت مهارت پیدا کردم. بیشتر آموزشها در حال حاضر از ES6 syntax و بعضی از روشهای معمول استفاده میکنند؛ بنابراین آنها را هم تمرین کردم.
من با این روش که خودم شروع به یادگیری برنامهنویسی کردم، کاملاً چشماندازم را تغییر دادم. دفعه دوم تغییرات بیشتری اعمال کردم، از آموزشهای متنباز (open source) به سمت آموزشهای کلاسی رفتم. گاهی تمام چیزی که شما برای ادامه دادن نیاز دارید، اِعمال تغییرات کوچک است.
درمورد آموزشها صحبت کردیم، اگرچه...
گودال آموزشی واقعاً وجود دارد
زمانیکه شما درحال یادگیری برنامهنویسی هستید، در ابتدا قطعاً نیاز به راهنمایی دارید که میتواند همان مستندات، دورههای آنلاین یا roocket باشد؛ بههرحال هیچکس همهچیز را از ابتدا نمیداند.
درنهایت شما میخواهید وارد دنیای واقعی شوید، بنابراین درمورد آن صحبت کنید و پروژه خود را آغاز کنید. اگر نمیتوانید این کار را انجام دهید، درواقع در یک گودال آموزشی افتادهاید.
من هم در چنین موقعیت مشابهی بودم؛ درواقع من هنوز هم فکر میکنم در این شرایط هستم. من چندین دوره آموزش برنامهنویسی را گذراندهام؛ اما وقتیکه شروع به انجام پروژه خودم میکنم کاملاً گیج میشوم. من همیشه به همان مستندات برمیگردم، که برای شروع کار به من کمک میکنند ولی بازهم احساس میکنم که نمیتوانم مانند آنها عمل کنم.
احتمالاً شما هم شبیه من هستید، در گودال آموزشی که ترکیبی از ترس و شک به خودتان است، گیر افتادهاید یا شاید فکر میکنید که هنوز هم بهاندازه کافی نمیدانید. بیرون آمدن از این گودال خیلی سخت است.
بهترین راه برای بیرون آمدن از این گودال این است که با چیزهای کوچک شروع کنید. کارکردن با کدی که در آموزش آمده است، چندان قابل تمجید نیست چون بهنظر میآید این کد کاملاً منظم ارائهشده است و دنبال کردن آن آسان است؛ اما من به شما تضمین میدهم که هرکسی که آن را نوشته است، زمانی بیشتر از شما صرف رفع نواقص آن و امتحان کردن راههای مختلف برای نوشتن آن کرده است.
به همین دلیل است که شما باید با چیزهای کوچک شروع کنید. بهجای تلاش برای نوشتن یک بازی کامل که بیشتر برنامهنویسان حرفهای آن را انجام میدهند، تلاش کنید کمی تغییر در برنامههای آنها ایجاد کنید. آنها را بهتر کنید یا حتی با توجه به مطالبی که یاد گرفتهاید، ویژگیهای جدید به آنها اضافه کنید. درنهایت شما میتوانید کار روی پروژههای خودتان را آغاز کنید.
آموزشهای دیگری هم وجود دارند که به شما میگویند قسمتی از یک پروژه را انتخاب کنید و آن را انجام دهید. این روش زیاد مفید نیست؛ اما من به شما توصیه میکنم که این کار را نیز انجام دهید. اگر از آموزشها انتظار دارید که دستتان را بگیرند و به شما یاد بدهند که از کجا شروع کنید، درواقع باید به دنبال کار و تخصص دیگری بگردید!!
من چیزهای زیادی از آموزش نوشتن کد بازی در Python با کتابخانه Pygame یاد گرفتم و در نوشتن بازیهای دوبعدی با یادگرفتن از آموزشهای افراد مختلف به پیشرفتهای خوبی رسیدم. بههرحال، در آن زمان هیچ منبعی برای برنامهنویسی بازیهای سهبعدی با Pygame وجود نداشت، مخصوصاً آن چیزی که من برای برنامهنویسی به آن نیاز داشتم.
چیزهایی که وجود داشتند، بالاتر از سطح من بودند؛ بنابراین من چارهای نداشتم جز اینکه برگردم و اصول اولیه مدلسازی سهبعدی را یاد بگیرم. هیچ آموزشی بهتنهایی برای مطالبی که من میخواستم وجود نداشت؛ بنابراین خودم دستبهکار شدم و بهاصطلاح دستهایم را آلوده کردم!
برنامهنویسی بیشتر یک تلاش خلاقانه است تا یک تلاش تئوری. شما میتوانید از کتابها و سایر منابع برای یادگیری استفاده کنید؛ اما درنهایت باید خودتان دستبهکار شوید. هیچکسی شمارا برای انجام پروژهتان راهنمایی نخواهد کرد؛ اما هرزمان که به مشکلی برخوردید میتوانید از دیگران کمک بخواهید.
سخت کار کردن را درنظر بگیرید و چندین ساعت روی پروژهتان تمرکز کنید، یا اینکه اگر شخصیتی از نوع Pomodoro دارید بهصورت چرخهای کار کنید و بین آن وقتی را برای استراحت درنظر بگیرید. مهم نیست از چه روشی برای شروع استفاده میکنید، مهم این است که درنهایت باید شروع به کارکنید. هرچه سریعتر پیش بروید، سریعتر به گودالها میرسید و شروع به برداشتن آن موانع از سر راهتان میکنید.
الان من به سخت کار کردن اشاره کردم، اگرچه...
سخت کار کردن یک اجبار نیست
از سخت کار کردن همواره بهعنوان بهترین روش برای اثرگذار بودن کاری که انجام میدهید، نام برده شده است. تمرکز کردن روی مطلبی به مدت چندین ساعت بدون حواسپرتی میتواند شمارا وارد یک جایگاه روان کند و باعث شود مانند یک نسیم روان بر کارتان بوزید! که این جایگاه بهعنوان یک ناحیه شناخته میشود.
غریزه اولیه این است که احتمالاً فکر میکنید کدنویسی شما کاملاً قابلاجراست.
بعد از تمام اینها، گرفتن پروژههای بزرگ نیاز به مقدار زیادی زمان و توجه به جزئیات دارد. ممکن است یک نفر بتواند کاملاً و قویاً روی هدف نهایی برای مدتی طولانی تمرکز کند.
اما من متوجه شدم که این مورد برای همه ضروری نیست. پس از یادگیری اصول، درواقع بیشتر از اینکه برنامهنویسی و یادگیری یک زبان ابزاری برای کار شما باشد، راهحلی برای مشکلات مختلف است. گیرکردن در یک مشکل اصلاً جالب نیست و تکرار مداوم آن میتواند زیانبخش باشد.
براساس تجربیاتم، متوجه شدم که بهترین راه برای حل مسائل برنامهنویسی، انجام دادن کاری در تضاد با سخت کار کردن است. زمانیکه من کد مینویسم، هر کاری را که میتوانم برای شکستن موانع کاری انجام میدهم. سپس یک زمان استراحت درنظر میگیرم و YouTube تماشا میکنم یا مقداری بازی میکنم؛ در واقع هرکاری که ذهن مرا از موضوع منحرف کند.
بازی کردن حین نوشتن کد؟ احتمالاً ایده بدی هم نباشد!
این کار باعث میشود که من کمی آرامش پیدا کنم و بخش ناخودآگاه مغز من در همین حال روی مسائل کار میکند؛ درست مثل زمانی که زیر دوش یک ایده عالی به ذهنتان میرسد. فاصله گرفتن از هر چیزی که تلاش میکنید به آن برسید، به ذهنتان کمک میکند که ایدههای بهتری را پیدا کند.
این راه برای افرادی با افکار سنگی مناسب نیست: آن دسته از مردم که میتوانند ساعتها روی پروژهشان کار کنند و بسیار هم بازدهی خوبی داشته باشند. این روش فقط برای من کار نمیکند و این ایده را با افراد زیادی درمیان گذاشتم. اگر سخت کار کردن برای شما جواب نمیدهد، روش تمرکز کمتر را امتحان کنید.
بهعنوان جمعبندی مطالب، مهمترین روش را اینجا به شما میگویم:
خودتان را با دیگران مقایسه نکنید
این نصیحت در هر زمینهای که رقابت بخشی از آن است، به کار میآید. وقتیکه نوبت به برنامهنویسی میرسد، افراد کارهای جالب و پیچیدهای انجام میدهند که به نظر میرسد سالها طول میکشد تا شما به آنجا برسید. در ظاهر بهنظر میرسد آنها این کار را آنقدر بهسادگی انجام میدهند که انگار برای آن کار ساختهشدهاند. درهرصورت اگر با یک توسعهدهنده درمورد واقعیات صحبت کرده باشید، میدانید که اینطور نیست. ویدئوهای «توسعهدهنده بودن شبیه چیست؟» را در YouTube تماشا کنید و آنها به شما خواهند گفت که باوجود چندین سال تجربه، برای رسیدن به اهدافشان سخت تلاش میکنند. من از هیچ برنامهنویس باتجربهای نشنیدم که بگوید کدنویسی مثل یک برش کیک برای اوست.
البته با داشتن تجربه میتوان سریعتر و راحتتر کارها را انجام داد؛ اما مشکل اساسی که رسیدن به راهحل مسائل است، تغییر نمیکند. کسانی که شما آنها را دنبال میکنید، احتمالاً حرفهایتر هستند و کدهای مؤثرتری مینویسند اما این به آن معنی نیست که آنها برای رسیدن به اهدافشان سخت کار نمیکنند.
طبق گفته یکی از 12 نقش Peterson در Life goes:
«خودتان را با کسی که دیروز بودهاید مقایسه کنید نه با شخص دیگری.» حقایق بسیاری در این جمله نهفته است. چیزی که مهم است این نیست که دیگران چقدر از شما جلوترند؛ این است که شما چقدر از خودتان دور هستید.
امیدوارم این مطالب برای شما مناسب بوده باشد. بعد از یادگرفتن آنها از میان شکستها و کار سخت، من عمیقاً به آنها باور پیدا کردهام.
کلام آخر
در پایان، لازم میدانم این نکته را به شما گوشزد کنم که "علوم رایانه هیچگاه شما را تبدیل به یک برنامهنویس خوب نمیکند" پس همین امروز دست به کار شوید و آموزش برنامهنویسی را شروع کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید