学习指南(Java版)

    • 学习方法
    • 前端的框架
    • 技术工作核心指导思想
    • 知识论总结
    • 对时间的把控
    • 零基础学习攻略
    • 提升英文能力是重要的一环
    • 软件设计的相关原则
    • 数据库部分
    • 核心技术资源推荐
    • 步入社会的思考
    • 技术人员最需提升的一种能力—高效沟通
    • 作为一个领导者需要学习的知识

学习方法

每周做 leetcode 的算法题、阅读英文技术文章并输出自己的想法

前端的框架

学习WEB的最佳网站W3School。
包括以下的内容:HTML基本语法,CSS如何选中HTML元素并制作很炫的网页结构,并动态修改,用Javascript操纵HTML元件。
一般用 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
配置Apache 或 Nginx
了解Java前端和后台的数据交互
在b站学习一个网络编程课程,并了解浏览器发生的事情
买个域名,租个空间,做个自己炫酷的网站

前端基础:HTML 5、CSS 3 和 JavaScript(ES6)
JavaScript 的核心原理。
浏览器的工作原理。
网络协议 HTTP
前端性能调优。
框架学习,React 和 Vue 两个框架
UI 设计。
权威的前端性能指南:https://browserdiet.com/zh/

技术工作核心指导思想

在工作当中,提高交作业的效率,提高代码的重用度,自动化,简化需求,有更多时间研究核心技术。
通用路径:大公司到高速成长的公司
经历别人不曾经历的,做有挑战性的工作。做的内容比别人更好。知识变现。
培训公司的投入产出比高很多。
时间最宝贵,应该用在刀刃上
关注有价值的东西,需求,趋势
提升自己
用好 Google ,搜索引擎里输入“Java Best Practice”,或是“Best programming resource for java”……锻炼自己的英文能力
带着问题学习,读英文文章

知识论总结

学习技术的信息源有 Google 等搜索引擎,Stack Overflow、Quora 等社区,图书,API 文档,论文和博客等。习惯用英文搜索找到你想要的知识。
与人交流。参加开源项目,技术社区,技术会议。
系统地学习一门技术是非常关键的,让自己有更强的竞争力
从银行跳槽到基金公司,感觉这方面的改善不大,技术岗位不受重视
在开源社区的成长更快,用技术去解决具体的问题

对时间的把控

做事情要把被动变为主动,因为在被动的方式下工作,你是不可能做好工作的。
信息管理,分类,方便检索,通过优先级来处理信息。
学会对某些事说“不”,培养“向上管理”的能力
对做不到的需求时,让别人觉得你是想做的给出另一个你可以做到的方案,而不是把对方的方案直接回绝掉。

当你面对过于复杂的需求时,不能完全满足,可以部分满足。想办法把这个压力还回去,或是让对方来和你一同分担这个压力
不能说不而是有条件说是
开会,是讨论方案,要有议案
事情的优先级,想好了再做,月度规划
专注投入有价值的事情,过滤掉与自己无关的事情,

零基础学习攻略

强烈推荐的编程学习网站:https://www.codecademy.com
Web 开发网站:https://developer.mozilla.org/zh-CN/docs/Learn
W3CSchool 上的在线教程也不错
GitBook用来写自己的文档也不错https://developer.gitbook.com/
在LeetCode上训练自己的算法能力
前端基础, CSS、HTML 和 JavaScript
百度自己寻找一份Chrome浏览器客户端调试大全

提升英文能力是重要的一环

阅读官方手册,到 StackOverflow 提问,github 上看代码
坚持每天看英文视频5分钟

软件设计的相关原则

共性抽象出来形成一个唯一的新方法(DRY)
只考虑和设计必须的功能,避免过度设计(YAGNI)
内聚,指一个模块内各个元素彼此结合的紧密程度;耦合指一个软件结构内不同模块之间互连程度的度量(高内聚,低耦合)

数据库部分

MySQL 的资源列表:Awesome MySQL
看各个公司做到经验分享
对于初学者来说,动手是非常非常重要的
可以阅读 Docker 官方文档
看AWS和google 的最佳实践
用户手册(User Manual)也是不错的知识文档

核心技术资源推荐

个人技术博客
https://blog.codinghorror.com/
高效能程序员的修炼
tackOverflow 问答网站
https://www.joelonsoftware.com/
科技创业孵化器 Y Combinator 创始人博客
http://www.paulgraham.com/articles.html
《黑客与画家》
《软件随想录》
《程序员的职业素养》

步入社会的思考

与人沟通、赚钱等这些
个人主页、博客、GitHub 或是 Stack Overflow重要的软技能
描述自己的经历,重视自己的形象和谈吐
在开源社区的经验也很重要
后端的业务逻辑和数据计算
讲故事要学习的框架, 在什么样的环境和背景下,干什么样的事,采取了什么样的行动和努力,得到了什么样的效果。

需要高效的学习
自律,端正态度
根据费曼学习理论
我们要从被动学习转向主动学习,被动学习:如听讲、阅读、视听、演示。
主动学习:如通过讨论、实践、教授给他人。
不可急于求成
交流,实践,到源头学习一手资料,并对外输出
写写自己的专栏
联想记忆加知识图

学习要问自己的四大问题
1,这个技术出现的背景,要解决的问题
2,组成部分和关键点
3,原理和关键实现
4,对比现有技术的优势及劣势

技术人员最需提升的一种能力—高效沟通

想清楚沟通的目的,最好可以把自己的想法写下来,整理自己的措辞。在交谈时产生误解,可以停下来,换个方式
不懂却不好意思问,是沟通中最大的阻碍,沟通就是要来来回回的确认。
找到对方的兴趣点,把自己的答案变成问题,让大家互动起来,这样才可能有好的沟通
赢得别人的尊重,简单附和没有任何意义,要有观点上的交互和碰撞。
倾听,耐心听别人说完,打断别人说话,次数多了,会给对方留下坏印象
切莫在冲动之下,说出很多一些过分或过激的话,因为言语的力量是巨大的,杀伤力有时难以预估

沟通技巧:打造利益共同体,对方关注什么,你能帮到别人什么。
表达之前,想明白自己的目的,要什么不要什么,做好信息收集工作,沟通时,用数据和事实,让人无法反驳,少用可能、也许等词
在和人争论时,低维度反驳,越细节越好。说服对方时,站在高维度,越宏观越好。高维度讲究的是求同存异。高维度容易拉拢对方,而在低维度更容易说服对方。只不过低维度容易爆发冲突,要恰当地控制好度。
你跟别人相同的东西一定是高维度的,这就是大同,而你跟别人不同的一定是非常细节的东西。大同的东西,更容易让人产生共鸣,从而容易达成默契和共识
寻找共同,可化敌为友

作为一个领导者需要学习的知识

好的领导者,不给员工答案,要让员工给你答案,而且是多个答案,让员工思考、成长。反之,家长式、保姆式的管理,只让员工去执行,结果反而不够理想。
学会共情,站在他人的角度思考和处理问题,一定要平时多沟通
讨价还价的能力:永远不要说不,要有条件地说是。降低期望的同时给予其他的补偿。提高期望的同时附加更多的条件。对于比较大的期望要分步骤达到客户的期望。提供更多选项,然后引导客户做决定

参考资料:极客时间专栏(左耳听风系列)