[잡담] 소프트웨어 엔지니어에 대하여

Uno·2021년 8월 13일
1

잡담

목록 보기
3/4

소프트웨어 엔지니어는 무엇을 하는 사람일까?

위 질문은 많은 사람들이 고민해봤을 겁니다!

특히 취준생들은 더욱더 고민해봤겠죠.

면접에서 물어보니까요.ㅎㅎ

위 질문에 대한 제 생각을 한 번 작성해볼까합니다.

엔지니어는 문제를 해결하는 사람이다.


위 답변에 만족하시나요?

근데 앞에 단어가 하나 빠졌죠?

바로

"소프트" 입니다.

엔지니어가 문제를 해결한다고?

네, 전 그렇게 생각합니다.

소프트웨어 엔지니어만 한정지어서 문제를 해결하는 사람이라고 생각하지 않습니다.

기계공학 엔지니어는 기계공학지식을 기준으로 해당문제를 분석하고 답을 찾습니다.

소프트웨어 공학자는 소프트웨어지식을 기준으로 해당문제를 분석하고 답을 찾습니다.

예를들자면,

Q.5층에서 달걀이 떨어진다, 달걀이 몇 초에 떨어지는지 알 수 있는가?

1. 기계공학

- 무언가 떨어진다? ,, 물체의 움직임을 다루는 학문이 무엇이지?
-> 아 동역학! 근데 근데 움직이는 물체를 다루는게 아니라 지금 도달시간이면, 도달했을 그 순간이면 멈춘것 같은데?

음.그러면 지금 내가 구해야하는건 시간이다. 현재 주어진 값이 다 있으면서, 시간이 있는 공식이 무엇이지?

아
"F = ma"

음 그런데 시간은 없는데?
여기있는 변수들 중에서 어떻게 시간을 구할 수 있을까?

a - 가속도 음.. 그러면 가속도는 속도의 증감비율이다.

그러면 증감을 시간으로 나눴구나.

a = 속도 / t

...
2. 컴퓨터공학
- 일단 결과값으로 t가 나와야겠네, return 은 t 이고 타입은 Float 로 하자.

- 그러면 입력값은 음.. 물체랑 층수 일 것이다.
-> 물체는 = m , 그리고 층수는 floor 로 받자.

func calTimeToGround(_ kg: Float, Floor: Int) -> Float {... }
이렇게 식을 먼저 정하고 시작하자.
...

둘 다 문제를 해결하는 과정입니다.

다만 어떤 도메인 지식을 활용하나 차이죠.

결론적으로

소프트웨어 엔지니어는 "컴퓨터공학지식"을 활용하여 문제를 해결하는 사람이다.

로 결론 지을 수 있습니다.

그러면 실력이 좋다는 것은 문제해결을 잘하는 사람인가?


제가 생각한 각 직급별 요구능력입니다.

  • 신입 : 문제가 명확하다. 그리고 해결책이 명확하다. 그래서 그것을 빠르게 문제해결방법을 빠르게 구현하면된다.

  • 주니어 : 문제가 명확하다. 그러나 해결책이 여러가지 있다. 그래서 여러가지 해결책을 빠르게 해보고 최선을 선택한다.

  • 시니어 : 문제는 명확하다. 그런데 해결책이 없다. 이유는 처한 상황이 너무 구체적이라 찾아볼 자료가 없다. 해결책을 스스로 찾거나 만들어야 한다.

  • 그 이상 : 문제가 안보인다. 문제를 먼저 정의해야한다. 그리고 그 해결책을 스스로 찾아 해결한다.

위 의견은 전적으로 개인적인 생각입니다.

그런데, 제가 프로그래밍을 해보니 지금까지는 제 경험상 그런것 같습니다.

신입이나 주니어는 문제가 있고, 해결책도 있습니다. 그걸 할 줄 알면 됩니다.

마치,
자격요건에 특정 프레임워크 사용경험부터 앱출시경험 등등이 중요한 것이죠.

주니어부터 시니어는 이제 해결책을 찾아야합니다. 아무래도 해결책을 만들기 위해서는 경험이 중요하죠. 그러다보면, 자연스럽게 경력이 중요하고, 지금까지 해온 프로젝트가 중요해질겁니다. 또 알고리즘도 알아야한다고 봅니다.

그 이상은 본적도 들은적도 없어서 감히 못 적겠습니다.

결론


소프트웨어 엔지니어는 문제를 해결해야한다. 그런데 먼 미래에는 그 문제를 스스로 찾아야하는 날이 올 수도 있다.

지금 공부하는 것들이 어떤 상황에서 어떤 문제정의를 통해 나온 대답인지 고민한다면, 먼 미래도 대비할 수 있는 개발자가 될 것이다.

읽어주셔서 감사합니다^^

profile
iOS & Flutter

0개의 댓글