این ویرگول، ترجمهای خوب و روان (?) از پستی است که در سایت dev.to دیده بودم. اگر در ادامه با نویسنده مخالف باشم، نظر خودم را هم اضافه میکنم و اگر این پست را میبینید، یعنی مخالفتمان خیلی جدی نبوده است!
یک جایی از مسیر کاریمان را به گذشته نگاه میکنیم؛ اینکه چگونه شروع کردیم، چگونه پیشرفت کردیم و چه چیزی برای مای کمتجربه خیلی مفید و سودمند بود. اکنون تصمیم گرفتهام که برخی نکات را -که ترتیب آنها بیاهمیت است- با شما که یک برنامهنویس تازهکار هستید، در میان بگذارم.
بله، درست خواندید! این کار را نکنید! هر زبانی، چیزی دارد که برخی با آن مشکل داشته باشند و شما -به عنوان تازهکار- جزو آن «برخی» نیستید! یکی را انتخاب کنید و با آن پیش بروید، و تصمیمگیریهای بعدی را به زمانی در آینده موکول کنید که باتجربه شدهاید!
میدانم که ناخودآگاه به دنبال پاسخهای تیکخورده میگردید، اما همیشه جواب درست و مناسب شما در آن نیست. دیگر جوابها و حتی کامنتها را بخوانید؛ زیرا در کامنتها هم چیزهای خوبی را متوجه خواهید شد.
در هر چالش غیر قابل حل، فرصتی برای یادگیری چیزهای جدید وجود دارد، پس با pasteکردن راهحل، این فرصت را از دست ندهید! سعی کنید شیوۀ کار کد را بفهمید و خوب درک کنید!
مطمئنم که دربارۀ دوزخ آموزش (tutorial hell) شنیدهاید و هیچ بعید نیست که این اتفاق برای شما بیفتد! اگر یک برنامهنویس باتجربه نیستید که هدفش از دیدن آموزش، افزایش دانش است، پیش از شروعکردن هر دورۀ آموزشی، بررسی کنید که آیا تمرینات عملی در آن هست یا نه؛ زیرا یادگیری واقعی در تمرینکردن اتفاق میافتد. البته تمرین هم کافی نیست، باید بگذارید که ذهنتان فعال شود و به این پرسش بپردازد که آنچه آموختهاید در کجا میتواند کاربردی شود.
شاید دردناک به نظر برسد، ولی تحصیلات دانشگاهی در بازار کار یک مزیت به شمار میرود و حتی اگر خیلیها بگویند مهم نیست، در عمل چنین برخورد نمیکنند و ممکن است به خاطر «نداشتن بکگراند کافی برای نیازمندیها» یک فرصت شغلی را از دست بدهید! همیشه در حال مطالعه و بهبود دانش خود باشید.
مترجم: کتابخواندن سرمایهگذاری خوبی است و باعث میشود که به جای آزمایش و خطا، از تجارب بزرگان حوزۀ مهندسی نرمافزار استفاده کنید. لیستی از کتابهای خوب را جمعآوری کنید، اولویتبندی کنید و بعد بخوانید. اگر مهارت قابل قبولی در زبان انگلیسی ندارید، حتما برای آن وقت بگذارید.
یک حقیقت دردناک دیگر! همیشه تلاش کنید که از برنامهنویسان باتجربه و کهنهکار دربارۀ کدهایی که مینویسید بازخورد بگیرید. اگر چنین کنید، سرعت یادگیری شما به مراتب بیشتر میشود و جلوتر میافتید.
مترجم: خواندن کتابهایی مثل Clean Code اثر Robert Martin و Refactoring اثر Martin Fowler میتواند بسیار مفید باشد. در هر زبانی، استانداردهایی مربوط به Style کدها وجود دارد که میتوانید خود را با آنها وفق دهید.
جاده بسیار باریک است، پس خود را برای رد شدن آماده کنید! ممکن است سه مرحله مصاحبه را بگذرانید، و در آخر بگویند که تا نگویید فلان سیستم را چه کسی ابداع کرده، به مرحلۀ بعد نخواهید رفت! گاهی مصاحبه و شغل با هم مطابقت ندارند؛ مثلاً در نهایت با ORM کار خواهید کرد اما سؤالات عجیب SQL مطرح خواهد شد، یا اینکه قرار است REST API سادهای بنویسید، اما از شما دربارۀ اینکه Node.js چگونه ساخته شد بپرسند!
قوی و آماده باشید!
اینکه با یک زبان یا کتابخانه، اپلیکیشنهای CRUDمحور بسازید، کافی نیست! سعی کنید درک بهتری از سیستم به دست بیاورید، زیرا وقتی به جاهای بهتری برسید، احتمالا ابزارهایی خواهید ساخت که توسط دیگران استفاده شوند و دانشی که از این راه به دست میآورید، فوقالعاده خواهد بود!
مترجم: خواندن documentation بسیار بیشتر از آنچه فکر میکنید مفید است. همچنین ضرری ندارد که گاهی کد فریمورک یا لایبرریهایی که استفاده میکنید را بخوانید و از طرز کار آنها سر در بیاورید.
به طور ساده، تفاوت میان Junior و Senior در تجربه است! چیزهای خیلی زیادی برای آموختن هست. گاهی از خود میپرسید: چه چیزی بسازم؟ و وقتی با موانع رو به رو شوید، چیزهای جدیدی خواهید آموخت.
آنچه یاد میگیرید و تجربه میکنید را با دیگران هم به اشتراک بگذارید. قرار نیست که همیشه دربارۀ یک مفهوم، حق با شما باشد و حرف درست را بزنید. خیلی اوقات از بخش کامنتها چیزهای زیادی یاد گرفتهام و بعد با خود فکر کردهام که اگر نویسنده آن پست را منتشر نمیکرد، دیگران هم آن کامنتهای خوب و مفید را نمینوشتند!
مترجم: نوشتن کامنت برای کدهایتان را هم تمرین کنید. پروژههایتان را مستندسازی کنید، Readme بنویسید و طرز کار آنها را توضیح دهید.
با توسعهدهندگان ملاقات کنید، در رویدادها شرکت کنید، به انجمن ها بپیوندید و با دیگران تعامل داشته باشید. در آینده به مشکلاتی خواهید خورد و این آنها هستند که در را به رویتان باز میکنند! شبکۀ اجتماعی Linkedin ابزار مناسبی برای برندسازی و وصلشدن به دیگران است.
شما توصیۀ دیگری دارید؟ کامنت بگذارید!