개발자로서 이제까지 다양한 클래스를 사용하고 메서드를 호출하며 코드를 작성해 왔지만, 대부분은 선임의 주도적인 개발이나 구글링을 통해 찾은 방법에 의존한 경우가 많았다. 특정 상황에서 특정 클래스를 사용하고 특정 메서드를 호출하는 것이 당연하게 여겨졌고, 왜 그것이 필요한지, 그 선택이 어떤 의미를 가지는지에 대해 깊이 고민해 본 적은 드물었다.
예를 들어, Java의 StringBuilder
클래스는 문자열을 효율적으로 조작할 수 있는 클래스로 잘 알려져 있다. 하지만 지금까지는 단순히 "문자열을 자주 변경해야 할 때는 String
대신 StringBuilder
를 써야 한다" 정도로만 알고 있었다. 이 클래스가 어떻게 메모리를 효율적으로 사용하여 문자열을 관리하는지, 왜 String
보다 성능이 나은지에 대해서는 깊이 이해하지 않고 사용해 왔다.
또한, Java의 List
인터페이스의 contains()
메서드를 사용할 때도 비슷한 경험이 있었다. 특정 값이 리스트에 포함되어 있는지 확인하는 데 유용하게 써왔지만, 리스트의 크기가 커질수록 성능에 어떤 영향을 미치는지, contains()
메서드의 시간 복잡도가 무엇인지 고민해 본 적은 거의 없었다. 단순히 필요한 기능을 구현하기 위한 도구로만 생각했기 때문에, 최적화가 중요한 경우 이 메서드를 신중하게 써야 할 상황을 놓치기도 했다.
앞으로는 단순히 기능 구현을 넘어, 사용하는 기술과 도구가 가진 원리와 목적에 대해 생각하며 개발을 진행할 것이다. 이를 통해 보다 의식적이고 깊이 있는 개발자가 되는 것이 목표다.
이러한 마음가짐을 통해 기술 선택과 코드 작성에서 더 나은 판단을 내릴 수 있는 개발자로 성장하고자 한다. "알고 쓰자"라는 마음가짐을 기억하며, 작은 코드 한 줄도 왜 사용하는지 이해하고 고민하는 태도를 잃지 않으려 한다.