프로젝트 진행이 너무 힘들어요.

프로젝트 진행이 너무 힘듭니다.

제가 C#을 공부하고 WPF를 시작한지 아직 1년이 안되었는데요. 대충 다음달에 1년정도 되는 것 같네요.
저는 컴공 석사학위를 따고 주분야는 보안을 전공했습니다. 주로 fuzzing 과 소프트웨어 취약점 연구를 하다 왔습니다.

이런 상태에서 개발을 처음 시작했고 당연하지만 배우는 속도는 빠르겠죠. 기본기는 있으니까요.
그렇다 하더라도 개발을 하는 것 자체가 처음이라 프로젝트 진행할 때마다 스트레스를 너무 받습니다.

당연하지만 회사에 C#과 WPF를 하는 사람이 없고 사수라고 할 수 있는 사람도 당연히 없고…
레퍼런스 될만한 것도 하나도 없는 상태였습니다.

현재 프로젝트는 이전에 Winform 으로 만들어 놓은 프로그램을 받아서 업그레이드 하는 프로젝트 입니다.
분석 결과는 C#을 C처럼 코딩 해놨습니다. 대체 왜 여기서 공유 메모리로 억지로 잡아 놓은 건지…
코드를 확장이 불가능하게 짜놨습니다. 그러다보니 요구사항을 반영하려면 프로젝트를 다 엎어야 하더라구요.

그렇게 WPF를 도입을 하고 mvvm 방식으로 프로그램 설계를 다시 했습니다.
분명히 요구사항은 계속해서 늘어날 것이고 확장성과 생산성을 동시에 가져가려면 WPF에 MVVM이 좋겠다 싶었죠.
여기에 대해서 모두 동의를 했구요.
(이것도 이야기가 깁니다… 예전에 같이 하려고 하던 분이 모든 객체를 배열에 다 때려 박는거 보고 식겁해서 그렇게 하면 안된다고…)

물론 설계부터 사수 없이 저 혼자 했죠. 프로젝트 규모는 개발자들이 사용하는 testing 도구를 만드는 것인데
그러다보니 기능도 많이 들어가고 UI나 편의성 측면에서도 많은 요구사항이 있구요.
그러다 보니 작업량이 상당히 많더라구요.

여기서 문제가 계속 생기는데… 제 상사는 소프트웨어 전공이 아닙니다.
어찌하여 타협 한 것이, 개발의 진척사항을 판단하는데 기능개발 단위로 하겠다고 합의를 봤죠.
저도 당연히 그게 맞다고하고 개발로드맵과 기능정의서, 객체지향 설계도 등 어떤 기술을 사용할 것인지 등등…
여러가지 사항들을 정리해서 드렸습니다.

기능정의서는 backend와 frontend로 나눠서 정의를 했구요.
정의서대로면 backend 먼저 개발하고 frontend를 개발하는 것으로 되어있는데요.
상사는 backend와 frontend 상관 없이 프로그램을 실행 했을 때, 보이지 않으면 기능 개발이 안된거라고 합니다.

backend 기능 개발을 먼저 했는데, frontend가 안되어 있으니 기능개발이 안된거라고 계속해서 말을하니
그럼 frontend를 먼저 개발하고 backend를 개발할까요? 라고 물어보니 눌렀을때 기능이 동작을 안하면
그게 무슨 의미가 있나? 라고 합니다.

제 입장에선 이게 대체 무슨말인가 싶죠. 예정된 backend 쪽 기능개발을 완료하고 unittesting에 refactoring 까지
모두 해서 testing pass가 뜬 상태고 실제 프로젝트에 적용까지 해놨는데 frontend가 안되니까 기능개발이 안된거라고 하니까요. 미칠 노릇 이죠. 그렇다고 이 개발 프로세스를 설명을 하면 자기는 전공자가아니라서 못알아 듣는다. 이 말만 반복입니다.

제가 실력이 미천하여 어쩔 수 없이 계속해서 프로젝트도 지연되는 상황인데
여기서 이런식으로 압박까지 받는데 설득이 안되니까 스트레스를 좀 많이 받네요.

어떻게 이 상황을 해결 할 수 있을까요.

8개의 좋아요

뭐 대충 상황은 보이네요.
회사 상황이 그러한데. 빠르게 작업 진행이 불가능한것을 선택한것이 문제로 보이네요.
좀 느리더라도 FM대로 가고 싶다? 솔직히 이직을 하셨어야 맞는겁니다.

다음으로 기존 소스가 그 지경이라면? 원인이 몇가지가 있지만 애초에 그 회사에서는
그런 식으로밖에 못 만들 가능성이 높다고 생각을 하는것이 좋습니다.
이전 개발자가 허접해서 소스가 그지경이다 라는 판단은 아직 하시면 안되는 연차 십니다.

어쨋든 현시점에서 해결방법은?
MVVM이고 뭐고 backend와 frontend를 가장 빠르게 진행할 수 밖에 없습니다.
갈아엎는것을 선택했을때는 글 쓰신분이 책임을 져야하는 부분도 있는 겁니다.
대부분의 개발자가 새로운 회사에 들어가서 아무리 코드가 개판이더라도 갈아엎는길을
선택하기 어려운 이유가 바로 그것이고요.

저도 새로운 회사에서 갈아엎는길을 선택하기는 했습니다만…
요구사항이 들어오면 기존코드로 일단 할일은 하고 새로운 코드를 짜고 있습니다.
일을 결국 이중으로 하게 되지만 회사에서는 최대한 빨리 결과물을 내는게 맞습니다.

6개의 좋아요

안녕하세요. 초보 개발자입니다. 글 내용과 상관은 없지만 어떠한 이유로 배열에 객체를 넣는걸 피해야하는지 알수 있을까요?? 직렬화 객체를 만들어 다른 객체들을 배열에 담아서 전송했었는데;;

1개의 좋아요

회사 사정은 머… 어느정도 이해는 하고있습니다.
최대한 빨리 하고있는 중이구요. 이러니 저러니해도 완성은 거의 다 해가네요. ㅎㅎ

맨 처음에는 당연히 기존 소스코드를 변경 하려고 했었고 같이 일하는 분과 팀원들끼리 합의를 봐서 다시 엎고 진행하는걸로 합의를 봤었습니다.

정확히 말하면 엎지 않으면 요구사항을 들어줄수가 없었습니다. 사실 이것도 방법이야 찾으면 있겠지만 시간 소모가 비슷비슷하여 선택을 한것인데… 혼자 해야하다보니 뭐가 맞는것인지 모르니 일단 엎고 본거겠죠.

말씀하신대로 제가 다른사람의 코드를 판단할 처지는 아닙니다. 다만, C#을 사용한 이유가 전혀 보이지 않고 기본적인 객체지향 설계가 되어있지 않은 너무나 명확한 코듭니다. 회사가 제조업기반이다 보니 소프트웨어가 많이 약해서 컨벤션은 고사하고 소프트웨어 개발 프로세스가 자리가 안잡혀있습니다. 소프트웨어 개발자도 없어서 이전에 개발하신분은 당연히 개발자가 아니셨구요. 저도 연차높으신분이 판단해줬으면 얼마나 좋았겠습니까 ㅎㅎ 당장 일 진행하려면 판단해서 기존 코드 쓸지말지를 정해야하는데요. 제가 했죠 머…

하튼 이런저런 푸념이였고 지금은 요구사항 다 해결해서 릴리즈 전입니다. 좋은 이야기 감사합니다.

2개의 좋아요

제가 놀랬던건 하나의 뷰에 데이터를 교체하는것을 그냥 뷰를 여러개를 배열로 때려박아서 놀랬었습니다. 대부분 데이터를 List로 만들거나 배열로 만들겠죠. 뷰 객체를 통짜로 배열로 넣지는 않겠죠. 기본적인 다중처리를 해야하는 상황인데 스케쥴링 없이 써야한다던가… 등등 여러가지 많았습니다

2개의 좋아요

이직을 해서 기존 코드를 보면…
“이 사람은 어디 가서 개발을 절대 절대 해선 안된다”
이런 생각이 드는 코드가 있습니다…
@9H05T 님 마음 충분히 공감합니다…ㅠㅠ
그런 일이 있어도, 팀원들과 협의 후 동의를 이끌어내고 일을 진행하셨다는 것은 대단하신겁니다.
어찌되었든 잘 갈아엎으시고, 거의 완성된 것 같은데 축하드립니다!

1개의 좋아요

뷰를 배열로 넣는건 생각치도 못했네요 ㄷㄷ;; 저리하면 뷰 전환이 좀더 빠른가 보네요… 아니면 뷰 접근시 예외 처리를 피할려고 그랬을까 싶기도 하네요;; 여튼 또 하나 알아가네요 ㅎㅎ 후에 한번 써봐야겠습니다 감사합니다~!