درست مانند خواندن، نوشتن، علوم، ریاضیات و به طور کلی هر علم دیگری، کدنویسی یا برنامهنویسی نیز علم، مهارت و یا بهتر بگوییم هنری قابلفراگیری است و از همین روی هر کسی میتواند با صرف زمان و تمرین فراوان آن را بیاموزد اما سؤال این است که «آیا هر کسی میتواند با یادگیری این مهارت به صنعت توسعهٔ نرمافزار وارد شده و از آن کسب درآمد کند؟» که در همین راستا در این مقاله چند مورد از نشانههایی که به شما میگویند این شغل مناسبتان نیست را فهرست نمودهایم به طوری که اگر این نشانهها را در خود میبینید، بهتر است هر چه زودتر به فکر برطرف نمودن آنها باشید و یا اینکه خیال موفقیت در حرفهٔ برنامهنویسی را از سر خود بیرون کنید!
۱. به اندازهٔ کافی کنجکاو نیستید
اگر در مورد دنیای تکنولوژی خیلی کنجکاو نیستید، نمیتوانید برنامهنویس موفقی شوید. علاقه به موضوع در فرآیند یادگیری یکی از اصلیترین شرطهای موفقیت است و یادگیری برنامهنویسی نیز از این قاعده مستثنی نیست. اگر ذهن شما در مورد تکنولوژی و عملکرد آن کنجکاو نباشد، انگیزه کافی برای کسب دانش گسترده و عمیق در این رابطه و ادامهٔ مسیر یادگیری را نخواهید داشت و در نتیجه هرگز برنامهنویس موفقی نخواهید شد.
جهان تکنولوژی مانند اقیانوس بزرگی از حوزههای مختلف است که میتواند کنجکاوی افراد را برانگیزاند و اشتیاق کشف چیزهای جدید را در آنانها بیدار کند. در همین راستا، توصیه میکنیم که هر چه زودتر زمینهٔ کنجکاوی خود را پیدا کنید و پاسخ سؤالات زیر را از خود جویا شوید:
- آیا برنامهنویسی واقعاً شما را به وجد میآورد؟
- آیا واقعاً به این مهارت و جنبههای کاربردی آن علاقهمندید؟
- آیا هیجان یادگیری بیشتر و عمیقتر در این زمینه را دارید؟
اگر پاسخ صادقانهٔ شما به این سؤالات منفی میباشد بهتر است هر چه زودتر برنامهنویسی را رها کنید و به دنبال علاقهٔ خود بروید اما اگر پاسخ شما مثبت است، باید چشمان خود را کمی بازتر کنید و با دقت بیشتری به اقیانوس گستردهٔ تکنولوژی بنگرید. در واقع، زمینهٔ علاقهٔ خود را پیدا نموده و آمادهٔ شیرجههای عمیقتر و کشف چیزهای جدیدتر باشید.
۲. نمیتوانید به طور مستقل مشکلات خود را حل کنید
اگر از نظر شخصیتی آنقدر مستقل نشدهاید که بتوانید مشکلات خود را حل کنید، هیچوقت برنامهنویس موفقی نخواهید شد. بدون شک برنامهنویسان موفق به توانایی یادگیری خود متکی هستند و نیاز به توضیح نیست که هیچکس تعهدی ندارد تا چیزی را به شما آموزش دهد بلکه این خودِ شما هستید که باید پروسهٔ یادگیریتان را بر عهده گیرید.
خوشبختانه در دنیای برنامهنویسی مجموعهٔ نسبتاً کاملی از اطلاعات به صورت یک کتابخانهٔ بسیار بزرگ جمعآوری شده است و این کتابخانه یک دروازهٔ معروف دارد به نام گوگل به طوری که اگر سؤالی دارید، به راحتی میتوانید آن را اصطلاحاً «گوگل» کنید. علاوه بر گوگل، راه رایج دیگری نیز برای یافتن پاسخ به سؤالات برنامهنویسان وجود دارد و آن مراجعه به مستندات و توضیحات زبانهای برنامهنویسی، لایبرریها و فریمورکها است (البته لازم به یادآوری است که برخی از این مستندات بهطور بسیار ساده و روشن به توضیح نحوهٔ کار فناوری مد نظر نمیپردازند!)
مستندات به منزلهٔ فرهنگِ لغت یک زبان برنامهنویسی هستند و از همین روی هر وقت به چیزی برخوردید که نمیدانستید چیست، به این فرهنگ لغت مراجعه کنید به طوری که میتوان گفت سریعترین و معتبرترین راه برای افزایش مهارتها در یک زبان برنامهنویسی خاص، مطالعهٔ مستندات آن است.
لازم به یادآوری است که در اکثر مواقع پاسخ به تمام سؤالات خود را میتوانید به تنهایی بیابید. در واقع، زمانی که با مشکلی مواجه شدید، قبل از اینکه از شخصِ دیگری راهحل آن را بپرسید، خود را وادار کنید که با جستجو و مراجعه به مستندات فناوری مد نظر خود به تنهایی و مستقل از دیگران سولوشنی برای آن بیابید و سؤال کردن از دیگران را بگذارید برای زمانی که علیرغم تلاش بسیار باز هم موفق نشده باشید.
۳. در مقابله با مشکلات زود تسلیم میشوید
اگر در مقابل مشکلات و سختیها به راحتی تسلیم میشوید، به نظر میرسد که به سختی بتوانید در این صنعت حرفی برای گفتن داشته باشید. ماهیت حرفهٔ توسعهٔ نرمافزار حل مسئله است و این درست همان دلیلی است که کامپیوترها به خاطرش ساخته شدهاند. وقتی که توسعهٔ یک برنامه را شروع میکنید، باید بدانید که با کوهی از مشکلات مواجه خواهید بود و جالب اینجا است که وقتی اولین مشکل را حل میکنید، مشکل بعدی بلافاصله منتظر شما است. به تدریج مشکلات پیدرپی فراوانی را حل میکنید اما گویی قرار نیست که این مشکلات تمام شوند و همیشه مشکلات دیگری برای حل کردن وجود دارند!
مواجهه مداوم با انبوهی از مسائل مشکلات میتواند دلهرهآور و دلسردکننده باشد و اگر اهل مقابله با مشکلات نباشید کمکم انگیزه و انرژی خود را از دست میدهید. در یک کلام، اگر میخواهید در این صنعت بمانید و حضوری موفق هم داشته باشید، به قول معروف باید سرتان همیشه درد کند برای دردسر.
نکتهای که در این ارتباط نیاز به یادآوری دارد آن است که دیدگاه خود را باید نسبت به مشکلات عوض کنید و آنها را به عنوان چالش در نظر بگیرد. اگر صبور باشید و استقامت کنید، موفقیت در هر چالشی دیدِ عمیقتر و دقیقتری در شما پدید آورده و برای مواجهه با چالشهای بعدی آمادهتر خواهد ساخت.
۴. پس از حل یک مسأله احساس موفقیت نمیکنید
پیش از این در ارتباط با سستی و تسلیم شدن در مقابل مشکلات سخن گفتیم اما عامل این سستی را اکنون بیان میکنیم که چیزی نیست جز نداشتن حسی خوب نسبت به حل مشکلات به طوری که وقتی با انبوهی از مشکلات مواجه میشوید که حس میکنید تمامی ندارند و مانند دویدن روی یک تردمیل هر چه میدوید انگار سر جای اول خود ایستادهاید، به راحتی ممکن است موفقیتهای کوچک را نادیده بگیرید و کمکم حس خوب موفقیتهای کوچک و پیشرفتهای پیدرپی را از دست بدهید. اگر میخواهید برنامهنویس موفقی باشید، باید با حل هر مشکل سطح دوپامین خونتان بالا برود و حس لذت در شما پدید آید (چیزی مانند حسی که در تکمیل یک مرحله از یک بازی ویدئویی، حل جدول و یا سودوکو، وزن کم کردن و یادگیری یک زبان جدید به شما دست میدهد.)
در این ارتباط توصیه میکنیم که هر وقت مسئلهای را حل میکنید، مهم نیست چهقدر کوچک باشد، به خاطر این پیروزی به خود ببالید، به خود تبریک گفته و یک استراحت کوتاه به خود بدهید و اجازه بدهید این حس غرور و خوشحالی در ذهن و جسمتان جریان یافته و شما را برای مواجهه با مشکل بعدی آماده سازد.
۵. در یادگیری بیحوصله هستید
اگر در یادگیری مفاهیم و تکنیکهای جدید بیحوصله هستید و انتظار دارید بدون تمرین و خیلی سریع ماهر شوید، هرگز برنامهنویس موفقی نخواهید شد. همهٔ ما دوست داریم که یک شبه ره صد ساله را طی کنیم ولی واقعیت آن است که ما انسانها مخلوقاتی هستیم با محدودیتهای فراوان و با اینکه دنیای امروز با سرعتتر از گذشته پیش میرود، سرعت ما هنوز هم به شرایطی چون سلامتی، افکار، اعتقادات، گذشته و … بستگی دارد و از همین روی هر یک از ما با سرعت خاص خود میتوانیم چیزهای جدید را بیاموزیم و آنها را به کار ببندیم.
پیش از این دنیای تکنولوژی را به اقیانوسی بزرگ تشبیه کردیم و نیاز به توضیح نیست که هیچکس نمیتواند به انتهای آن برسد و ادعا کند به نقطهای رسیده که دیگر چیزی برای آموختن وجود ندارد. از سوی دیگر باید مراقب باشیم در این اقیانوس بیکران غرق نشویم زیرا در این صورت دائماً تحت فشاری روانی خواهیم بود و حس خواهیم کرد که دانش ما اصلاً جوابگوی نیازمان نیست و در نهایت ناامید میشویم. برای حفظ تعادل در این اقیانوس بزرگ باید سطح دانش فعلی خود را بپذیریم و هر بار قدمی کوچک در راه افزایش دانش خود برداریم و باید از سفر خود در اقیانوس بیانتهای دانشِ کدنویسی لذت ببریم و مراقب باشم که هیچگاه نَه بیش از حد مغرور شویم و نَه ناامید.
اساساً همواره چیزهای زیادی برای آموختن وجود دارد و یادگیری هیچوقت پایان نمیپذیرد و از همین روی هر تلاش کوچک و بزرگی که برای افزایش سطح دانش خود انجام میدهید را قدر بدانید و مطمئن باشید که تمام این تلاشها ذرهذره جمع میشوند و سکوی پرشی برای پیشرفت شما ایجاد مینمایند.
۶. از فکر کردن خسته میشوید
اگر در فکر کردن سهلانگاری میکنید و متمرکز ماندن روی افکار برای شما کاری دشوار است، بعید است که بتوانید در برنامهنویسی موفق شوید. کدنویسی یک کار تماماً فکری است و با اینکه ما به عنوان انسان تمام روز را مشغول فکر کردن هستیم اما بسیاری از ما نمیتوانیم مدت زیادی روی یک فکر خاص متمرکز بمانیم! وقتی یک برنامهنویس دچار عدم تمرکز میشود، ممکن است به صفحهٔ نمایشگر خیره شود، در مرورگر از تبی به تب دیگر برود و یا ناامیدانه استکاورفلو را بالا و پایین کند بلکه راهحلی بیابد و همهٔ اینها علامت این است که شما به یک مانع ذهنی برخوردهاید و باید راهی برای عبور از آن بیابید.
در حین برنامهنویسی ممکن است خسته شوید؛ نهتنها خستگی ذهنی بلکه خستگی جسمی که درست مانند وقتی است که ورزش کرده باشید و اگر عادت به تمرکز روی افکار نداشته باشید، کار برای شما دشوارتر هم میشود اما نگران نباشید زیرا همانطور که برای تقویت عضلات جسم خود ورزش میکنید، ذهن خود را نیز با تمرین دادن میتوانید قویتر نمایید. تصور کنید که ذهن شما هم یک عضله است و هر چهقدر بیشتر از آن استفاده کنید، بهتر و کاراتر عمل خواهد کرد و از همین روی همواره سعی کنید ذهن خود را به فکر کردن و تمرکز روی افکار خاص عادت دهید تا در موقع نیاز بتوانید به بهترین نحو از آن استفاده کنید.
۷. نمیتوانید برای خودتان فکر کنید
اگر انتظار دارید دیگران به جای شما فکر کنند و علاقهای ندارید به جزئیات وضعیت خود دقت کنید، برنامهنویس موفقی نخواهید بود. وقتی چیز جدیدی میآموزید، کاملاً طبیعی است که احساس کنید از تجربه و دانش کافی برای اظهار نظر در آن باره برخوردار نیستید و ممکن است حس عدم امنیت داشته باشید و اظهارنظر اشتباه را یک ریسک بزرگ در نظر بگیرید.
ترس از اشتباه یک ترس موروثی است و اکثر انسانها به نوعی از یک چیزی هراس دارند و این ترس ممکن است تا جایی پیش برود که امکان خلاقیت و آزمونوخطا را از ما بگیرد و به این ترتیب ما را از برخورداری از دانشی که با آزمونوخطا به دست میآید محروم نماید که در این صورت دائماً باید بر نظر فلان نویسنده، فلان دولوپر، فلان همکار، فلان استاد و … متکی باشیم و هیچوقت نتوانیم نقطهنظر شخصی خودمان را داشته باشیم.
شما باید دیدگاههای خود را داشته باشید و به طور مستقل بتوانید بگویید که چرا راهحل شما کار میکند و چه مزایایی دارد و باید بتوانید بگویید مشکل از کجا است و راهحل آن چیست مضاف بر اینکه باید درک کنید که در پشت پرده چهطور یک فانکشن خاص کار میکند؛ باید حرفی برای گفتن داشته باشید و بتوانید از دیدگاه خود دفاع کنید و فقط زمانی دیدگاه طرف مقابل را بپذیرید که در مورد آن قانع شده باشید. در همین راستا، با کسب تجربه و تفکر انتقادی سعی کنید دیدگاه شخصی خود را توسعه دهید، حدسهای معقول و منطقی بزنید، موضع بگیرید و در صورت نیاز مشتاقانه از تغییر استقبال کنید.
۸. طرز تفکری تغییرناپذیر، محدود و یا آشفته دارید
اگر افکار سفت و سختی دارید که به هیچوجه تغییر نمیکنند و یا اگر افکار بههمریخته و بینظمی (و به تبع آن کدهای بینظمی) دارید، نمیتوانید برنامهنویس موفقی باشید. برنامهنویسانی که تفکر محدود، سِفت و تغییرناپذیر دارند کمک دیگران را پس میزنند و علیرغم بازخوردهایی که میگیرند هیچوقت به فکر تغییر نیستند. این دست دولوپرها همهچیز را فقط از دیدگاه خود میبینند و پیشنهادهای دیگران را نادیده میگیرند. همچنین برنامهنویسانی که تفکرات آشفته دارند معمولاً مسائل را بیش از حد پیچیده میبینند و به همین خاطر کدهای طولانی، بههمریخته و ناخوانایی دارند (به عنوان مثال، این افراد مسئلهای را که با ده خط کد حل میشود، با دهها خط کد حل میکنند.)
این دو طرز تفکر مانع رشد برنامهنویسان میشوند زیرا یکی با نادیده گرفتن سایر احتمالات و پیروی بیچون و چرا از یک الگوی خاص و دیگری با توجه بیش از حد به جزئیات و ناتوانی در دیدن الگوها، کیفیت کد نهایی را به شدت کاهش میدهند. هر جا که هستید یک گام به عقب برگردید و روش برخورد خود با دنیای اطراف را مورد بازنگری قرار دهید و از خود بپرسید که چه چیزهایی را نادیده گرفتهاید که میتوانستند به شما کمک کنند.
۹. به جای تشخیص طیفی از راهکارهای بد و خوب، صرفاً به دنبال یافتن پاسخ درست هستید
اگر فکر میکنید هدف نهایی برنامهنویسی نَه ارائهٔ پاسخ مناسب بلکه ارائهٔ پاسخ درست است، برنامهنویسی موفقی نخواهید شد. وقتی شروع به یادگیری مهارتی جدید میکنیم، دائماً میخواهیم بدانیم داریم کارها را درست انجام میدهیم یا خیر اما در صنعت توسعهٔ نرمافزار «بستگی دارد.» پاسخی است که در اغلب اوقات به آن نیاز خواهیم داشت.
از منظری خاص، برنامهنویسی علم مقایسهٔ شرایط مختلف است. در شرایطی خاص ممکن است یک راهحل مناسبتر باشد و در شرایطی دیگر راهحلی دیگر و از همین روی اینکه راهحلی درست است یا نَه کاملاً بستگی به شرایط و اهداف نرمافزار پیش روی شما دارد. اگر به برنامهنویسی به عنوان آزمون درست و غلط بودن راهحلها نگاه کنید، توان نگاه کلیتر به مسائل را از دست میدهید و کمکم قدرت خلاقیتتان نابود میشود. در یک کلام، هر راهحلی درست است فقط به شرطی که با شرایط موجود هماهنگ باشد.
برنامهنویسی بیشتر شبیه به سرودن یک شعر یا نوشتن یک داستان است و باید همواره به جنبهٔ زیباییشناسی آن نیز توجه داشته باشید. بنابراین دلیل شما برای استفاده از یک راهحل بسیار مهمتر از صرفاً درست بودن آن است زیرا داشتن این دید هنری به شما کمک میکند تا بین راهحلهای ممکن، مناسبترین گزینه را برای شرایط موجود انتخاب کنید.
در این ارتباط، با دانستن اینکه برای حل یک مسأله راهحلهای بیشماری وجود دارد و با کسب تجربه و قرار گرفتن در موقعیت واقعی به تدریج دید عمیقتری نسبت به راهحلهای مختلف پیدا میکنید، مناسبترین راهحل را برگزینید.
۱۰. نسبت به جزئیات بیتوجه هستید
اگر جزئیات را نادیده بگیرید و از چیزهای کوچک بدون دقت عبور کنید، برنامهنویس موفقی نخواهید بود. سیستمهای کامپیوتری دستگاههای دقیقی هستند و هنگامی که میخواهید با یک کامپیوتر با زبان صفر و یک صحبت کنید، باید نگاه خود را در سطح مورد انتظار دقیق کنید و تمام جزئیات را در نظر بگیرید و اگر به جزئیات بیتوجه باشید، در بیشتر مواقع خود را در وسطِ چالشهای فراوانی خواهید یافت.
در حقیقت، این بدان معنا است که در حین کدنویسی باید دائماً جزئیات را در نظر داشته باشید به طوری که هر اسپیس، هر برکت، هر سمیکالن، هر حرف و هر کلمهای مهم است و اگر یکی از این جزئیات اضافه باشد، حذف و یا جابهجا شود، به احتمال قریب به یقین برنامه درست کار نخواهد کرد. هنگامی که با اروری مواجه میشوید باید بفهمید که دقیقاً کجای برنامه درست کار نمیکند و اگر از قبل به جزئیات دقت نکرده باشید، باید ساعتها برای یافتن و رفع یک باگ وقت بگذارید.
روی هم رفته باید گفت که جزئیات مهم هستند و زمانی که این واقعیت را بپذیرید، ذهن شما برای دقت به جزئیات آماده شده و اشتباهات ریز و جزئی را راحتتر تشخیص خواهد داد و بدین ترتیب میتوانید کد خود را سازماندهی نموده و یا از ابزاهای مناسب برای این کار بهره ببرید.
سخن پایانی
با اینکه آموزش برنامهنویسی آنقدر که به نظر میرسد ساده و آسان نیست اما با صبر، حوصله و صرف زمان کافی میتوان در این صنعت موفق شد. اگر علاقمند به دیگر مباحث مرتبط با این موضوع هستید، توصیه میکنیم به مقالات زیر مراجعه نمایید:
- علائمی که نشان میدهند برنامهنویسی شغل مناسبِ شما نیست!
- اگر میخواهید در یادگیری برنامهنویسی به هیچکجا نرسید، فقط از یک روش شروع به یادگیری کنید!
- کاش قبل از شروع برنامهنویسی این موارد را میدانستم!
- راهکارهای عملی به منظور تبدیل شدن از یک دولوپر Junior به یک دولوپر Senior
- نگاهی به تجربیات دولوپری که ۳۰ سال کد زده است!
- آیا دولوپرهای موفق صرفاً برای پول کار میکنند یا هدفی جز کسب درآمد دارند؟
- 10 نکته برای دانشجویانی که به دنبال شغل برنامهنویسی هستند
- توصیههای عجیبوغریب برای اینکه به برنامهنویس بهتری تبدیل شوید!
فهرستی که در بالا به آن اشاره شد شامل مشکلاتی است که افراد در راه یادگیری این مهارت با آنها روبهرو میشوند و بیشتر افراد این توانایی را دارند که با تمرین و تلاش از این موانع بگذرند و به یک سطح نسبتاً خوب دست پیدا کنند. در نظر داشتن موارد مطرح شده در فهرست فوق میتواند به کدآموزان کمک کند تا هر چه زودتر موانع را تشخیص داده و در نتیجه بتوانند راحتتر بر آنها غلبه کنند.