If you’ve ever wondered what differentiates a junior developer from a senior developer, this article can help you figure it out.
如果您想知道初级开发人员与高级开发人员之间的区别是什么,本文可以帮助您解决。
In this article, I will talk about the technologies and concepts that I think are necessary to know to be considered a senior developer and that in my company, we take into account when hiring.
在本文中,我将讨论被认为是高级开发人员所必须了解的技术和概念,并且在我公司中,我们在招聘时会考虑这些技术和概念。
指数 (Index)
- Learn the Linux basic commands. 了解Linux基本命令。
- Learn to connect to remote sites. 了解如何连接到远程站点。
- Learn the basics of Cloud computing. 了解云计算的基础知识。
- Learn The different ways to store data. 学习存储数据的不同方法。
- Study the topics related to security. 研究与安全性相关的主题。
- Learn about software Development Models/techniques. 了解有关软件开发模型/技术的信息。
- Learn about the process to develop and put in production. 了解开发和投入生产的过程。
- Learn how to build Web Apps. 了解如何构建Web应用程序。
- Learn how to manage state and routing in your Web apps. 了解如何在Web应用程序中管理状态和路由。
- Learn how to improve the performance of your apps. 了解如何提高应用程序的性能。
- Master a couple of languages & Frameworks. 掌握几种语言和框架。
- Understand REST and SOAP. 了解REST和SOAP。
- Learn about the process of automating the creation of a software build. 了解自动创建软件版本的过程。
- Learn about micro-frameworks. 了解有关微框架的信息。
- Learn about Containers. 了解容器。
- Conclusion. 结论。
1.学习基本的Linux命令 (1. Learn the basic Linux commands)
Linux is, for many of us, the best platform to develop, and this is due in part to their command line terminal.
对于我们许多人来说,Linux是最好的开发平台,这部分是由于它们的命令行终端。
The command line is one of the best tools that we have at our disposal, and although some may find the use of this interface intimidating, the benefits we get are several. For example:
命令行是我们可以使用的最好的工具之一,尽管有些人会发现使用此界面令人生畏,但我们获得的好处却是多方面的。 例如:
- You have greater control over operating system functions. 您可以更好地控制操作系统功能。
Thanks to the command line, you can perform simple and complicated tasks just using a few commands or creating scripts to automate it.
多亏了命令行 ,您可以使用一些命令或创建脚本来自动执行简单和复杂的任务。
- The command line allows us to link commands and scripting. 命令行允许我们链接命令和脚本。
- You can use SSH that allows you to quickly connect to a remote server and log on to it. In this form, it is possible to execute commands on the remote server directly from the terminal on your local machine. 您可以使用SSH,它允许您快速连接到远程服务器并登录到该服务器。 通过这种形式,可以直接从本地计算机上的终端在远程服务器上执行命令。
- You can use NPM, which is one of the most popular tools for any developer, both frontend and backend. 您可以使用NPM,这是前端和后端开发人员最喜欢的工具之一。
- Although there are graphical interfaces for managing Git, most developers prefer to use it natively through the terminal because of its efficiency and agility. Also, all of the power of Git is achieved using the terminal. 尽管有用于管理Git的图形界面,但是由于其效率和敏捷性,大多数开发人员更喜欢通过终端本地使用它。 同样,使用终端可以实现Git的所有功能。
- You can use the Grep command to search for strings within the text of a file or directory. It is handy when working with large files that need to be filtered. 您可以使用Grep命令在文件或目录的文本中搜索字符串。 在处理需要过滤的大文件时,它非常方便。
- You can use Curl that allows you to make requests through the HTTP(s) protocol, FTP, and other different protocols for download files, check response headers, or access to remote data. 您可以使用Curl,它允许您通过HTTP(s)协议,FTP和其他不同协议发出请求,以下载文件,检查响应标头或访问远程数据。
In short, it’s hard to find a senior developer who doesn’t know how to use the command line.
简而言之,很难找到一个不知道如何使用命令行的高级开发人员。
Index of the Linux command line here.
Linux命令行的索引在这里 。
2.学习连接到远程站点 (2. Learn to connect to remote sites)
Learn how to use SSH as a client and a server.
了解如何将SSH用作客户端和服务器。
Learn the basic SSH Commands.
了解基本的SSH命令 。
Learn how to handle SSH keys.
了解如何处理SSH密钥 。
Learn how to use the Linux SFTP (SSH File Transfer Protocol) command to access, manage, and transfer files over an encrypted SSH transport on the shell.
了解如何使用Linux SFTP (SSH文件传输协议)命令通过外壳上的加密SSH传输访问,管理和传输文件。
Learn how to use the SCP (Secure copy protocol) command to securely transferring files between local hosts and remote hosts or between two remote hosts on the shell.
了解如何使用SCP (安全复制协议)命令在外壳上的本地主机和远程主机之间或两个远程主机之间安全地传输文件。
Learn how to use OpenVPN to create or access to VPN networks.
了解如何使用OpenVPN创建或访问VPN网络。
3.学习云计算的基础知识 (3. Learn the basics of Cloud Computing)
Nowadays, it is common to develop using services located in the cloud, so it is convenient to know at least what the most used Cloud Computing systems offer you. Using those services, you pay only for the computing power or the storage you use.
如今,使用位于云中的服务进行开发很普遍,因此至少知道最常用的云计算系统为您提供了什么是很方便的。 使用这些服务,您只需为所使用的计算能力或存储付费。
Explore the Amazon AWS cloud and know the different services that give you. You can try out for free a lot of services like S2 instances, S3 storage, or Lambda.
探索Amazon AWS云并了解为您提供的不同服务。 您可以免费试用许多服务,例如S2实例,S3存储或Lambda 。
Explore the Microsoft Azure cloud.
探索Microsoft Azure云。
Explore the IBM cloud.
探索IBM云。
4.学习存储数据的不同方法 (4. Learn The different ways to store data)
- Learn the difference between Relational databases (SQL-RDBMS databases) and Non-relational databases (NoSQL databases). 了解关系数据库(SQL-RDBMS数据库)和非关系数据库(NoSQL数据库)之间的区别。
Learn about the database consistency models and the key differences between ACID (atomicity, consistency, isolation, and durability) and BASE (Basic Availability, Soft-state, and Eventual consistency) models.
了解数据库一致性模型以及ACID (原子性,一致性,隔离性和持久性)与BASE (基本可用性,软状态和最终一致性)模型之间的关键区别。
Learn how to use the SQL language.
了解如何使用SQL语言。
Learn how to use Window Functions.
了解如何使用窗口函数 。
Learn the basics of typical cloud storage systems like Amazon S3.
了解典型的云存储系统(如Amazon S3)的基础知识。
Learn the basics of BigData and understand the batch Processing map-reduce paradigm.
了解BigData的基础知识,并了解批处理map-reduce范式。
Learn about the different methods to store data on the client-side with JavaScript (Cookies, Web Storage API, IndexDB, CacheStorage).
了解使用JavaScript在客户端上存储数据的不同方法(Cookies,Web Storage API,IndexDB,CacheStorage)。
5.研究与安全性相关的主题 (5. Study the topics related to security)
Learn how to use sessions and how modern frameworks like SpringBoot use them.
了解如何使用会话以及像SpringBoot这样的现代框架如何使用它们。
Learn how to use JWT (JSON Web Token).
了解如何使用JWT (JSON Web令牌)。
Learn how to secure your web server using certificates and https.
Learn how to handle sensitive user data like passwords.
了解如何处理敏感的用户数据(例如密码) 。
Know the different data privacy regulations like the GDPR or US regulations.
Learn how to use tools like npm audit for Javascript or OWASP for Java to detect vulnerabilities in your code.
Know the typical Web application security risks.
了解典型的Web应用程序安全风险 。
6.了解软件开发模型/技术 (6. Learn about Software Development models/techniques)
Read the Agile Manifesto.
阅读敏捷宣言 。
Learn about Unit Testing (Junit for Java or Jest for javascript are good choices).
Learn about Test-driven development or TDD.
了解有关测试驱动的开发或TDD的信息 。
Learn about Behavior-Driven Development or BDD.
了解有关行为驱动开发或BDD的信息 。
Know the Agile Scrum framework.
了解敏捷Scrum框架 。
Know the Kanban workflow management method.
了解看板工作流管理方法。
Know the Lean Software Development (a translation of lean manufacturing).
了解精益软件开发 (精益制造的翻译)。
Know what is the Extreme Programming or XP methodology.
了解什么是极限编程或XP方法。
Know what is the Feature Driven Development (FDD).
了解什么是功能驱动开发 (FDD)。
Know what is the old Waterfall methodologies.
知道什么是旧的瀑布方法。
- Know what an MVP is. 知道什么是MVP。
Know the differences between Imperative programming and functional programming.
7.了解开发和投入生产的过程 (7. Learn about the process to develop and put in production)
When you start working on projects of a specific size or working within a team, it is essential to take this into account.
当您开始进行特定规模的项目或在团队中工作时,必须考虑到这一点。
Learn about continuous integration and continuous delivery using tools like Jenkins.
了解有关使用Jenkins之类的工具进行持续集成和持续交付的信息。
Use a distributed version control systems like Git or Bitbucket.
Use tools that help you work and collaborate like Trello or Jira.
8.了解如何构建Web应用程序 (8. Learn how to build Web Apps)
Learn about the React JavaScript library to build Web interfaces.
了解用于构建Web界面的React JavaScript库。
Learn about the Angular web application framework for building mobile and desktop web applications.
了解有关用于构建移动和桌面Web应用程序的Angular Web应用程序框架 。
Know the differences between a framework like angular and a library like React.
知道angular这样的框架与React这样的库之间的区别 。
Learn how to build cross-platform(iOS, Android) Apps with Apache Cordova.
了解如何使用Apache Cordova构建跨平台(iOS,Android)应用程序。
Learn about Web Components standards.
了解有关Web组件标准的信息。
9.了解如何在Web应用程序中管理状态和路由。 (9. Learn how to manage state and routing in your Web apps.)
Learn how to maintain a global state on your app and the complexity associate with it.
Learn the principles of Redux or other alternatives for state management tools.
A good example is how to use the react-redux library for React.
一个很好的例子是如何将React -redux库用于React。
Learn about routing. A good example is how to use The react-router library for React.
10.了解如何改善应用程序的性能 (10. Learn how to improve the performance of your apps)
Learn how to reduce latency with a content delivery network (CDN)
了解如何通过内容交付网络 (CDN)减少延迟
Learn about HTTP compression.
了解HTTP压缩 。
Learn how to use tools like Webpack or Snowpack to create “bundles” that are optimized and minified to build modern web applications.
了解如何使用Webpack或Snowpack之类的工具来创建“捆绑包”,这些捆绑包经过优化和精简以构建现代Web应用程序。
Learn about Caching (Browser cache, Proxy caching) and when to use it.
Learn how to use Web Workers (advanced level).
了解如何使用 Web Worker (高级)。
Learn how to Reduce HTTP requests (Service workers, cache).
了解如何减少HTTP请求( 服务工作者 ,缓存)。
Learn how to Minify CSS and JavaScript.
了解如何缩小 CSS和JavaScript 。
Learn the importance of avoiding 301 redirects for SEO and performance.
Learn about how to use Monitoring tools.
了解有关如何使用监视工具的信息 。
Learn about Database Optimization and how to optimize SQL queries.
了解有关数据库优化以及如何优化SQL查询的信息 。
Learn about concurrency and multithreading (advanced level. Doing this right is often very complicated).
了解 并发和多线程 (高级)。正确执行此操作通常非常复杂。
Learn how to do Load Balancing.
了解如何进行负载平衡 。
11.掌握几种语言和框架 (11. Master a couple of languages & Frameworks)
Don’t try to know everything and nothing at once. Master a couple of general-purpose and widely used languages, and it will make a difference.
不要试图一无所知。 掌握几种通用和广泛使用的语言,它将有所作为。
- Learn how to use a language like Java or .Net programming languages. 了解如何使用Java或.Net编程语言之类的语言。
Learn about Javascript vanilla (VanillaJS).
了解Javascript Vanilla(VanillaJS)。
Learn about a widely used framework like Spring-boot.
了解诸如Spring-boot之类的广泛使用的框架。
12.了解REST和SOAP (12. Understand REST and SOAP)
Learn about Representational state transfer (REST) architectural style.
了解代表性状态转移 (REST)的体系结构样式。
- Learn what Simple Object Access Protocol (SOAP) is. 了解什么是简单对象访问协议(SOAP)。
Learn the differences between SOAP and REST
了解SOAP和REST之间的区别
13.了解自动创建软件版本的过程 (13. Learn about the process of automating the creation of a software build)
Build automation is the way to automatize the creation of a software build and includes, among other things: compiling source code, packaging binary code, and running automated tests.
生成自动化是一种自动创建软件的方式,其中包括:编译源代码,打包二进制代码和运行自动化测试。
Know some widely used tools like the Apache Maven or the Gradle.
了解一些广泛使用的工具,例如Apache Maven或Gradle 。
Learn how to use the npm package manager.
了解如何使用npm软件包管理器。
14.了解微框架 (14. Learn about micro-frameworks)
A microframework is a term used to refer to minimalistic frameworks that provide advantages for smaller projects that require simplicity versus the complexity of a full framework.
微框架是用于指代简约框架的术语,该框架为要求简单性而非完整框架复杂性的较小项目提供了优势。
Spark for Java is a simple micro-framework to create web applications in Kotlin and Java 8.
Spark for Java是一个简单的微框架,可以在Kotlin和Java 8中创建Web应用程序。
Express.js for Node.js is another widely used micro-framework.
用于Node.js的Express.js是另一种广泛使用的微框架。
15.了解容器 (15. Learn about containers)
A container is a unit of software that packages up code and all its dependencies so the application can runs reliably from one computing environment to another.
容器是打包代码及其所有依赖项的软件单元,因此应用程序可以从一个计算环境可靠地运行到另一个计算环境。
Learn the basics of Docker
了解Docker的基础知识
Learn the differences between containers and virtual machines.
16.结论 (16. Conclusion)
You don’t need to be an expert in the things I present in this article, but if you know them (or know similar ones), I assure you that you will have taken a giant step to become a senior developer.
您不需要是我在本文中介绍的内容的专家,但是,如果您了解它们(或类似的知识),我向您保证,您将迈出重要的一步,成为一名高级开发人员。
So start to learn the basics to become a senior developer and enjoy the road.
因此,开始学习成为高级开发人员的基础知识并享受这条路。
Thank you very much for reading me, I appreciate it very much because writing and technology are two of the great passions of my life :)
非常感谢您阅读我,我非常感谢,因为写作和技术是我一生中的两大爱好:)
翻译自: https://medium.com/swlh/shortcuts-to-becoming-a-senior-developer-2569da244db1