[번역글] 더 나은 자바개발자가 되기위한 10가지 팁!

[번역 원본글] https://dzone.com/articles/10-tips-to-become-a-better-java-developer-in-2018

 

요약

자바 8을 공부하는 것부터 JVM의 내부까지 공부하는 것까지, 당신의 IDE를 더욱 효율적으로 사용하고, Kotlin에 손을 대려고 하기까지!. 당신이 더 나은 자바개발자가 되기 위한 몇가지 조언들을 준비해보았습니다.

 

서론

필자는 종종 독자들로부터 어떻게하면 더나은 자바개발자가 될지에 관한 이메일을 받습니다. 무엇을 공부해야하고 어느 지역에 취업을 해야 유리할지 등의 내용입니다. 수년간 그들에게 개별로 응답을 해주고 난 지금, 몇가지를 적어보려고 합니다. 이 몇가지는 당신이 더 나은 자바개발자로 거듭나게 해줄 것입니다.

아직 읽어보지 못한 내용이라면, 이 포스팅을 읽어보면 더 나은 자바개발자로 거듭나기 위한 필수적인 스킬 이나 프로그래밍 기술향상 등에 도움이 되리라 여겨집니다.

이 몇가지 팁들은 코어자바 프로그래머 뿐아니라 웹개발로 자바를 개발하는 개발자에게도 똑같이 도움이 되리라 생각합니다.

1. Learn Java8 (자바8버전, 모던자바를 배울 것)

자바 개발자들이 지금 당장 봐야할 정도로 가장 중요한 내용입니다. 자바8은 현재 많은 기업들이 채택하고 있는 자바버전이고 심지어 jdk 13까지 나오고 있습니다. 그와 상관없이, 필자 주변에는 자바8의 람다나 스트림 API를 이용하지 않는 개발자는 많이 있습니다. 

안타깝게도, 대부분 7 ~ 10년차정도의 경험많은 자바 개발자들입니다. 자바8 이상을 공부하지 않은 개발자들은 대부분 그들의 커리어에서 배우는게 늘지않는 때가 있겠지만, 지금 배우지 않는다면 남겨져서 뒤쳐지고 말 것입니다.

대부분 거의 모든 자바개발 직무는 자바8기술을 요하고 있습니다. 그런데 당신이 그 기술을 갖추지 못했다면 그 작업을 하기 어렵지 않을까요..?

소스코딩 라인 수 차이

 

2. Learn Spring Framework(Spring Boot) (스프링 프레임워크를 배울 것.)

요즘에는 자바 개발자들이라면 피할 수 없는 프레임워크가 바로 스프링 프레임워크입니다. 대부분의 회사들이 스프링 프레임워크를 이용하여 개발하는 것을 선호합니다. 스프링에는 Spring MVC, Spring Boot, Spring Cloud 등의 프로젝트가 있는데, 이를 통해 웹 어플리케이션, REST API, microservice를 개발하고 있습니다.

또한 의존주입과 같은 모범사례를 장려하고 응용 소프트웨어의 테스트 가능성을 높여줍니다. 이는 최신 소프트웨어의 핵심요구사항들 입니다.

 

3. Learn Unit Testing (단위 테스팅을 배울 것)

좋은 자바 개발자와 그저그런 평범한 자바개발자를 구별하는 한가지는 바로 단위 테스트 기술이다.

전문적인 자바 개발자는 대부분 항상 그들이 작성한 코드의 테스트를 위해 단위테스트 코드를 작성하려고 합니다. 이들의 코드를 보게 된다면 대부분은 응용프로그램 작성 코드와 그에 맞는 단위테스트코드를 볼 수 있을 것입니다.

자바개발자가 사용할 수 있는 단위테스트, 통합테스트 및 자동화 테스트를 위한 여러가지 툴들과 함께 테스트도 오래오래 발전해왔습니다.

자바에서 테스트 기술을 학습하는데에 많은 시간이 소요될 수 있겠지만 자바를 처음 접하거나 단위테스트를 처음 접하는 개발자들에게 한가지 라이브러리를 추천하자면 JUnit 라이브러리가 가장 좋은 라이브러리입니다. 현재까지 5버전이 나왔고 이는 강력하고 유연한 편입니다. 모든 자바개발자들이 알았으면 좋겠습니다.

 

4. Learn APIs and Libraries (API와 라이브러리를 배울 것)

당신이 만약 좋은 자바개잘자랑 업무를 해보게 된다면, 당신은 아마 그들의 전반적인 자바 생태계의 지식을 확인해볼 수 있는 좋은 기회가 생길텐데 이는 대부분 API나 라이브러리를 잘 활용한 것일 것이다.

자바는 전세계에서 가장 인기있고 오래된 프로그래밍 랭귀지이며 아주 다양한 라이브러리와 api가 존재합니다. 당연히, 당신이 그 모든 것을 공부하기란 어렵고 쉽지 않을 것입니다. 하지만 몇몇 중요 API에 대한 경험이나 존재자체에 대해서는 인지하고 있어야 한다고 생각합니다.(ex JSON processing Jackson, Gson / unit testing like Mockito, JUnit). 이에 대해 들어본적이 없다면, 한번 배워보시거나 최소한 개요정도는 다가오는 한해에 살펴보시기 바랍니다.

우선, 자바개발자들이 알아야할 자바 라이브러리 20(https://javarevisited.blogspot.com/2018/01/top-20-libraries-and-apis-for-java-programmers.html) 를 한번 체크해보시기 바랍니다. 이것은 파싱, 바이트코드, 조작, 동시성, 컬렉션과 같은 중요한 영역을 다루고 있습니다. 

 

5. Learn the JVM`s Internals (JVM의 내부를 뜯어볼 것)

당신이 진정으로 rockstar 자바 개발자(훌륭한 자바개발자라는 뜻)가 되고자 한다면, JVM 내부를 뜯어보는 시간을 가져보아야만 할 것입니다. 예를들어, JVM의 다른 부분은 무엇인지, 어떻게 동작되는지, JIT 컴파일러, JVM 옵션들, Garbage Collection 과 같은 컬렉터들.

JVM에 대해 잘 안다면, rockstar 자바 개발자와 같이 건장하고 성능좋은 자바 응용프로그램을 만들 수 있을 것입니다. 

이와 같은 부분으로 성능에 장애가 있는 부분을 빠르게 파악할 수 있는 능력이 생길 것 입니다.

체계적인 학습을 위해, The Definitive Guide to Java Performance 라는 책을 추천합니다. 필자가 지난 몇년동안 읽은 책들중 가장 최고였습니다.

 

6. Learn Design Patterns (디자인 패턴을 배울 것)

스크래치로 자바 프로그램을 짠다면, 객체 지향적인 코드를 짜게 될 것이고 디자인 패턴으로 일반적인 문제에 대한 솔루션을 테스트합니다.

디자인 패턴을 알고 이를 코드에 적용시킴으로써 당신이 개발한 응용프로그램의 유연함이 향후 코드를 수정하는데 있어서 개선될 가능성이 높습니다.

디자인 패턴을 도입한다면 다른 개발자들이 해당 코드를 수정할 때 디자인 패턴에 익숙하다면 다른 개발자가 작성한 코드라고 할지라도 더 효과적으로 이해할 수 있으며 이는 전체 코드 퀄리티의 향상을 도모할 수 있을 것입니다.

그러나 너무 코드작성에만 기울이지 말고 로직을 이해하고 창의적으로 해결해야만 합니다. 

디자인 패턴에 관한 정보는 넷상에 많은 정보가 있기 때문에 한번쯤 공부해두시고 활용해보시기 바랍니다.

 

 

7. Learn DevOps Tools( 데봅스 툴들을 배울 것 )

모던 자바개발자라면 데봅스 지식은 필수적입니다. 모던자바개발자는 최소한 CI / CD(Continuous Integration / Continuous Deployment) 에 대해서는 알고 있어야 하며 Jenkins가 어떻게 이를 지원할 수 있는지 알아야 합니다.

시니어 자바개발자들에게도 이는 더욱 중요해졌습니다. 왜냐하면 그들은 가이드라인을 정하고 프로젝트 코드를 셋팅하고 환경을 설정하고 빌드스크립트를 짜는 중책을 맡았기 때문일 것입니다. 

또한 데봅스에 관한 일반적인 내용과 Docker, Chef, Kubernetes 와 같은 도구와 Maven 및 Jenkins와 관련하여 알아보는 시간을 갖고 더 많은 정보를 알아두는 것을 추천합니다.

대표적으로 Udemy라는 온라인 강의 사이트를 통해 jenkins 및 다른 데봅스 관련 플랫폼을 공부해보실 수 있습니다.

https://www.udemy.com/courses/search/?ref=home&src=ukw&q=jenkins

 

8. Learn Kotlin( 코틀린을 배워볼 것 )

필자는 몇년전에 여러가지 프로그래밍 언어를 사용할 줄 아는 개발자가 되는 것의 장점을 강조하여 쓴 “다재다능한 자바개발자”라는 책을 읽었습니다. 

그 책을 통해 Scala라는 언어를 배워야겠다는 생각을 했습니다. 그 후에 단위테스트와 빌드스크립트를 만드는 것에 있어서의 사용량에 대한 증가로 Groovy라는 언어 또한 배워보았습니다.

그러한 경험은 많은 도움이 되었기 때문에 새로운 JVM 관련 언어를 자바개발자들이 배우도록 권장하고 있습니다. 필자는 이미 “자바개발자들이 2018년에 배워봐야할 3가지 JVM언어”(https://javarevisited.blogspot.com/2018/02/top-3-jvm-languages-java-programmer-learn.html”) 라는 글을 블로그에 포스팅한 적이 있습니다. 요약해서 말하자면 서둘러 코틀린을 배우라고 말씀드리고 싶습니다. 코틀린은 InteliJ의 회사이자 JetBrains의 훌륭한 언어이며 2017년 구글이 발표한 안드로이드 개발의 공식언어입니다.

코틀린으로 당신의 생산성을 향상시킬 뿐만아니라 나중에 안드로이드 개발에도 뛰어들 수 있도록 할겁니다. 

코틀린 소스코드

 

9. Learn Microservices( 마이크로서비스에 대해 배울 것. )

아키텍쳐는 꾸준히 변화하고 있습니다. 이에 따라 많은 기업들은 모놀리식 개발에서 마이크로 서비스로 변화하고 있습니다. 자바개발자들이 마이크로 서비스 아키텍쳐에 대해서 배워야할 때가 다가왔습니다. 또한 최신 흐름을 유지하기 위해 Java로 마이크로서비스를 개발하는 방법을 배워놔야 합니다.

다행히 스프링 프레임워크는 Spring Cloud와 Spring Boot를 제공합니다. 이들은 아주 쉽게 자바로 마이크로서비스를 구현할 수 있도록 합니다.

마이크로 서비스 아키텍처 예제

 

10. Learn Your IDE Better( 개발도구에 대해 배워볼 것. )

한가지 중요한 자바개발자의 특징중 하나는 도구에 매우 능숙하다는 것입니다. 일반 개발자들보다 툴에 대해서 잘 알뿐만 아니라 여러가지 툴들도 많이 알고 있습니다. 

자바프로그래머들에게 이클립스, NetBeans, Intellij와 같은 IDE들이 중요해지면서 이들에게 시간을 투자하여 기능들을 배워놓는 것이 좀더 합리적인 것 같습니다.예를 들어, 플러그인이나 키 셋팅은 개발하는데 있어서 편리하게 도와줄 수 있기 때문입니다.

이클립스 단축키 정보들

 

결론

자바개발자로써 더 나은 개발자가 되기위한 몇가지 팁을 전부 공유해보았습니다. 몇가지 사항들은 모두 따르기에는 조금 적합하지 않은 사항들이 있는 점이 있을 것입니다. 이것을 모두 수행하라는 뜻이 아닙니다. 실무에 도움이되는 것 부터 시작해야합니다. 예를 들어 현재 자바개발을 하고 있다면 자바8부터 공부해보고 스프링 웹개발을 하고 있다면 스프링프레임워크 및 기타 프로젝트들을 공부해야 할것입니다. 그 이후에 단위테스트라던지 JVM 내부라던지 데봅스라던지 주제를 잡아보시는게 좋습니다.

무엇보다도 주위 개발자들에게 이러한 팁들을 공유하는 것을 잊지 마세요. 우리 모두 함께 배워나가는 겁니다.

댓글

Designed by JB FACTORY