본문 바로가기

전체 글115

잘 하는지 못 하는지도 중요하지만.. 코딩을 잘 하는지 못 하는지는 개발자가 되기 위한 최고 우선순위일 것이다. 하지만 소프트웨어 개발에 대한 이야기를 듣고, 공부를 하면서 드는 생각은, 어쩌면 잘 하는 개발자가 되는 것도 중요하지만, IT 회사에서 개발을 어떻게 하고 있는지 숙지하는 것이 더 중요하지 않을까? 하는 생각이다. 요즘은 너무 뛰어난 신입 개발자들이 정말 많아지고 있다. 개발 툴과 프레임워크도 쉬워지고 있고, 특히 부트캠프나 학원, 인터넷 강의가 너무나 발달되어 있기 때문이다. 그래서 나는 조급한 마음에 자꾸 기술에 시간을 투자했지만, 잘 하는 개발자에게 항상 주늑이 들었다. 그래서 다소 시야가 좁아졌던 것 같다. 독학을 하는 탓도 있겠지만 자꾸 구현, 코딩, 문제 풀이에 집중하다보니 정작 산업에서 개발자들이 어떤 원리를 토대로.. 2023. 11. 26.
자바의 문법보다 더 중요했던 소프트웨어 개발 원리에 대한 이해 자바를 학원에서 처음 맛 봤을 때는 정말 쉽게 배웠다. 클래스를 기초 빌딩 블록으로 사용하는 C#이나 C++도 문법적 기능은 쉽게 공부했다. 하지만 왜 나는 자바를 학원에서 배웠음에도 전혀 소프트웨어를 개발하지 못했던 것일까? 학원에서는 단순히 자바의 기초 문법과 스프링 포맷만 가르치고는 바로 프로젝트 개발로 뛰어들었다. 나는 그 방식에 전혀 적응하질 못했다. 분명히 자바 강의와 책을 통해 사용법을 익한 상태였다. 하지만 사용법은 알고 있었지만 사용할 줄을 몰랐다. 아무리 문법을 알아도 기껏 사용할 수 있는 것이라곤 전형적인 C언어 스타일로 간단한 알고리즘과 자료구조 문제를 푸는 방식 뿐이었다. 게다가 애초에 소프트웨어를 만들라고 과제를 던져주는데, 나는 정작 소프트웨어 개발 자체가 무슨 의미이며 어떤 .. 2023. 11. 24.
코드 컴플리트 8장 - 방어적 프로그래밍 요약 8장은 방어적 프로그래밍을 다룬다. 방어적 프로그래밍이란 마치 고속도로에서 운전할 때 앞 차량과 안전 거리를 유지하는 것과 비슷하다. 설령 다른 모듈에 의해 야기된 잘못이라도 루틴이 문제 없이 동작하도록 대처하는 프로그래밍을 말한다. 즉, 다른 출처의 실수로부터 자신의 로직을 보호하는 것이다. 1. 잘못된 입력으로부터 보호 소프트웨어 공학에서는 "Garbage In, Garbage Out" 이라는 유명한 말이 있다. 잘못된 데이터가 입력되면 잘못된 결과가 초래된다는 뜻이다. 그러나 쓰레기가 들어왔다고 아무것도 하지 않고 쓰레기를 뱉어내어선 안 된다. 쓰레기가 입력되면 그에 맞는 대처를 해야 좋은 소프트웨어다. 1-1. 외부로부터 들어오는 모든 데이터의 값을 검사하라. 파일, 사용자 입력, 네트워크 통신,.. 2023. 11. 23.
코드 컴플리트 5장 - 구현 설계 요약 ※5장은 설계와 관련된 실천법을 다룬다. 설계 방식과 그 정도가 모든 프로젝트에서 동일하게 취급되지 않는다는 점에 유의하라. 어떤 작은 프로젝트에서는 설계란 곧 코드를 입력하는 것이다. 어떤 프로젝트는 바로 코드로 작성할 수 있을 만큼 상세하게 설계하기도 한다. 많은 프로젝트에서 UML을 그리거나, 혹은 그리지 않고 의사코드로 만족하기도 한다. 설계 작업은 프로젝트마다 그 정도와 방식이 다르다. 그럼에도 설계와 관련된 실천을 익힌다면 어떤 방식과 강도로 설계 작업에 착수하든 도움이 될 것이다. 1. 설계의 어려움 1-1. 설계는 불명확한 문제다. 완벽한 설계란 없다! 설계자가 요구 사항으로부터 완벽하게 설계를 완성한 뒤 구현으로 넘어가는 것은 불가능한 기대다. 지금껏 그 어떤 소프트웨어도 완벽한 설계를 .. 2023. 11. 23.