چگونه به یک توسعهدهنده بهتر جاوا تبدیل شویم؟

اخیرا Javin Paul مقالهای منتشر کرده است که در آن به معرفی 10 راهکار و توصیه برای تبدیل شدن به یک توسعهدهنده بهتر جاوا میپردازد. عمل کردن به این توصیهها، هم برای توسعهدهندگان core جاوا و هم برای توسعهدهندگان وب جاوا مفید خواهد بود.
در ادامه این توصیهها را با هم میخوانیم.
توصیه اول: جاوا 8 یاد بگیرید

در حال حاضر، مهمترین چیز برای یک توسعهدهنده جاوا، یادگیری جاوا 8 است. جاوا 8 تقریبا چهار سال سن دارد و اخیرا نسخههای جاوا 9 و 10 نیز منتشر شدهاند. با این حال برنامهنویسهای زیادی هستند که حتی یک خط هم با استفاده از ویژگیهایی مانند لامبدا و Stream API از جاوا 8 کد نزدهاند و متاسفانه اکثر آنها توسعهدهندگان باتجربهای با 7 تا 10 سال سابقه کار هستند.
البته طبیعی است که در مراحلی از کار، روند یادگیری کند میشود. ولی باید بدانید که اگر الان دست به کار نشوید، عقب میافتید.
تقریبا تمام موقعیتهای کاری که در حال حاضر برای توسعهدهندگان جاوا وجود دارد، نیازمند مهارتهای جاوا 8 هستند و اگر شما این مهارتها را نداشته باشید به آسانی از عهدهی انجام این کارها بر نخواهید آمد.
توصیه دوم: چارچوب Spring را یاد بگیرید

امروزه یادگیری Spring برای یک توسعهدهنده جاوا امری ضروریست، چرا که بیشتر شرکتها ترجیح میدهند از چارچوبهای Spring مانند Spring MVC و Spring Boot و Spring Cloud برای توسعهی برنامههای تحت وب، REST API و میکروسرویسها استفاده کنند.
استفاده از این چارچوب شما را به استفاده از best practiceهایی مانند تزریق وابستگی (Dependency Injection) سوق میدهد و قابلیت تست (Testable) برنامه را که یک نیازمندی کلیدی در نرمافزارهای مدرن امروزی است، افزایش میدهد.
توصیه سوم: تست واحد یاد بگیرید

اگر چیزی وجود داشته باشد که یک توسعهدهنده خوب جاوا را از یک توسعهدهنده متوسط جدا کند، مهارت نوشتن تست واحد (Unit Test) است.
یک توسعهدهنده خوب و حرفهای جاوا تقریبا همیشه برای کدهایش تست واحد مینویسد و اگر توسعهدهنده فوقالعادهای باشد میتوانید از کد و تستهایش متوجه شوید.
برای توسعهدهندگان جاوا چندین ابزار جهت نوشتن تست واحد، تست تجمیعی (Integration Test) و تست خودکار وجود دارد.
شما میتوانید امسال زمان نسبتا خوبی را صرف بالابردن مهارت خود در تستکردن کنید، ولی برای آن دسته از افرادی که تازه وارد دنیای جاوا و تست واحد شدهاند، Junit بهترین ابزار برای شروع است. نسخهی اخیر (Junit 5) قدرتمند و منعطف است و هر توسعهدهندهی جاوایی باید با آن آشنا شود.
توصیه چهارم: با APIها و کتابخانههای جاوا آشنا شوید

اگر با توسعهدهندگان حرفهای جاوا کار کرده باشید، ممکن است متوجه شده باشید که بخش زیادی از دانش جاوایی آنها را آشنایی و تسلط بر APIها و کتابخانهها تشکیل میدهد.
جاوا محبوبترین و کاملترین زبان برنامهنویسی در دنیاست و تعداد بسیار زیادی کتابخانه و API دارد که با استفاده از آنها تقریبا هر کاری را میتوان انجام داد.
البته از شما انتظار نمیرود تمامی آنها را بلد باشید، اما لازم است حتما با برخی از APIهای کلیدی آشنایی داشته باشید. برای نمونه خوب است که با APIهایی مانند:
- پردازش JSON مثل Jackson و Gson
- پردازش XML مثل JAXB و Xerces
- و با کتابخانههای تست واحد مانند Mockito و Junit
آشنا باشید.
اگر با این کتابخانهها و APIها آشنایی ندارید، میتوانید آنها را یاد بگیرید و یا حداقل امسال آنها را مرور کنید. برای شروع، میتوانید به این لیست 20 کتابخانه جاوا که هر توسعهدهنده جاوا باید بلد باشد نگاهی بیندازید. این لیست شامل کتابخانههایی در زمینههای کلیدی و اساسی مانند parsing، استفاده از bytecode، همروندی (concurrency)، مجموعهها (collections) و غیره است.
توصیه پنجم: ساختار داخلی JMV را یاد بگیرید

اگر واقعا قصد دارید تبدیل به یک توسعهدهنده حرفهای جاوا شوید، باید برای یادگیری ساختار داخلی JVM وقت بگذارید. مثلا باید با بخشهای مختلف JVM، وظایف و نحوه کار هر یک آشنا باشید (JIT، JVM options، زبالهروب، collectorها و …).
اگر JVM را خوب بشناسید، میتوانید برنامههایی قدرتمند و با کارایی بالا بنویسید. یعنی دقیقا همان کاری که توسعهدهندگان حرفهای جاوا انجام میدهند.
در این میان، این را هم باید بیاموزید که چگونه برنامه جاوایی خود را از جنبههای مختلف مانیتور کنید و چگونه گلوگاههای کارایی را بیابید.
برای یک آموزش ساختارمند، پیشنهاد میکنیم کتاب The Definitive Guide to Java Performance اثر Scott Oaks را که یک کتاب عالی در این زمینه است، بخوانید.
توصیه ششم: الگوهای طراحی را یاد بگیرید

الگوهای طراحی برای حل مسائل و مشکلات متداول در طراحی برنامههای نرمافزاری، راهحلهایی کلی و قابل استفاده مجدد ارایه میدهند. از این راهحلها در طول زمان بسیار استفاده شدهاست و بنابراین میتوان گفت امتحان خود را پس دادهاند.
با دانستن و استفاده از این الگوها در کد خود، برنامه شما انعطافپذیرتر میشود و در آینده اعمال تغییرات در آن آسانتر خواهد بود.
همچنین استفاده از الگوهای طراحی به طور کلی باعث بهبود کیفیت کد و مستندات آن میشود؛ زیرا سایر توسعهدهندگان جاوا نیز با این الگوها آشنایی دارند و به سرعت میتوانند راهحل شما را بفهمند.
بهتر است فقط روی کدنویسی تمرکز نکنید و روح الگوها را درک کرده و خلاقانه از آنها استفاده کنید. مثلا میتوانید از ویژگیهای جاوا 8 مثل لامبدا و جویبار (Stream) برای نوشتن الگوها استفاده کنید.
اگر به دنبال منبعی برای یادگیری الگوهای طراحی هستید، میتوانید به اینجا مراجعه کنید که همراه با مثال الگوها را توضیح داده. دوستداران کتاب هم میتوانند کتاب Head First Design Patterns را تهیه و مطالعه کنند.
توصیه هفتم: ابزار DevOps را یاد بگیرید

برای یک توسعهدهنده بهروز جاوا، برخورداری از دانش DevOps امری ضروری است. حداقل باید با مفاهیم تجمیع پیوسته (Continuous Integration یا CI) و استقرار پیوسته (Continuous Deployment یا CD) و همچنین با نحوه کارکرد ابزاری مانند جنکینز (Jenkins) در این زمینه آشنا باشید.
برای توسعهدهندههای ارشد جاوا که معمولا مسئولیت تنظیم و اعمال best practiceها، ایجاد محیط، ساخت اسکریپتها و دستورالعملها را بر عهده دارند، توجه به این مورد مهمتر نیز میشود.
همچنین توصیه میکنیم وقت بیشتری برای یادگیری DevOps و ابزارهایی مانند Docker و Kubernetes و Chef و غیره در کنار Maven و جنکینز، صرف کنید.
اگر به دنبال منبعی برای یادگیری هستید، دوره Master Jenkins CI For DevOps and Developers در Udemy احتمالا بهترین دوره برای شروع یادگیری است. در این دوره علاوه بر CI و CD، جنکینز و Maven را هم یاد میگیرید.
توصیه هشتم: برنامهنویسی با Kotlin را یاد بگیرید

در کتاب The Well-Grounded Java Developers بر روی مزایای تبدیلشدن به یک برنامهنویس چندزبانی تاکید شدهاست. این کتاب الهامبخش نویسنده این مقاله (Javin Paul) برای یادگیری Scala بوده و بعدا Groovy را نیز به دلیل کاربرد آن در ایجاد اسکریپتهای ساخت (build) و تست واحد، امتحان کرده است. این تجربه کمک زیادی به او کرده و به همین دلیل توسهدهندگان جاوا را به یادگیری زبانهای JMVای جدیدتر تشویق میکند. میتوانید به مقاله سه زبان JVM که برنامهنویسان جاوا باید یاد بگیرند (از همین نویسنده)، مراجعه کنید، ولی اگر وقت ندارید، فقط کاتلین (Kotlin) را یاد بگیرید.
زبان کاتلین توسط شرکت JetBrains (سازنده IntelliJ IDEA) طراحی شده است و در سال ۲۰۱۷ توسط گوگل به عنوان زبان رسمی توسعه Android معرفی شد.
یادگیری کاتلین نه تنها تواناییها و بهرهوری شما را افزایش میدهد، بلکه به شما کمک میکند تا به محیط توسعه اندروید هم وارد شوید. اگر قصد دارید امسال کاتلین را یاد بگیرید و به دنبال منابع خوبی میگردید، این لیست از دورههای آموزشی کاتلین نقطه شروع خوبی برای شما خواهد بود.
توصیه نهم: Microserviceها را یاد بگیرید

معماری نرمافزارها بهطور مداوم در حال تغییر است و بسیاری از شرکتها نیز در حال جایگزینی برنامههای یکپارچه با میکروسرویسها هستند.
وقت آن فرا رسیده تا توسعهدهندگان جاوا معماری میکروسرویسها و نحوه ایجاد میکروسرویسها را در جاوا یاد بگیرند تا از این موجی که اخیرا ایجاد شده، بهرهمند شوند.
خوشبختانه چارچوب Spring با فراهمکردن Spring Boot و Spring Cloud، کار توسعهی میکروسرویسها در جاوا را برای ما راحتتر کردهاست.
اگر به دنبال دوره آموزشی هستید، دوره Master Microservices with Spring Boot and Spring Cloud برای شروع خوب است.
همچنین اگر کتاب را ترجیح میدهید، پیشنهاد میکنیم کتاب Cloud Native Java نوشتهی Josh Long را مطالعه کنید. این کتاب راهنمای جامعی را برای توسعه برنامههای جاوا برای cloud ارایه میدهد.
توصیه دهم: IDE خود را بهتر یاد بگیرید

توسعهدهندگان حرفهای جاوا، کار با ابزارهایشان را خیلی خوب بلدند. آنها نسبت به توسعهدهندگان معمولی، نهتنها ابزارهای بیشتری را میشناسند، بلکه به ابزارهای خود به خوبی مسلط هستند.
از آنجایی که IDEهایی مانند Eclipse و NetBeans و IntelliJ IDEA از مهمترین ابزارها برای توسعه جاوا هستند، باید زمانی را صرف یادگیری و شناخت آنها کنید.
میتوانید کار با پلاگینهای کاربردی را یاد بگیرید و یا به میانبرهای صفحه کلید مسلط شوید و سرعت خود را در کار با IDE بالا ببرید.
حتی برخی از ترفندهای کوچک هم میتواند خیلی به شما کمک کند، زیرا بیشتر از چیزی که فکر میکنید از آنها استفاده خواهید کرد. اگر از Eclipse استفاده میکنید و میخواهید مهارتهای IDE خود را ارتقا دهید به دوره Eclipse Debugging Techniques And Tricks در Udemy سر بزنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس اکانت توییتر: JavaCupIR@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
خیلی مطلب عالی ای بود و به من کمک کرد.ممنون