• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 2019年3月18日:开源日报第368期

    18 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《人人都能用英语 everyone-can-use-english》
    今日推荐英文原文:《Ten Trending Open Source Projects of 2018》

    今日推荐开源项目:《人人都能用英语 everyone-can-use-english》传送门:GitHub链接
    推荐理由:与昨天的自学成才同一位作者所写的关于学习英语的书籍。只要相信自己能学好,然后为此抱有觉悟和努力的话,英语学得比母语要好并非一件不可能的事情。这本书就是关于一些学习英语的方法技巧,当然了,别指望着看完这本书就能提升英语技能,真正要花的功夫没有做到家的话,英语水平是不会进步的。
    今日推荐英文原文:《Ten Trending Open Source Projects of 2018》作者:Roopendra Vishwakarma
    原文链接:https://opensourceforu.com/2019/03/ten-trending-open-source-projects-of-2018/
    推荐理由:另一个 2018 十大开源项目榜

    Ten Trending Open Source Projects of 2018

    Let’s look back at the most extensively used open source projects of 2018. While this article is aimed at software developers using open source tools and frameworks to build applications, others too can get a feel of what’s trending.

    The field of software development is always changing, with cutting-edge technologies, tools and best practices evolving continuously. Open source projects have a major influence in the software development world. As per the GitHub blog, in 2018 alone, more new users signed on than those that got added in the previous six years combined.

    GitHub’s top three open source projects for 2018 include VS Code and React Native. TensorFlow, once again, is leading the list based on the number of contributors. Let’s now take a closer look at the top 10 open source projects of 2018.

    1) VS Code

    Visual Studio Code (VS Code) is a free and open source code editor developed by Microsoft. It includes support for debugging modern Web and cloud applications, embedded Git control, syntax highlighting, intelligent code completion, snippets and code refactoring. Visual Studio Code was ranked the most popular developer environment in the Stack Overflow 2018 Developer Survey, with 34.9 per cent of 75,398 respondents claiming to use it.

    The good thing about VS Code is that you can customise every feature as per your needs, and install any number of third-party extensions. VS Code is an open source project; so you can also contribute to the growing and vibrant community on GitHub.

    VS Code includes built-in support for Node.js development with JavaScript and TypeScript. It also includes great tooling for Web technologies such as JSX/React, HTML, CSS, SCSS, Less and JSON.

    2) TensorFlow

    TensorFlow is an open source machine learning (ML) framework for high performance numerical computation. Originally developed by the Google Brain team for Google’s use, it was released under the Apache 2.0 open source licence on November 9, 2015. Its flexible architecture allows easy deployment of computations across a variety of platforms (CPUs, GPUs and TPUs), and from desktops and clusters of servers to mobiles and edge devices.

    TensorFlow is currently the top trending machine learning framework; it also supports APIs for beginners and experts to develop desktop, mobile, Web and cloud based applications.

    3) Ansible

    Ansible is an open source IT automation tool. It provides configuration management, infrastructure orchestration, task automation and more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s main feature is that it is agent-less, i.e., no software or agent is installed on the client that communicates back to the server. It is written in Python and uses YAML for its playbook language, both of which are considered relatively easy to learn.

    4) Vue.js

    Vue.js (Vue) is an open source JavaScript framework for building user interfaces. First released in February 2014, it is one of the most popular JavaScript frameworks in the market. Its GitHub page has 123,936 stars. Vue.js features an incrementally adoptable architecture that focuses on the view layer only, and is easy to integrate with other libraries or existing projects. It also offers officially maintained libraries and packages for complex applications such as routing (vue-router), state management (vuex) and building tools.

    5) React Native

    React Native is a JavaScript framework for building native mobile apps using JavaScript and React. It’s an open source project which comes under the MIT License. React Native is built on top of ReactJS. It is a great choice for developers with expertise in JavaScript as there is no need to learn Android-specific Java or iOS’s Swift.

    As per the GitHub blog, 2018 witnessed the biggest increase in the number of open source projects related to non-language topics compared to 2017. The JavaScript framework was the most popular language for new open source projects in 2018, while React Native was the runner up in the top 10 open source projects based on contributors.

    6) Angular CLI

    Angular CLI is an open source command-line interface tool that can be used to initialise, develop, scaffold and maintain Angular applications. You can use Angular CLI directly in a command shell, or indirectly through an interactive UI such as Angular Console. Angular CLI creates, manages, builds and tests Angular projects. It is one of the top trending open source projects based on GitHub activity.

    7) Vault

    Vault is an open source tool for secrets management, ‘encryption as a service’ and privileged access management. Modern systems require secrets in multiple areas like database credentials, API keys for external services, credentials for service-oriented architecture communication, etc. Vault provides a unified interface for any secret, while providing tight access control and recording a detailed audit log.

    8) Keras

    Keras is an open source neural network library written in Python that is capable of running on top of TensorFlow, Microsoft Cognitive Toolkit, or Theano. Keras was the tenth most popular tool in the KD Nuggets 2018 software poll, with 22 per cent of respondents using it.

    9) Kubernetes

    Kubernetes is an open source container-orchestration system designed for the automation of deployment and scaling, and for the management of containerised applications. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation. Kubernetes ranked eighth on the list of top open source projects at GitHub, based on the contributor count.

    10) Bitcoin

    The blockchain is one of the top tech trends of the past year and has seen a lot of interest. The most popular open source blockchain project is Bitcoin, which is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to function without a central authority — the network collectively manages transactions and issues money. Bitcoin was released as open source software in 2009.

    I have listed ten trending open source projects of 2018. However, there are many other projects that are also growing rapidly, like Flutter, Deno (a secure TypeScript runtime on V8), ValveSoftware/Proton for porting games to Linux, and Detectron (from Facebook AI Research) to support research in image recognition algorithms.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年3月17日:开源日报第367期

    17 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《自学成才 the-craft-of-selfteaching》
    今日推荐英文原文:《A Look Back at the History of Firefox》

    今日推荐开源项目:《自学成才 the-craft-of-selfteaching》传送门:GitHub链接
    推荐理由:一本关于自学的书,与其说他讲了不少技术知识,不如说他讲了不少关于自学方面的知识。自学的技能对于经常需要学习新技术的人来说相当重要,毕竟并不是每时每刻都有人教——也就是说有相当部分的时间自己是在自学,这一点是很正常的。作者虽然选择了编程和自学一起讲,但是自学的能力并不只能用在编程之上,即使离开了编程领域,它也会让持有者受益匪浅。
    今日推荐英文原文:《A Look Back at the History of Firefox》作者: John Paul
    原文链接:https://itsfoss.com/history-of-firefox/
    推荐理由:火狐浏览器的一些历史

    A Look Back at the History of Firefox

    The Firefox browser has been a mainstay of the open-source community for a long time. For many years it was the default web browser on (almost) all Linux distros and the lone obstacle to Microsoft’s total dominance of the internet. This browser has roots that go back all the way to the very early days of the internet. Since this week marks the 30th anniversary of the internet, there is no better time to talk about how Firefox became the browser we all know and love.

    Early Roots

    In the early 1990s, a young man named Marc Andreessen was working on his bachelor’s degree in computer science at the University of Illinois. While there, he started working for the National Center for Supercomputing Applications. During that time Sir Tim Berners-Lee released an early form of the web standards that we know today. Marc was introduced to a very primitive web browser named ViolaWWW. Seeing that the technology had potential, Marc and Eric Bina created an easy to install browser for Unix named NCSA Mosaic). The first alpha was released in June 1993. By September, there were ports to Windows and Macintosh. Mosaic became very popular because it was easier to use than other browsing software.

    In 1994, Marc graduated and moved to California. He was approached by Jim Clark, who had made his money selling computer hardware and software. Clark had used Mosaic and saw the financial possibilities of the internet. Clark recruited Marc and Eric to start an internet software company. The company was originally named Mosaic Communications Corporation, however, the University of Illinois did not like their use of the name Mosaic. As a result, the company name was changed to Netscape Communications Corporation.

    The company’s first project was an online gaming network for the Nintendo 64, but that fell through. The first product they released was a web browser named Mosaic Netscape 0.9, subsequently renamed Netscape Navigator. Internally, the browser project was codenamed mozilla, which stood for “Mosaic killer”. An employee created a cartoon of a Godzilla like creature. They wanted to take out the competition.

    They succeed mightily. At the time, one of the biggest advantages that Netscape had was the fact that its browser looked and functioned the same on every operating system. Netscape described this as giving everyone a level playing field.

    As usage of Netscape Navigator increase, the market share of NCSA Mosaic cratered. In 1995, Netscape went public. On the first day, the stock started at $28, jumped to $75 and ended the day at $58. Netscape was without any rivals.

    But that didn’t last for long. In the summer of 1994, Microsoft released Internet Explorer 1.0, which was based on Spyglass Mosaic which was based on NCSA Mosaic. The browser wars had begun.

    Over the next few years, Netscape and Microsoft competed for dominance of the internet. Each added features to compete with the other. Unfortunately, Internet Explorer had an advantage because it came bundled with Windows. On top of that, Microsoft had more programmers and money to throw at the problem. Toward the end of 1997, Netscape started to run into financial problems.

    Going Open Source

    In January 1998, Netscape open-sourced the code of the Netscape Communicator 4.0 suite. The goal was to “harness the creative power of thousands of programmers on the Internet by incorporating their best enhancements into future versions of Netscape’s software. This strategy is designed to accelerate development and free distribution by Netscape of future high-quality versions of Netscape Communicator to business customers and individuals.”

    The project was to be shepherded by the newly created Mozilla Organization. However, the code from Netscape Communicator 4.0 proved to be very difficult to work with due to its size and complexity. On top of that, several parts could not be open sourced because of licensing agreements with third parties. In the end, it was decided to rewrite the browser from scratch using the new Gecko) rendering engine.

    In November 1998, Netscape was acquired by AOL for stock swap valued at $4.2 billion.

    Starting from scratch was a major undertaking. Mozilla Firefox (initially nicknamed Phoenix) was created in June 2002 and it worked on multiple operating systems, such as Linux, Mac OS, Microsoft Windows, and Solaris.

    The following year, AOL announced that they would be shutting down browser development. The Mozilla Foundation was subsequently created to handle the Mozilla trademarks and handle the financing of the project. Initially, the Mozilla Foundation received $2 million in donations from AOL, IBM, Sun Microsystems, and Red Hat.

    In March 2003, Mozilla announced plans to separate the suite into stand-alone applications because of creeping software bloat. The stand-alone browser was initially named Phoenix. However, the name was changed due to a trademark dispute with the BIOS manufacturer Phoenix Technologies, which had a BIOS-based browser named trademark dispute with the BIOS manufacturer Phoenix Technologies. Phoenix was renamed Firebird only to run afoul of the Firebird database server people. The browser was once more renamed to the Firefox that we all know.

    At the time, Mozilla said, “We’ve learned a lot about choosing names in the past year (more than we would have liked to). We have been very careful in researching the name to ensure that we will not have any problems down the road. We have begun the process of registering our new trademark with the US Patent and Trademark office.”

    The first official release of Firefox was 0.8 on February 8, 2004. 1.0 followed on November 9, 2004. Version 2.0 and 3.0 followed in October 2006 and June 2008 respectively. Each major release brought with it many new features and improvements. In many respects, Firefox pulled ahead of Internet Explorer in terms of features and technology, but IE still had more users.

    That changed with the release of Google’s Chrome browser. In the months before the release of Chrome in September 2008, Firefox accounted for 30% of all browser usage and IE had over 60%. According to StatCounter’s January 2019 report, Firefox accounts for less than 10% of all browser usage, while Chrome has over 70%.

    The Future

    As noted above, Firefox currently has the lowest market share in its recent history. There was a time when a bunch of browsers were based on Firefox, such as the early version of the Flock browser). Now most browsers are based on Google technology, such as Opera and Vivaldi. Even Microsoft is giving up on browser development and joining the Chromium band wagon.

    This might seem like quite a downer after the heights of the early Netscape years. But don’t forget what Firefox has accomplished. A group of developers from around the world have created the second most used browser in the world. They clawed 30% market share away from Microsoft’s monopoly, they can do it again. After all, they have us, the open source community, behind them.

    The fight against the monopoly is one of the several reasons why I use Firefox. Mozilla regained some of its lost market-share with the revamped release of Firefox Quantum and I believe that it will continue the upward path.

    What event from Linux and open source history would you like us to write about next? Please let us know in the comments below.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年3月16日:开源日报第366期

    16 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《读万卷书 free-programming-books-zh_CN》
    今日推荐英文原文:《Software Roles and Titles》

    今日推荐开源项目:《读万卷书 free-programming-books-zh_CN》传送门:GitHub链接
    推荐理由:免费的编程方面书籍合集。这个项目中的前身是free-programming-books,其中收录了与各种编程语言有关的书籍以及诸如 SQL 和操作系统这些非语言相关的书籍。如果有正在学习的方向的话,这个项目可以成为一个不错的寻找相关书籍的资料来源,当然了,作者也欢迎大家将自己觉得不错的书籍放在这个项目中。
    今日推荐英文原文:《Software Roles and Titles》作者:Eric Elliott
    原文链接:https://medium.com/javascript-scene/software-roles-and-titles-e3f0b69c410c
    推荐理由:大部分的软件团队中每个角色的职能——他们大概是干什么的

    Software Roles and Titles

    I’ve noticed a lot of confusion in the industry about various software roles and titles, even among founders, hiring managers, and team builders. What are the various roles and responsibilities on a software team, and which job titles tend to cover which roles?

    Before I dig into this too much, I’d like to emphasize that every team is unique, and responsibilities tend to float or be shared between different members of the team. Anybody at any time can delegate responsibilities to somebody else for various reasons — many of them valid.

    If your team isn’t exactly what I describe here, welcome to the club. I suspect very few teams and particular software roles will match perfectly with what we’re about to explore. This is just a general framework that describes averages more than any particular role or team.

    I’ll start with management titles and work my way through various roles roughly by seniority.

    I’d also like to emphasize that you should not feel constrained by your job title. I like to build an engineering culture which favors:
    • Skills over titles
    • Continuous delivery over deadlines
    • Support over blame
    • Collaboration over competition
    I like to reward initiative with increased responsibility, and if somebody has the skills and initiative to take on and outgrow the title they’re hired for, I like to promote rather than risk losing a rising star to another company or team.

    Software Development Roles

    • Engineering Fellow
    • CEO
    • CTO
    • CIO/Chief Digital Officer/Chief Innovation Officer
    • VP of Engineering/Director of Engineering
    • Chief Architect
    • Software Architect
    • Engineering Project Manager/Engineering Manager
    • Technical Lead/Engineering Lead/Team Lead
    • Principal Software Engineer
    • Senior Software Engineer/Senior Software Developer
    • Software Engineer
    • Software Developer
    • Junior Software Developer
    • Intern Software Developer
    We’ll also talk a little about how these roles relate to other roles including:
    • VP of Product Management/Head of Product
    • Product Manager
    • VP of Marketing
    Note: Sometimes “director”, or “head” titles indicate middle managers between tech managers and the C-Suite. Often, “Chief” titles indicate a C-suite title. C-suite employees typically report directly to the CEO, and have potentially many reports in the organizations they lead. At very large companies, those alternate titles often fill similar roles to C-suite executives, but report to somebody who is effectively the CEO of a smaller business unit within the larger organization. Different business units sometimes operate as if they are separate companies, complete with their own isolated accounting, financial officers, etc. Different business units can also have VPs, e.g., “Vice President of Engineering, Merchant Operations”.

    Engineering Fellow

    The title “fellow” is the pinnacle of achievement for software engineers. It is typically awarded in recognition of people who have made outstanding contributions to the field of computing, and is usually awarded after an engineer writes a number of top selling books, wins prizes like the Turing Award, the Nobel Prize, etc. In other words, fellows are usually already famous outside the organization, and the company is trying to strengthen their brand by more strongly associating themselves with admired and influential people.

    In my opinion, organizations should not try to hire for “fellow” roles. Instead, find the best and brightest, hire them, and then grant the title (and benefits) if the engineer is deserving of it.

    A fellow typically also holds another title at the company. Often a CTO, Architect, VP of Engineering, or principal role, where they are in a position to lead, mentor, or serve as an example and inspiration to other members of the organization.

    CEO

    The CEO is the position of most authority in an organization. Typically, they set the vision and north star for the company. They rally everybody around a common understanding of why the company exists, what the mission is, and what the company’s values are. Frequently, CEOs are also the public face of the company, and in some cases, become synonymous with the brand (e.g., Steve Jobs with Apple, Elon Musk with Tesla/SpaceX, etc.)

    In some cases, CEOs are also the technical founder of a software organization, in which case, they also often fill the CTO role, and may have a VPs of Operations, Sales, Strategy, and Marketing helping with some of the other common CEO responsibilities.

    The CEO of a small company frequently wears a lot of hats, as you may have picked up from all the other roles that fell out of the CEO title when I mentioned that some CEOs lead the technology team.

    In any case, if there are important organizational decisions to be made, you can’t run it up the chain of responsibility any higher than the CEO.

    If you are a CEO, remember that you’re ultimately responsible, and you should trust your instincts, but don’t forget that even most famous CEOs have mentors and advisors they consult with on a regular basis. Trust your gut, but seek out smart, insightful people to challenge you to improve, as well.

    CTO

    Like the CEO role, the CTO role shape-shifts over time. At young startups, the CTO is often a technical cofounder to a visionary or domain-driven CEO. Frequently they are not qualified to take the title at a larger company, and hopefully grow into it as the company grows. Frequently, a startup CTO finds that they prefer more technical engineering roles, and settle back into other roles, like Principal Engineer, VP of Engineering, or Chief Architect.

    In many organizations, the mature CTO role is outward facing. They participate in business development meetings, frequently helping to land large partnerships or sales. Many of them hit the conference circuit and spend a lot of time evangelizing the development activities of the organization to the wider world: sharing the company’s innovations and discovering opportunities in the market which match up well with the company’s core competencies. CTOs frequently work closely with the product team on product strategy, and often have an internal-facing counterpart in engineering, such as the VP of Engineering.

    CTOs also frequently set the vision and north star of the engineering team. The goals for the team to work towards.

    CIO/Chief Digital Officer/Chief Innovation Officer

    The Chief Innovation Officer (CIO) is like a CTO, but typically employed by a company that would not normally be considered a “tech company”. The goal of the CIO is to reshape the company into one that consumers perceive as tech-savvy and innovative: To show the world what the future of the industry looks like, no matter what that industry is. For example, a home remodeling superstore chain might have a CIO responsible for partnering with tech companies to build a mixed reality app to show shoppers what a specific couch or wall color would look like in their living room, or using blockchains and cryptocurrencies to enhance the security and efficiency of supply chain logistics.

    Not to be confused with a Chief Information Officer (CIO), a title which is typically used in companies who are even more detached from technology, interested about as far as it aids their core operations. Unlike a Chief Innovation Officer, A Chief Information Officer is more likely to be leading tech integration and data migration projects than building new apps and trying to figure out how a company can disrupt itself from the inside. There are Chief Information Officers who act more like Chief Innovation Officers, but in my opinion, they should use the appropriate title.

    Most tech-native companies (app developers, etc) don’t have either kind of CIO. Instead, those responsibilities fall to the CTO and VP of Engineering.

    VP of Engineering/Director of Engineering

    While CTOs often face outward, the VP of Engineering often faces inward. A VP of Engineering is frequently responsible for engineering culture and operations. The CTO might tell the engineering team what needs to get done on the grand scale, e.g., “be the leading innovator in human/computer interaction”. The VP of Engineering helps foster a culture that manages the “how”. The best VPs of Engineering at first come across as somebody who’s there to help the team work efficiently, and then they almost disappear. Developers on the team collaborate well, mentor each other, communicate effectively, and they think, “Hey, we’re a great team. We work really well together!” and maybe they think that’s all a lucky accident.

    The truth is that almost never happens by accident. It happens because there’s a VP of Engineering constantly monitoring the teams progress, process, culture, and tone of communications. They’re encouraging developers to use certain tools, hold specific kinds of meetings at specific times in order to foster better collaboration with fewer interruptions. The best VPs of Engineering have been engineers, both on dysfunctional teams, and on highly functional teams. They know the patterns and anti-patterns for effective software development workflows.

    They work with the heads of product and product managers to ensure that there’s a good product discovery process (they don’t lead it or take charge of it, just make sure that somebody is on it and doing it well), and that product and design deliverables are adequately reviewed by engineers prior to implementation hand offs. I’m going to stop there before I write a book on all the work that goes into leading effective development operations. For more of my thoughts on this topic, check out How to Build a High Velocity Development Team.

    Many startups are too small to hire a full time VP of Engineering, but it’s still very important to get engineering culture right as early as possible. If you need help with this, reach out.

    Chief Architect

    At small organizations, the chief architect could be a technical co-founder with the self-awareness to realize that they won’t want the responsibilities of a CTO as the company grows. Maybe they don’t like to travel, or are simply more interested in software design than conference talks, business development, and sales calls that infiltrate the lives of many CTOs. The chief architect may be responsible for selecting technology stacks, designing collaborations and interfaces between computing systems, assessing compute services offerings (AWS, Azure, ZEIT Now, etc.), and so on. A chief architect may evaluate a wide range of industry offerings and make pre-approved or favored recommendations to work with particular vendors.

    As the company matures, the chief architect may also need to work closely with the CTO, and sometimes partner organizations to develop integrations between services. At many companies, the CTO also serves as the chief architect.

    Software Architect

    A software architect serves many of the purposes of a chief architect, but is generally responsible for smaller cross-sections of functionality. Architects will often work with the chief architect to implement their slice of the larger architectural vision. Software architects often make tech stack choices for particular applications or features, rather than company-wide decisions.

    Engineering Project Manager/Engineering Manager/Project Manager

    An Engineering Project Manager (also called “Engineering Manager” or simply “Project Manager”) is in charge of managing the workflow of an engineering team. They typically interface with both product leaders and an engineering leader such as VP of Engineering, CTO, or a middle manager to cultivate and prune the work backlogs, track the progress of work tickets, detailed progress reports (milestone burn down charts, completed vs open tickets, month/month progress reports, etc.) You can think of them as the analog of a shop manager for a manufacturing assembly line. They watch the work floor and make sure that the assembly line runs smoothly, and work product isn’t piling up on the floor in front of a bottleneck.

    The best Project Managers also spend a lot of time classifying issues and bugs in order to analyze metrics like bug density per feature point, what caused the most bugs (design error, spec error, logic error, syntax error, type error, etc.) and so on. Those kinds of metrics can be used to measure the effectiveness of various initiatives, and point out where improvements can be made to the engineering process.

    Engineering Managers tend to develop a good understanding of the strengths of various team members, and get good at assigning work tickets to the appropriate responsible parties, although, this should be a collaborative effort, seeking feedback from individual developers on what their career goals are and what they want to focus on, within the bounds of the project scope available.

    If there is time pressure or work backlogs piling up, the Project Manager should collaborate with the engineering and product leaders to figure out the root cause and correct the dysfunction as soon as possible.

    Wherever possible, the Project Managers should be the only ones directly delegating tasks to individual engineers in order to avoid the multiple bosses problem. Engineers should have a clear idea of who they report directly to, and who’s in charge of delegating to them. If you’re a different kind of engineering leader, and you’re guilty of delegating directly to engineers, it’s probably a good idea to coordinate with the Engineering Manager in charge of the report you’re delegating to and delegate through them so that the work receives correct, coordinated prioritization, and the Engineering Manager is aware of what each engineer is actively working on at any given moment.

    At very small organizations, the Engineering Manager is often also the CTO and VP of Engineering (with or without the corresponding titles). If that’s you, don’t worry about the previous paragraph.

    A common dysfunction is that the Engineering Manager can begin to think that because product hands off work for engineering to implement, and Engineering Managers work closely with product teams, that the Engineering Manager reports to a Product Manager. In every case I’ve seen that happen, it was a mistake. See “Avoiding Dysfunctions…” below.

    Tech Lead/Team Lead

    The Tech Lead or Team Lead is usually the leader of a small number of developers. They are usually senior engineers who act like mentors, examples, and guides for the rest of the team. Usually, engineers report to the project manager or engineering manager, but a tech lead may be responsible for the team’s code quality measures, such as ensuring that adequate code reviews are being conducted, and that the team’s technical standards (such as TDD) are being upheld.

    Engineer Career Progressions

    Generally, engineers can take one of two career paths: move into management, or keep coding. Management positions aren’t for everyone. Lots of engineers prefer to stay on the technical path. That progression can take many directions, twists, and turns, but could look something like this:

    Intern -> Junior Software Developer -> Software Developer/Engineer -> Senior Software Engineer -> Principal Software Engineer -> Software Architect -> Senior Software Architect -> Chief Architect -> CTO -> Engineering Fellow

    Alternatively, for those engineers interested in a people leadership role, a progression might look something like this:

    Intern -> Junior Software Developer -> Software Developer/Engineer -> Team Lead/Tech Lead -> Engineering Manager/Project Manager -> Senior Engineering Manager -> Director of Engineering -> VP of Engineering

    Avoiding Dysfunctions in Engineering Leadership

    IMO, VP of Engineering, CTO, VP of Product, and VP of Marketing should all report directly to the CEO. Each of them needs to be in charge of their own process. External facing CTOs should not have direct reports (if they do, it usually means they are filling both the CTO and VP of Engineering Roles). Instead, the Engineering leaders report to the VP of Engineering. This is to avoid the two bosses dysfunction, but also because these roles are fundamentally different: one focused on the customer and how the organization fits into the wider world, and the other focused on internal, day-to-day operations. They’re two wildly different skill sets, with sometimes competing priorities.

    I’ve seen a lot of dysfunction in engineering leadership because of confusion about which engineering leaders are responsible for what, and it tends to be a recipe for disaster. Whatever is right for your organization, make sure that responsibilities and chain of authority are clear, in order to avoid engineers feeling torn between two or three different “bosses”.

    Likewise, in an organization of sufficient size, product and engineering need to be two separately led teams. What I mean by that is that the product managers should own the product roadmap. They should be evangelists for the users, and they should be really plugged into the users, often engaging with them 1:1 and learning about their workflows and pain-points in great depth. They should be experts on what the market needs, and they should be very familiar with the company’s strengths and capabilities to fill those needs.

    That said, the VP of Engineering (or whomever is filling that role) needs to be in charge of delivery, and production pace. While the product managers should own the roadmap, the engineering managers need to be responsible for taking those roadmap priorities, matching them to the engineering capacity, and reporting on the timing. Product and marketing teams will have strong opinions about when something should ship, but only the engineering management has a good gauge of whether or not those delivery timelines are possible given the roadmap requirements. The engineering team needs the authority not simply to push back on timing, but in most cases, to completely own timing, working with the CEO, product, and marketing teams to figure out priorities, understand strategic needs of the company, and then help shape a development cadence that can meet those needs without imposing drop-dead deadlines that ultimately hurt the company’s ability to deliver quality products at a reliable pace.

    The best performing teams I’ve ever been involved with subscribed to the no deadlines approach. We build great products without announcing them in advance, and then let the marketing teams promote work that is already done. Alternatively, when you’re working in the public view, transparency is a great solution. Instead of cramming to meet an arbitrary deadline, actively share your progress, with ticket burn-down charts, a clear view of remaining work, progress, pace, and remaining scope, and change over time that can indicate scope creep. When you share detailed information about the progress being made, and share the philosophy that we can’t promise a delivery date, but we can share everything we know about our progress with you, people can see for themselves the work and the pace.

    Because of differing, often competing goals, product, marketing and engineering need to be separate roles reporting directly to the CEO where none of them can dictate to each other. If your team feels time pressure to work overtime, or crunch to get some key deliverable out before some drop-dead deadline, it points to a dysfunction here. Either the engineering managers are reporting to the wrong people, or the team lacks a strong engineering leader who understands the futility of software estimates and the need for a collaborative give-and-take between engineering and product in order to ensure the flexibility of shipping scaled-back MVPs to hit delivery targets.

    Product should own the continuous discovery process. Engineering should own the continuous delivery process. Marketing should work hand-in-hand with the product team to ensure that product messaging to the wider world is on-point. The whole thing should fit together like a pipeline, creating a smoothly flowing, positive feedback cycle. Like an assembly line, the slowest bottleneck in the process must set the pace for the rest of the process, otherwise, it will lead to an ever-growing backlog that piles up so much that backlog items become obsolete, and backlog management becomes a full-time job.

    Product teams who feel like engineering is not keeping pace should focus first on quality of engineering hand-off deliverables. Have we done adequate design review? Has an engineer had a chance to provide constructive feedback before handoff? 80% of software bugs are caused by specification or UX design errors, and many of those can be caught before work ever gets handed off to an engineering team. Once you have that process finely tuned, ask yourself if you’ve really explored the product design space thoroughly enough. Did you build one UX and call it done, or did you try multiple variations? Building and testing variations on user workflows is one of the most valuable contributions a product team can make. Do you have a group of trusted users or customers you can run A/B prototype tests with?

    One of the biggest dysfunctions of software teams is that the product team is producing sub-par deliverables (sometimes little more than a few rushed, buggy mock-ups), and failing to run any of them by customers or engineers prior to handing them off. That dysfunction causes a pileup of re-work and engineering backlog that often gets blamed on engineering teams.

    Make sure that the delegation of responsibilities makes sense, that you’re not putting undue time pressure on engineering, and that you have a great product team engaged in a collaborative product discovery process, working with real users to build the best product.

    Engineering managers, I’m not letting you off the hook. If these dysfunctions exist on your team, it’s your responsibility to address them with product, marketing, and business leadership, and spearhead requirements for engineering hand-offs. It’s also your responsibility to protect the productive pace of your team, go to bat for additional resources if your team is being pressured to produce more than your current capacity can handle, to report clearly on the work pacing and backlog, and to demo completed work and ensure that your team is getting due credit for the fine work that is being done. Don’t place blame, but do demonstrate that your team is doing their very best work.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源工场和学生开源年会联合参展新加坡 OpenTech Summit 2019

    15 3 月, 2019

    由 FOSS Asia 主办的 Open Tech Summit Singapore 是亚洲最大的开源技术会议之一,今年的活动于本月的3月14日-17日在新加坡 Longlife Learning Institute 举行。开源工场和学生开源年会受邀参展本次盛会,在现场有一个联合展台,还有愉快的小伙伴领衔坐镇(感谢新加坡志愿者:Hongwei、Shirly、婧雅),下面是他们的合影和一百种灿烂笑容的开源配方,你喜欢吗?

    开源工场是一个校园风格的古典开源文化社区,通过开源协作形式来创造生产力和寓技术于乐趣的频分多址非盈利开源社区,主张享受开源审美和动手做开源,这是开源工场的大易拉宝,它也参加过去年台湾的SITCON,设计师是琳洁,蒹葭苍苍,白露为霜;开源工场,在水一方,这样的开源工场你喜欢吗?下图是在水一方的小伙伴 Hongwei 同学哦!@

    工场目前已经建立了全球流行开源项目榜中榜开源周报、开源日报、媛宝、猿帅、开源尚青、开源工寮等原创栏目,不少小伙伴在国内都参加过开源工场的活动,或者订阅栏目,也有偷偷跟小编告白的、委托小编帮忙告白的、威胁小编必须接受告白的…小编鼓励你们…多来参加开源工场的活动,多学习开源的轮子,书山有路勤为径,码海无涯苦做舟。展台来了很多印度的朋友们,似乎都有点厉害。

    学生开源年会(sosconf )是首个由学生组织面向学生的非盈利社区全球性开源技术峰会,峰会基于开放源代码的理念,鼓励学生享受开源、了解开源、参与开源、贡献开源,并能从开源中得到实践和乐趣。峰会每年在不同国家不同城市举办,从演讲者、组织者、志愿者到听众,绝大多数为在校学生,包括中学生、大学生硕士研究生和博士研究生,其中演讲者和志愿者仅限学生身份报名,听众不做任何限制。并特设《全球学生开源项目博览会》板块,针对全球各国学生身份创办和发起的优秀开源项目设立现场展示区域和线上展示区域,以便让更多人了解学生开源项目,以及促进不同区域不同学生项目的可持续发展、交流和孵育。这位印度的大学教授似乎对学生开源年会非常感兴趣,带着一群同学一起聊了许久,聊天的结束,当然是愉快的合影咯

    sosconf 2019 将在美国南加州大学举办,预计下周就要正式通告了,这位印度老师知道消息后强烈表示希望可以参与,小伙伴当然义正言辞地告诉他!非常欢迎。@

    除了照顾我们自己的展台,忙里偷闲,会场四处逛逛:


    整个活动非常专业,也非常精彩,时间有限今天就先介绍到这里吧,明天后天我们还在现场,如果你在新加坡,欢迎来我们的展台做客,如果不在新加坡,也许某一天我们也会来到你的城市,与你一起面对面哦@

←上一页
1 … 167 168 169 170 171 … 262
下一页→

Proudly powered by WordPress