提问 HN:软件工程师应该接触研究吗?
2 分•作者: c_daeda•9 天前
我提出这个问题是基于我个人的情况,并非对软件工程的泛泛之谈。<p>我是一名计算机科学专业大四学生,主攻机器学习。我的大学没有机器学习方面的应用研究,所以在学校里做机器学习(上课/研究)基本上就是一条通往学术界理论/算法领域的单行道。<p>去年,我突然意识到我擅长(并且喜欢)通过连接系统中的各个组件来解决问题,而不是把问题硬塞进某种形式,以便应用一些数学定律。具体来说,我非常喜欢与艺术家/UI/UX/前端/非技术人员合作,担任他们的后端支持。我为机器学习工程师构建过数据管道,为UI/UX/前端设计师构建过后端,为生物医学工程研究人员构建过机器学习管道,以及为艺术家构建过投影/图像软件。<p>我比较泛,不拘泥于工具,涉猎广泛但不够深入。这感觉就像是软件工程。<p>话虽如此,我确实喜欢了解事物的工作原理,并且对阅读数学有相当的耐受力。这听起来很书呆子气,但我喜欢推导梯度下降的收敛性,也喜欢实分析。我还非常喜欢Nand2Tetris(一个开源课程,教你从与非门开始构建一台最小的计算机,以及从面向对象语言到二进制的编译器)。对我来说,看到人们过去做出的伟大设计选择,是非常优雅的。我觉得这些在软件工程中被低估了。<p>目前,我有一个机会和我的强化学习教授一起工作,他在顶级会议上发表论文的记录非常出色。我真的犹豫不决,因为他的研究方向是强化学习算法,而我在之前的另一个算法研究项目中经历了一次非常糟糕的体验(我对我们在做什么有一个模糊的概念,但远远不足以做出贡献)。我同时也在申请工作和硕士,而且我非常确定,如果我毕业后进入行业,我就再也不会碰这个话题了。<p>我有这两个问题:
1) 我听起来像你认识的软件工程师吗?你认为我还适合哪些其他角色?
2) 我应该仅仅为了研究经历而抓住这个机会吗?你认为这对于我作为一个机器学习应用从业者跟上趋势有必要吗?<p>附注:这是我第一次在HN上发帖,这看起来比一般的Ask HN帖子长很多。我不知道这是否合适。如果我应该去一个subreddit,请告诉我。<p>如果你读了这么多,先谢谢你!
查看原文
I am asking this question for my personal circumstances --- not a general statement about software engineering.<p>I am a CompSci senior focusing on ML. My university does not have applied research in ML, so doing ML in school (classes/research) is pretty much a one-way ticket to the theory/algorithms side of academia.<p>Last year, I had the epiphany that I am good at (and enjoy) solving problems by connecting components in a system instead of finagling a problem into a form where we can apply some mathematical law. Specifically, I have greatly enjoyed working with artists/UI/UX/frontend/non-tech people as their back-end counterpart. I have built data pipelines for MLEs, back-end for UI/UX/frontend designers, machine learning pipeline for BME researchers and projection/imagery software for artists.<p>I am pretty generalist and tool-agnostic, with more breadth than depth. That feels like software engineering.<p>That said, I do like to have an understanding of how things work and I have a decent tolerance for reading math. This is a really nerdy thing to say but I enjoyed deriving stuff like the convergence of gradient descent and I enjoyed real analysis. I also really enjoyed Nand2Tetris (open source course teaching you to build a minimal computer from NAND gates + compiler from OOP language to binary). It's extremely elegant to me, seeing the great design choices people made in the past. I feel like these are underappreciated in software engineering.<p>Right now, I have an opportunity to work with my RL professor, who has an amazing track record publishing at top conferences. I am really on the fence because his research is in RL algorithms and I had a very bad experience in my last algorithm research project somewhere else (I had a vague idea of what we were doing but nowhere near enough to make contributions). I am concurrently applying to jobs and Master's and I am pretty sure I will never touch this topic again if I go into industry after graduation.<p>I have these two questions:
1) Do I sound like the software engineers you know? What other roles do you think I am a good fit for?
2) Should I take this opportunity simply for research exposure? Do you think this is necessary in helping me keep up with trends as an applied practitioner in ML?<p>P.S. This is my first time posting on HN and this seems a lot longer than the average Ask HN post. I don't know if that's appropriate. Please lmk if I should go to a subreddit instead.<p>Thanks in advance if you read all that!