你的领导和同事的观点是正确的,因为很明显,如果想在任何一个专业领域进行深入的研究,纯靠自学和培训班是会遇到天花板的。

“数据科学”和“数据科学家”的概念有点含糊。需要首先明确定义你想要的方向,进而找到明确的学科专业学习,比如:

  • 如果对统计理论和方法学感兴趣,最好去读一个统计 PhD 或生统 PhD。虽然不能保证让你在未来成为专家,但至少可以让你了解整个领域的情况,有一块敲门砖,选择自己想参与的事情。
  • 如果想做 AI 这种比较侧重应用和实践的方向,我觉得倒不必读统计或计算机 PhD:如果不在意写大量的 Python,每天跟进新文章,在 Hugging Face 上做开源,是可以成为 AI scientist 或 AI engineer 的。

    nan.xiao
    谢谢您,我读过您翻译的R语言实战第1版,受益良多。

    我会好好想想接下来的发展路径,您说的这两点中,我可能对第一点的兴趣更大一些。我看一下有没有机会去搞一个统计领域的博士学位。我也比较想在将来写一些实用的包,能够在一定程度上帮上人。

    显然我只生产锅碗瓢盆但并不炒菜,我也母鸡我咋就戴上了厨师的帽子。

    不过呢,正好我觉得我在这条路上已经快走到了尽头,我非常有兴趣把我手里的剑传给能挥舞它的人。这位少侠既然对我的职业路径有兴趣,不妨和我聊一聊,看我到底是会把你劝退还是让你接班。当然,最终你肯定不会成为我或其他人,你会是独特的你,最多参考一些别人的内功心法、在某些方向上能进展更快一点,最终还是会练成自己的独门功夫。

      7 天 后

      感觉在传统制造业,国内还处于数据分析是资深工程师的技能之一的阶段。专业化和职能化还差得远。互联网应该好一点,但是感觉也是取数工程师,基本上还是在专业领域做业务为主。
      另外觉得楼主在凡尔赛+1

        数学科学家必须要很强的概率学基础,写核心程序包同样需要一定的程序设计基础,特别是编算法时,就需要费智商;极端一点,还得考虑并行计算、GPU计算、各CPU平台等情况。
        这两种绝对不是普通人可以做到的。

        大多数人,只是单纯地写应用层面的软件包而已,会编手册、教程,就超越普通人了。

        当然,从技能层面出发,懂数据分析的管理岗位,确实可以更好地做好自己。当然,如果能印度人一样单纯会PPT也能爬上去,那最好不过。

        至于数据科学,个人认为门槛没有那么高,只是一种普通岗位而已。

          wglaive

          谢谢您,这也是最近几年我想继续在WHO发展的原因之一,怕回国后找不到合适的工作

          hellowolrd

          谢谢您,您说过的这几点我想过,概率学基础我还行,但是程序设计基础很差。我目前在这方面的知识,全都是在Advanced R里面学的,而并行计算等属于知道概念和能用furrr等包的阶段,离在自己写程序时考虑这些,差的很远。

          像您说的,单纯写软件包,我现在还刚刚处于这个阶段。

            Claireasstronaut

            看个人定位了,工作之余,偶尔有空写个小软件包也不错。
            我个人还是比较喜欢stackoverflow上面的答题方式,遇到小问题,就几行代码演示。
            之前有个问题是多种两两比较pairwise的选择,我就写了一个小程序,再用yihui老大的animation包,做成gif图,这样就比较好展示。

            实际上CRAN软件包这么多,应用时依然需要一些小工具,比如一条龙式的分析再输出结果,多方法的对比判断,少见情况的计算,这些都可以试着完善。

            我就知道长三角有个急诊医生写了一个医学分析的包,就是打包常见的数据分析方法,每次都提醒读者不必打赏,但请务必引用。哈,这也不错,拉高个人H指数 。

            说起程序代码,个人看最简单的卡方分析,都发怵。官方软件包里都是规范的代码,具体是不停地判断输入的参数是否合格,整体显得特别啰嗦;真正的计算过程,反而特别精炼,一两行而已,甚至都没有注释,真难以理解。

            说出来不怕笑话,为了方便理解,我干脆中文编程,变量都是汉字,凑合吧。反正就自己偶尔用。

              hellowolrd

              中文编程是这样的吗

              召唤雷电 = function(咒语 = "三重火") {
                return(
                  dplyr::case_when(
                    咒语 == "冰冰雷" ~ "米瑞特之阻碍",
                    咒语 == "雷冰雷" ~ "吾之大敌皆浮于空",
                    咒语 == "三重雷" ~ "恩多利昂的恶之混动",
                    咒语 == "雷雷火" ~ "迅猛作战之魔令",
                    咒语 == "火雷火" ~ "塔拉克的天坠之火",
                    咒语 == "三重火" ~ "哈雷克之火葬魔咒",
                    咒语 == "火冰火" ~ "达尔文最狡猾的造物",
                    咒语 == "冰冰火" ~ "科瑞克斯的杀戮之墙",
                    咒语 == "冰雷火" ~ "布鲁冯特之无力声波",
                  )
                )
                
              }
              
              召唤雷电()
              #> [1] "哈雷克之火葬魔咒"

              说来这还真是我第一次感受中文编程:

              # 预备起
              抽样 = sample; 匹配 = grepl; 码转字 = intToUtf8; 字转码 = utf8ToInt
              `%从左到右%` = function(左, 右) 左:右
              COS论坛与COSPLAY无关 = TRUE
              
              # 看它是不是中文
              它是中文 = function(字符串) {
                匹配('[\u4E00-\u9FFF]', 字符串)
              }
              
              # 随机抽一个整数,转成 UTF8 字符,如果是中文就返回它
              获取随机中文字符 = function() {
                while (COS论坛与COSPLAY无关) {
                  字 = 码转字(抽样(65536, 1))
                  if (它是中文(字)) return(字)
                }
              }
              获取随机中文字符()
              #> [1] "掌"
              
              楼上方法太笨看我的 = function(要多少有多少 = 1) {
                中文范围 = 字转码('\u4E00') %从左到右% 字转码('\u9FFF')
                中文范围 |> 抽样(要多少有多少) |> 码转字()
              }
              楼上方法太笨看我的()
              #> [1] "粘"
              
              楼上方法太笨看我的(666)  # 好像没几个认识的,我可能上了个假学
              #> [1] "瀕徻弪隔傰药勄櫯墜嬺礷叔释復疋宻..."

              好像还不赖,感觉代码可读性暴涨。