ui|广工工作室各方向学习指南

广工工作室各方向学习指南 新的学期即将开始,计算机学院各大工作室也陆续会在本学期开始招新。但是想要加入工作室,我们需要一定的知识储备,并顺利通过所有的考核。此刻的你也许还很迷茫,对工作室的各大方向和和该如何学习都还不够了解。
为此,我邀请了数智工作室各方向的负责人共同完成这篇推文,下面将以数智工作室的五大方向为例,给大家说明各方向是做什么的和针对初学者做一个学习推荐。
UI 简介
UI即用户界面设计,也称人机界面。最普遍的应用是在软件开发中,指程序的用户操作界面设计。UI在网站界面、软件界面、手机应用界面等多图形用户界面的设计都属于UI设计。学习UI将需要熟练使用PSAI等设计软件,同时也需要学习动效建模和用户心理学,UI是和用户最直接接触的环节,优秀的UI能最大程度提高用户体验,最大化实现功能的应用。
入门指南
UI其实早已出现在我们生活的方方面面,当我们刷着手机,看着电视,在互联网上的时时刻刻我们都接触UI作品,小到开机界面大到软件流程,优秀的作品甚至能产生品牌效应,通过优秀的设计实现培养强大的用户粘度,最有名的就是苹果的设计,通过精益求精less is more的前期设计,引领一波设计风潮。那,如果要入门UI设计,该从哪里开始呢?

  • 一、入门准备
    你是否热衷于各种好玩新奇的产品呢?
    你是否平时喜欢使用各种各样的产品并研究它是否好用呢?
    你是否更容易发现使用中的各种问题,并积极想办法解决它呢?
    你是否充满各种灵感和创意?
    你是否喜欢思考问题,清晰的罗列各种解决方案,并寻找其中的逻辑关系而乐此不疲呢?
    在绘制草图的时候,你是否有一种莫名的兴奋感呢?
    你喜欢跟人沟通和交流、展示你的想法和创意吗?
    如果问题答案大部分是肯定的,那恭喜你!这说明你很适合接触设计类工作,接下来可以进行基本了解,多多观察手机内app页面设计和跳转逻辑,可以开始下一步了解啦。
  • 二、软件了解
    UI设计需要熟练掌握基础软件PSAIAE以及专业UI设计软件sketch/figma等。入门可以在B站观看相关视频学习,建议应当了解先着重弄懂每个软件基本功能并熟练使用,再学习较为复杂的效果制作,这样不仅能锻炼好基本功,也更方便在做效果时能更快理解更快掌握,最终实现举一反三的操作。这里推荐GenJi是真想教会你的一系列视频进行软件的入门。
    (小建议:软件下载尽量下载较新的版本,此时练习作品也最好建立分类法来归类,方便以后查询)
  • 三、设计了解,学习设计
    这个有内容就有点多了,因为是养成思维的必经之路。
    【ui|广工工作室各方向学习指南】比如配色、排版、字体设计三大构成,消费心理学、沟通学,以及思维导图、原型图,还有交互逻辑、规范、切图、了解程序、互联网思维、用户体验,还有一些网络营销都是需要学习的,因为这和产品商业价值有关。当然这些都是后期进阶了,总而言之,多看优秀作品,提高设计审美,到这一步就可以开始尝试创作自己的作品啦!
    设计书籍推荐 - 100本改变设计命运的书籍 (shejidaren.com)
深度学习 简介
数智深度学习组主要以NLP(自然语言处理)作为总体研究方向,使用知识图谱技术;团队内本科生与研究生可共同学习、讨论,已有本科师兄发表学术论文,参加数学建模比赛取得奖项。该方向更注重当前学术界先进的知识理论,掌握部分基础之后,主要以通过论文的阅读来进行知识补充,如果需要,则会与开发方向的伙伴们进行合作开发。
基础
  • 部分理论知识:概率论,线性代数深度学习基础
    • 说到底是矩阵的操作,这类知识是逃不掉的。
    • 前者可以需要这类知识的时候进行补充,后者可看B站吴恩达深度学习进行了解。
  • 编程语言基础: python
  • 部分第三方库:
    ? 无论是深度学习还是其他相关方向,数据的获取和处理都是十分重要的,有时候世界上现存的数据集或者词库可以满足需求,而有时候更需要自己获取清洗再生成。从这个方向来看,便需要大家掌握以下内容:
    • 数据处理:numpypandasre 库…等等
    • **爬虫:**请求库 request\selenium; 解析库beautifulsoup\lxml
    • 机器学习:scikit-learn (熟悉部分经典机器学习算法,掌握查询官方文档会使用即可
进阶
  • 深度学习使用框架:tensorflow2.0以上的库,主要使用其中的keras进行编程,实现所需的神经网络。
重要能力
  • 看论文以及复现论文模型的能力
※以上内容大部分都可在B站学习,科研道路很长、需要沉得下心,才能有所收获!
前端 简介
前端技术已将深入到人们生活的方方面面之中,在目前互联网时代,只要公司有需要开发互联网产品,包括网站,网页,H5,小程序,APP等等,就需要前端开发工程师岗位,具体的就业方向还可以按公司的技术需求来区分,侧重点各有不同,就业行业随着互联网的发展,已经变得越来越广泛了。
只要你想做,前端几乎无所不能,JavaScript作为前端的主要编程语言,既可以与UI框架(例如:VueReactAngular)结合做业务,、又可以和游戏引擎(例如:Cocos2D-X、白鹭引擎)结合制作HTML5游戏、还可以结合Node.js写后台,甚至还可以结合Three.js创建3D场景。
入门
学习路线:HTML => CSS => JavaScript
我们建议先从三剑客(HTMLCSSJavaScript)学起,万丈高楼平地起,坚实的基础能帮助我们在接下来的学习技术之路上走得更稳健。
学习前端,与专业无关、任何热爱技术的人都可以学习,请不要给自己设限。前端的入门门槛并不高,你甚至可以没有编程基础,三剑客的基础知识可以先通过观看视频来学习,b站中任意播放量高的零基础入门前端视频都行。由于前端技术发展很快,视频的内容很有可能已经有些过时了,这时候就可以到MDN、或W3Cschool查看最新标准。三剑客中最重要的就是JavaScript,单看视频只能学会基础用法,想要深入学习就必须要看权威的书籍,如《JavaScript高级程序设计(第四版)》或《JavaScript权威指南(第七版)》,其中前一本现在在网络上已经有电子版可以下载阅读。目前网上已经有很多开放的api接口,如果觉得自己三剑客已经学得不错的时候,可以继续学习Ajax,然后利用开放的api接口以及原生的三剑客制作一个属于自己的完整的应用程序,体验前后端交互以及独立完成一个项目的感觉,至此,就算是正式入门前端了。
进阶
继续深入前端就必然避不开TypeScript,作为JavaScript的超集,ts在开发应用级程序上有着无可比拟的优点,学习ts可以直接去看ts的官方文档。
如果你在之前的前端入门阶段都一直在使用原生的三剑客来编写代码,那么学习到这个阶段,你就可以开始去接触三大UI框架(VueReactAngular),使用框架能够让我们的开发速度大幅提升,同时使用框架构建项目还可以使文档结构会更加清晰。学习框架可以先通过看视频入门,但是深入了解还是要回归官方文档。
后端 简介
什么是后端?
我们访问网站时,除了一打开就映入眼帘的各色界面,还有隐藏在其中的各种数据,而后端就负责对这些数据进行一系列管理与操作。
后端需要学习什么?
后端入门
不积跬步,无以至千里;不积小流,无以成江海。在了解和上手Web开发后端之前,需要先掌握最基础的开发能力。
  • 首先,当然是掌握最基础的一门语言。在WEB开发中,Java是后端最常用的语言之一,掌握好Java也是最基础的一个环节。
  1. 除了掌握好基础语法,还需要了解几大模块,异常处理、IO流、线程、集合、封装、周期、反射等等。
  2. 掌握好Java语言的设计思想,弄懂设计思路,你会发现阅读代码、理解模块以及设计程序的能力大大提升。
  • 其次,学习完JavaSE后,我们可以逐渐过渡到学习JavaEE
  1. JavaEE是一套使用Java进行企业级Web应用开发的大家一致遵循的工业标准。
  2. 掌握好JavaEE的13种核心技术规范,你就会拥有最基础的Web开发能力。
  • 学习JavaEE整个体系,你将会了解和掌握后端事务的业务流程、数据库、ServletJSP等等在开发过程中起着重要作用的技术应用。
  • 学习Git,了解Git仓库原理,掌握Git使用技巧,学会使用Git管理代码。
  • 在这里,推荐学习Web开发前,先掌握最基础的Web知识,了解HTTP工作原理。(这里推荐《图解HTTP》这本书,对刚入门者非常友好易懂)
  • 最后,为了对整体Web开发有一个完整的理解以及展现出我们后端的数据,除了学习后端的知识,我们还需要掌握一些前端知识(HTMLCSSJS)。
  • 成果:通过处理好后端数据以及接口,结合前端页面,我们就可以成功搭建我们的Web网站啦,成就感满满。
后端进阶
  • 通过入门阶段的学习,我们已经有一定的能力可以搭建自己的网站了,但是,后端远远不止于此。
  • maven学习
  • 在这一阶段,我们更注重开发效率以及模块封装性和性能。我们需要掌握SSM框架,也就是Spring+pringMVCMyBatis集合框架。
  • 学习Spring时,我们要掌握Spring的核心思想,IOC控制反转,了解bean工厂的强大作用。
  • 学习SpringMVC将有助于我们了解整个请求在框架中的执行过程,对拦截有更深刻的了解。
  • 学习mybatis,我们对数据库底层的操作将变得更加简便透明,体验自定义SQL以及高级映射的简便性。
升华阶段
  • 在掌握好了SSM框架后,为了让开发更加简便,我们需要简化Spring繁琐的各种配置依赖,学习SpringBoot框架。
  • SpringBoot框架是目前最常用的开发框架,掌握好他,是成为一个后端开发者的必经之路。
  • 掌握linux基础知识,学会配置服务器,部署项目等等知识。
  • redis等其他类型数据库
  • 除了了解更多包和工具,掌握核心基础,作为后端开发者,我们还要与时俱进,学习了解一些优秀的中间件,微服务以及分布式开发等等。
  • ssm框架源码深入理解
一入后端深似海,从此红尘是路人
前期准备:
  • 下载开发工具IDEA、配置好JDK和环境(常用JDK1.8版本)
  • 找到适合自己的学习方法(推荐书籍配合视频进行学习)
  • 一颗热爱学习后端,不断进取的心。
学习资源推荐:
后端路线图
学习路线
黑马JavaSEJavaEE等系列视频
书籍:《Java核心基础》、《图解HTTP》、《HTTP权威指南》、《深入理解java虚拟机》
安卓 简介
Android作为全球第一大的智能手机操作系统,拥有着手机操作系统中最活跃的用户群体和开发者。在当下这个人们重度依赖手机的时代,学习掌握安卓开发技术,一定能为你创造格外的价值。
Android软件的开发包括原生开发和跨平台多端开发,其多样的开发方式能让我们能学到多种开发技术和创造出更多的可能。学习好Android开发,用技术创造艺术。
基础
作为安卓开发者,我们的开发基础就是掌握如何使用Java语言进行Android原生开发。这时,有的小伙伴要问了,谷歌官方现在不是不推荐使用Java,转而推荐使用Kotlin开发了么?为什么我们不直接学习Kotlin呢。首先,让我们来看一下菜鸟教程中对Kotlin的定义。Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin语言依旧是运行在Java虚拟机上面的;并且在很多的开源项目中,依旧使用的是Java,所以我们现在依旧要以Java为学习基础。
对于Java学习,我推荐先学会一些基本的Java语言特性及其基本使用再去学习Android开发,如果大家着急上手Android,可以到B站看18年尚学堂的教学视频学习,我们需要学习完多线程即可。下面是视频的链接
(最新)尚学堂 JAVA300集附源码高清版_哔哩哔哩_bilibili
再接下来,我们需要一本好的Android入门书籍或者是学习视频,作如下的推荐
书籍:《第一行代码》第二版 ——郭霖
学习视频:程序猿拉大锯的个人空间_哔哩哔哩_bilibili
能力提升
在掌握Android基础之后,我们除了实战去复现一些APP,还需要对这项技术进行深入了解;深入浅出,唯有深入,方能浅出。
我推荐大家边阅读**《Android开发艺术探索》**这本书,同时附上一份笔记博客:《Android开发艺术探索》读书笔记_willwaywang6-CSDN博客
同时,我们不断去阅读官方的开发文档也是十分必要的,这个才是最一手的资料。英文阅读也许对我们来说有些困难,但我们不该让它成为我们变得更强的拦路虎
更多的技能
Java 由于原生开发使用到的Java或是Kotlin都是运行在Java虚拟机上面的,我们是有必要去学习更多的Java知识的。如果你还是想看视频学习的话,我还是推荐尚学堂的视频,你可以继续看上面的旧版视频,也可以去B站搜索官方最新版的(使用IDEA开发的)。
相关书籍推荐:《Java核心技术卷》/《Java编程思想》,《深入理解Java虚拟机》
kotlin 现在谷歌强力推荐Android开发者使用Kotlin进行开发,很多公司和从业者都已经转向使用Kotlin进行开发,并且几乎所有的Android大佬的博客代码都是使用kotlin;不仅如此,由于KotlinJava100%兼容,语法简介和更加高级等特性,使用Kotlin去开发Android软件在效率上是有极大提升的。作为Android开发者,我们很有必要去学习如何使用Kotlin开发软件。
这里推荐的入门书籍是:《第一行代码》第三版 ——郭霖
Flutter Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台(目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux、Fuchsia)。Flutter的跨平台能力很强,因为它是以自绘UI+原生的方式来实现跨平台技术的,它利用自绘的引擎调用系统API绘制UI。而其他的跨平台技术,例如web APP,需要借助WebView渲染;或者React Native这种js+原生渲染的方式,其需要转化为原生控件;这些跨平台方案的性能都不如自绘UI+原生的方式要好。
使用Flutter开发软件,其优势不仅在于高性能的跨平台运行,其相对于原生开发有着更高的开发效率,Flutter的热重载能帮助我们更好的测试、构建UI、添加功能和修复错误。作为Android开发者,掌握Flutter无疑如虎添翼
学习Flutter推荐的书籍为:《Flutter实战.第二版》;同时,我们需要结合官方文档来学习,逐步复现出Flutter的官方示例APP——Gallery。下面给出Flutter中文网链接,该网站同时还包括《Flutter实战.第二版》电子版的入口和掘金的Flutter社区入口。
Flutter中文网:Flutter中文网 (flutterchina.club)
推荐的博客专栏:Flutter相关_lifeidroid的专栏-CSDN博客
adb adb是什么,官方文档的解释是这样子的:Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序。顾名思义,就是利用命令行连接设备和调试APP的工具,在开发过程中,我们很有必要去掌握它。网上很多教程教你怎么配置路径和使用电脑的命令行工具使用,其实最新版的Android studio中,只要安装配置好SDK,直接使用Android studio下栏的命令行工具Terminal就可以使用了,你可以直接输入adb version查看一下版本和路径。下附官方文档链接和常用命令博客链接。
官方文档:Android 调试桥 (adb) | Android 开发者 | Android Developers
博客:聊一聊Android开发利器之adb - 掘金 (juejin.cn)
一些回答
  • 劝退客户端?
    在你考虑客户端这一个学习方向的时候,相信会有很多劝退的言论。我来谈一谈我对这个方向的看法。
    1. 当下的客户端很难找工作么?其实不然,当下是客户端的初级开发者难找工作,但是市场中级和高级开发者的需求缺口是很大的。这其实是市场对人才的要求变得高了,不止于客户端,其他方向也是这样子的。
    2. **客户端的学习很难?**对比其他方向,客户端的入门学习的也许是稍微困难些。但我们要知道,每一个方向想要学好,都是不容易的,我们的目标不是要做一个入门的初级开发者。这并不应该成为左右我们选择的点。
    3. 前端也可以写APP,客户端完全可以被替代?通过阅读上文,你也许了解到前端开发者可以有Web APP和React Native这两种开发跨平台APP的技术。先不说H5页面的Web APP使用起来的体验感有些糟糕,就连React Native这种js+原生渲染方式写出的APP,由于频繁与原生之间的通信,在渲染较多的页面会必不可免的会出现卡顿,且js带来的热更新也会降低APP的执行效率。所以,单纯使用前端技术写出来的跨端APP是有较多局限性的,客户端开发被替代是无稽之谈,熟悉原生开发的客户端开发者是必不可缺的。
  • 加入工作室的付出和收获?
    1. 加入工作室你真正会付出的就是时间。那这个时间用来干什么呢?给老师打工?还是跟着师兄师姐学习?这些都会有,但不是每一个工作室这些的比例都一样,有些偏向于工作,有些偏向于学习。但有一点是相同的吗,那就是它们都会转变为你的收获。
    2. 你所收获的,就有很多了。包括一个学习技术和交流心得的环境和氛围、优秀师兄师姐经验传授、全流程的项目开发实战经验、寒暑假社会实践双创/志愿时长、来自大厂师兄的内推码以及一个成体系的团队协作经验等等,这些都是加入工作室所能带给你的,会让你的大学生活变得无比充实
  • 没进工作室该怎么规划学习和提升?
    想要加入工作室,是需要经过层层考核的,那这意味着被淘汰的同学不好么?并不是的,工作室的考核是双向选择,千万不要因为这一次的不如意而否认自己,只不过是这一步稍微走慢或是走错罢了。
    工作室的考核周期是比较长的,最难的其实是坚持,在这一路的坚持中,无论结果如何,你都已经收获很多,未来的学习中,依旧需要保持在考核阶段对技术的热忱和干劲。掌握上面所写的基础已经有能力去参加工作室考核了,再接下就可以来按着顺序去学习进阶和更多的技能部分的内容。学习过程中,我还有一些个人建议:
    1. 数据结构、计算机组成原理、计算机网络和操作系统这类重难的专业课一定要学好,工作的彼时面试都是避不开的。
    2. 学习技术的时候,不要只看书籍或博客,一定要去看官方文档。Android的迭代很快,书籍和博客都会过时,但官方文档会不断维护更新的,官方文档才是最全的第一手的资料。
    3. 保持写博客的习惯,你看到的东西不是你的,你写得出来的才是你的。当你去写博客的时候,无形中你是在逼迫自己对这个知识在能力范围内近乎全面的深入学习和了解,也是将自己的学习转化为成果的方式
    4. 纸上得来终觉浅,绝知此事要躬行,计算机是实践的学科,阶段性学习的同时,我们需要在阶段性学习后去找一些开源项目用自己所学复现和找一些免费API写自己的APP。
    5. 积极的和别人交流,我们学习的过程中,一定会遇到一些问题是查阅不到的。这时候我们可以在掘金、StackOverflow等这些社区提问,在GitHub上提交issue,加入业内大佬的Q群讨论提问等这些方式解决我们的困惑。当然啦,当我们遇到我们懂的知识,也需要做一个爱好分享的好心人。
    6. 大胆去尝试,大学是我们的舞台,这个年纪的我们犯错成本是最低的,青春的我们有无限的可能!
关注数智工作室,随时留意我们的招新动态和硬核分享
ui|广工工作室各方向学习指南
文章图片

    推荐阅读