中南大学杰出校友_杰出PHP社区成员的工作流程是什么?

中南大学杰出校友

Workflow refers to both the process and the tools that are used in this process. Almost every developer comes up with a process of creating and finalizing the project deliverables. This process is implemented through a set of tools that the developer comes up with through trial and error. Once a workflow has been perfected, developers follow the process almost religiously because of a simple reason: following workflows reduces most of the management problems that developers have to face during a project.

工作流既指该过程,也指该过程中使用的工具。 几乎每个开发人员都提出了创建和确定项目可交付成果的过程。 该过程是通过开发人员通过反复试验得出的一系列工具来实现的。 完善工作流程后,开发人员会出于一个简单的原因而认真地遵循流程:遵循工作流程可以减少开发人员在项目期间必须面对的大多数管理问题。

Since developing workflows is a matter of experience and trial and error (a very distressing process), many experts recommend that budding developers should try and study the workflows of other known developers. Over time, these new developers would come up with their own toolkit for project development, as they adopt what works for them and discard what doesn’t.

由于开发工作流程是经验和反复试验(一个非常痛苦的过程)的问题,因此许多专家建议初出茅庐的开发人员应尝试研究其他已知开发人员的工作流程。 随着时间的流逝,这些新开发人员会采用自己的工具包来进行项目开发,因为他们会采用对自己有用的工具,而对无效的工具进行废弃。

Here are some of the PHP ecosystem’s most popular developers and designers, and their tools and/or workflows. Note that these workflows will by no means be comprehensive, but even mentions of tools used by some of the more prominent members of our community should be enough to warrant checking them out.

以下是一些PHP生态系统中最受欢迎的开发人员和设计师,及其工具和/或工作流程。 请注意,这些工作流程绝不会是全面的,但是即使提及我们社区中一些较杰出的成员所使用的工具,也足以保证对其进行检查。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

泰勒·奥特威尔(Taylor Otwell),Laravel的创作者 (Taylor Otwell, Creator of Laravel)

  • Currently, Blackfire.io is my favorite tool for profiling PHP applications. It provides an easy-to-use interface and quick approach to identifying troublesome parts of the application.

    目前,Blackfire.io是我最喜欢PHP应用程序性能分析工具。 它提供了易于使用的界面和快速的方法来识别应用程序的麻烦部分。

  • For continuous deployment, I typically rely on Forge and Envoyer, two services I created myself.

    为了进行连续部署,我通常依赖于我自己创建的两项服务ForgeEnvoyer

Taylor also discussed his workflow in depth in this Hashnode AMA – check it out to find out specifics.

泰勒还在此Hashnode AMA中深入讨论了他的工作流程-进行检查以了解细节。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

WeWork的软件工程师Phil Sturgeon (Phil Sturgeon, Software Engineer at WeWork)

  • Vagrant and Docker help keep projects wrapped up and isolated, so most of the time I use those if the dependencies are complex enough to warrant it.

    VagrantDocker帮助保持项目的包装和隔离,因此大多数时候我使用那些依赖程度足够复杂的项目来保证它。

  • These days, I’m working mostly on APIs, so a lot of the time, I just pull down the Git repo, composer install, php -S or run the test suite.

    这些天来,我主要从事API方面的工作,所以很多时候,我只是拉下Git存储库, composer install, php -S或运行测试套件。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Stefan Priebsch,thePHP.cc的IT顾问 (Stefan Priebsch, IT Consultant at thePHP.cc)

  • I usually work with PHPStorm, PHPUnit, phpab, PHP_Depend, and PHP CodeSniffer.

    我通常使用PHPStormPHPUnitphpabPHP_DependPHP CodeSniffer

  • I recently started to use an interesting new tool called dephpend, a very promising dependency analysis tool that can detect architecture violations.

    我最近开始使用一个有趣的新工具dephpend ,这是一个非常有前途的依赖分析工具,可以检测体系结构违规。

  • Of course, I use Git as version control and Jenkins for continous integration, though I do not usually set up a CI server for my private projects.

    当然,我通常使用Git作为版本控制,使用Jenkins进行持续集成,尽管通常不为私有项目设置CI服务器。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Nifires Grekas,首席技术官Blackfire.io (Nicolas Grekas, CTO Blackfire.io)

  • On the hardware side, I use a nice Fujitsu laptop, with two additional screens (that’s three screens with my laptop’s, but I mostly use two of them.)

    在硬件方面,我使用一台漂亮的Fujitsu笔记本电脑,带有两个额外的屏幕(这是笔记本电脑的三个屏幕,但我大多使用其中的两个。)

  • On the software side, I use Ubuntu, Git, vim, a terminal, and a browser.

    在软件方面,我使用UbuntuGitvim ,终端和浏览器。

  • I also sometimes use qgit, write in Sublime Text, and have a Windows VM to debug issues there (yes, Blackfire works also on Windows!) or to use PowerPoint on.

    我有时还会使用qgit ,用Sublime Text编写,并使用Windows VM在那里调试问题(是的, Blackfire在Windows上也可以使用!)或在PowerPoint上使用。

  • I may be wrong, but I tend to think that the slowest part of my development experience is my brain, so I don’t feel the need for a fancy IDE.

    我可能是错的,但是我倾向于认为我的开发经验中最慢的部分是我的大脑,因此我不觉得需要精美的IDE。

  • Docker Compose for booting the Blackfire stack locally, and more recently the soon to be publicly released SensioCloud, to reduce infra setup to a simple port tunneling.

    Docker Compose用于本地启动Blackfire堆栈,最近启动了即将公开发布的SensioCloud ,以将基础设施设置简化为简单的端口隧道。

  • On the project/quality management side, we use Github, Splitsh, Jenkins, Appveyor, Zendesk, Jira, Slack, and a few others.

    在项目/质量管理方面,我们使用Github, SplitshJenkinsAppveyorZendeskJiraSlack等。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Adam Wathan,软件企业家和作者 (Adam Wathan, Software Entrepreneur and Author)

Here’s some of my favorites:

这是我的最爱:

  • 27″ 5K iMacfor 99% of my work

    27英寸5K iMac占用了我99%的工作

  • 13″ Retina MacBookPro, for when I need to work on the go

    13英寸Retina MacBook Pro,适合在旅途中工作时使用

  • Sublime Text 3 for all development work

    Sublime Text 3用于所有开发工作

  • Sequel Pro for working with MySQL databases

    Sequel Pro,用于处理MySQL数据库

  • Airmail 3 for email

    航空邮件 电子邮件3

  • Todoist to keep track of what I need to get done

    Todoist跟踪我需要完成的工作

  • iTerm 3 with ZSH as my terminal

    以ZSH为终端的iTerm 3

  • Github for all my repository hosting

    Github用于我所有的存储库托管

  • Laravel Forge for provisioning servers

    Laravel Forge用于配置服务器

  • Envoyer for zero downtime deployments

    零停机时间部署的Envoyer

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Icontem和phpclasses.org的创始人Manuel Lemos (Manuel Lemos, Founder of Icontem and phpclasses.org)

Since 2006 I standardized my PHP project development using Use Case Mapping:

自2006年以来,我使用用例映射对PHP项目开发进行了标准化:

  • My each project is divided into Sub-systems like: blog system, forum system, mass mailing system, social networking system, gamification system, etc..

    我的每个项目都分为子系统,例如:博客系统,论坛系统,群发邮件系统,社交网络系统,游戏化系统等。

  • Each subsystem is composed of Use Case (User Story) classes that act like controllers. They handle HTTP requests or some other kind of input, call Service classes to perform actions like accessing a database or a remote system.

    每个子系统都由充当控制器的用例(用户案例)类组成。 它们处理HTTP请求或其他类型的输入,调用Service类以执行诸如访问数据库或远程系统之类的操作。

  • For database access I use an ORM code generation tool called Metastorage that I have been developing since 2002. It takes a object relationship definition from a XML file and generates code for PHP classes for accessing data of each class objects.

    对于数据库访问,我使用自2002年以来一直在开发的称为Metastorage的ORM代码生成工具。它从XML文件获取对象关系定义,并为PHP类生成代码以访问每个类对象的数据。

  • The tool generates final code, i.e. code that does not need to be edited after being generated. It also generates database schema definition files that allow installing and upgrading the database schema without further concern on the exact SQL statements that are needed to update a schema.

    该工具会生成最终代码,即生成后无需编辑的代码。 它还会生成数据库架构定义文件,该文件允许安装和升级数据库架构,而无需进一步关注更新架构所需的确切SQL语句。

Nowadays it is normal for 50% of my PHP projects code to be generated by Metastorage. This means it made me much more productive, working less to achieve more, and use more reliable code, as Metastorage generates type checked code.

如今,通常有50%PHP项目代码由Metastorage生成。 这意味着随着Metastorage生成类型检查的代码,它使我的工作效率更高,工作更少,实现更多目标,使用更可靠的代码。

alt

Twitter | GitHub

推特 | 的GitHub

Slim Framework和PHP的创始人Josh Lockhart,正确的方法 (Josh Lockhart, Founder of Slim Framework and PHP The Right Way)

  • I use Vagrant to manage a unique Ubuntu virtual machine for each project.

    我使用Vagrant为每个项目管理唯一的Ubuntu虚拟机。

  • I provision each virtual machine and my production servers with the same Ansible roles to ensure both environments are exactly the same.

    我为每个虚拟机和生产服务器配备了相同的Ansible角色,以确保两个环境完全相同。

  • I prefer PHPStorm for writing code.

    我更喜欢PHPStorm编写代码。

  • I use Composer on 99.999% of my projects.

    我在99.999%的项目上使用Composer

  • I write and run tests with PHPUnit.

    我用PHPUnit编写和运行测试。

  • Version controlling is done through GitLab, which in turn triggers continuous tests on either CodeShip or Travis CI.

    版本控制通过GitLab完成, GitLab依次触发对CodeShipTravis CI的连续测试。

  • I manage deployments with Capistrano. It’s a solid workflow that has taken several years to discover and refine. But I’m super happy with where I’m at.

    我通过Capistrano管理部署。 这是一个坚实的工作流程,需要花费几年的时间才能发现和完善。 但是我对自己的位置感到非常满意。

  • Docker is tempting, but I don’t believe it has matured enough for me to easily use and manage it in production.

    Docker很诱人,但我认为它还不够成熟,无法让我轻松地在生产中使用和管理它。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

发言人兼顾问Eryn O'Neil (Eryn O’Neil, Speaker and Consultant)

I work on lots of different projects, most of which were started by someone other than me. So many things in my development workflow change from project to project. However, the following things are always (or mostly) consistent:

我从事许多不同的项目,其中大多数是由我以外的人发起的。 我的开发工作流程中的许多事情因项目而异。 但是,以下情况始终(或大部分)是一致的:

  • I use a Dell Developer Edition 13″ XPS with Ubuntu. (The Developer Editions ship with Ubuntu installed and Dell guarantees driver support. I also rely on my portable Roost stand and external keyboards & mice.

    我在Ubuntu上使用Dell Developer Edition 13“ XPS。 (开发人员版随附Ubuntu安装,并且Dell保证提供驱动程序支持。我还依赖于我的便携式Roost支架以及外部键盘和鼠标。

  • On the software side, I develop on Ubuntu in vim. I’ve got a .vimrc and some plugins that make life easier.

    在软件方面,我在vim上的Ubuntu上进行开发。 我有一个.vimrc和一些使生活更轻松的插件。

  • I use Vagrant to separate my local development environments. Scotch Box is an amazing out-of-the-box Vagrant experience, which helps me get started quickly on new projects where I don’t have access to a development environment or existing VM.

    我使用Vagrant来分隔本地开发环境。 Scotch Box是令人惊奇的开箱即用的Vagrant体验,它可以帮助我快速上手我无法访问开发环境或现有VM的新项目。

  • I manage projects with Github Issues and their newish Projects feature (basically Trello-style boards integrated with your GitHub repository). For higher level project management, I use Insightly to keep everything straight.

    我使用Github Issues及其新的Projects功能(基本上是与您的GitHub存储库集成的Trello风格的板)来管理项目。 对于更高级别的项目管理,我使用Insightly使一切保持正确。

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Cal Evans,运行Nomad PHP,elePHPant (Cal Evans, Runs Nomad PHP, elePHPant)

My workflow for new projects usually follows this pattern.

我的新项目工作流程通常遵循这种模式。

  • Open Sublime Text and write 20-40 lines of procedural PHP to see if the idea works.

    打开Sublime Text并编写20至40行程序化PHP,以查看该想法是否可行。

  • I design the database if a database is needed. Not all projects need a database. Even if info like config options need to persist, a lot of times a simple config file will suffice. For the database design, I stick with MySQL Workbench. It’s been my tool of choice for many years now.

    如果需要数据库,我将设计数据库。 并非所有项目都需要数据库。 即使需要保留诸如配置选项之类的信息,许多情况下,简单的配置文件也足够了。 对于数据库设计,我坚持使用MySQL Workbench。 多年来,它一直是我选择的工具。

  • Walk through the workflow: If I designed a DB for the project, then this step is mostly done already. If not, I walk through the workflow. Sometimes I diagram it out, other times, I just start making a list of the objects I think I will need. I usually WAY over-design and only use about 1/2 of the objects I list. If this is an API, I list out all the Endpoints I think I will need. If it is a website, I list the pages. Most of the time, it is a CLIproject and I start with the commands I will need. Since I use symfony/command for everything, it makes it a good starting point.

    逐步进行工作流:如果我为项目设计了一个数据库,那么此步骤通常已经完成。 如果没有,我将逐步完成工作流程。 有时我会进行规划,而其他时候,我只是开始列出我认为需要的对象。 我通常会过度设计,只使用列出对象的约1/2。 如果这是一个API ,那么我会列出我认为需要的所有端点。 如果是网站,我会列出页面。 大多数情况下,这是一个CLI项目,我从需要的命令开始。 由于我对所有内容都使用symfony / command,因此这是一个很好的起点。

  • Build one Command

    建立一个命令

    • Build the command and make it work.

      生成命令并使它工作。

    • Break out any new objects discovered in the process into discrete objects

      将过程中发现的任何新对象分解为离散对象

    • Write unit tests for the command

      编写命令的单元测试

    • Commit to the repo

      提交回购

  • A word on Unit Tests. If this is a project that only I will ever use, no I don’t usually write Unit tests. If ANYONE else will be involved, yes, I write them. I usually shoot for about 70%-80% code coverage.

    浅谈单元测试 。 如果这是一个只有我会使用的项目,不,我通常不会编写单元测试。 如果有其他人参与,是的,我写了。 我通常会拍摄约70%-80%的代码覆盖率。

  • Regarding repositories, yes, almost EVERY project I build these days is under source code control. Again, my workflow differs if it’s just me vs. working with others. If it’s just me, I will usually work in the master branch if this is a new project and a new branch if it is an iteration on an existing project. If others are working with me, I usually adopt feature branches.

    关于存储库,是的,这些天我构建的几乎每个项目都在源代码控制之下。 同样,我的工作流程与只是我自己还是与他人一起工作有所不同。 如果只是我,那么如果这是一个新项目,我通常将在master分支中工作,如果这是一个现有项目的迭代,我通常将在master分支中工作。 如果其他人在和我一起工作,我通常会采用功能分支。

  • Iterate until it works: Note I didn’t say “until it’s done”. Every project I’ve ever built is incomplete. There are always things I can add, new features, new options, refactoring, I asked an artist friend of mine “When do you know it’s done?” He replied that art is never done. My code doesn’t rise to the level of art, but I agree with the sentiment.

    迭代直到它起作用:注意,我没有说“直到完成”。 我曾经建立的每个项目都是不完整的。 我总是可以添加一些东西,包括新功能,新选项,重构。我问我的一个艺术家朋友:“什么时候知道它完成了?” 他回答说艺术永远不会完成。 我的代码没有达到艺术水平,但是我同意这种观点。

    So that’s how I work. My indispensable tools are:

    这就是我的工作方式。 我必不可少的工具是:

  • Composer

    作曲家

  • PHPUnit

    PHPUnit

  • Git

    吉特

  • Sublime Text 3

    崇高文字3

  • MySQL Workbench

    MySQL工作台

  • Docker

    码头工人

  • Slim framework for APIs

    API的超薄框架

  • WordPress for websites

    网站的WordPress

  • Symfony/console for everything else

    Symfony /控制台的其他一切

alt

Twitter | Linkedin | GitHub

推特 | Linkedin | 的GitHub

Brightpearl的高级软件开发人员Kat Zien (Kat Zien, Senior Software Developer at Brightpearl)

My development workflow is pretty standard.

我的开发工作流程非常标准。

  • I use Trello or github/gitlab issues for planning. I use a bunch of editors depending on what I’m working on. Vim if it’s bash or just quickly editing something.

    我使用Trellogithub / gitlab问题进行规划。 根据我的工作,我会使用大量的编辑器。 Vim是bash还是只是快速编辑某些东西。

  • PHPStorm for PHP, Gogland for Go – been happily using the JetBrains family for years now.

    PHPStorm为PHP, Gogland围棋 -被愉快地使用了JetBrains的家庭很多年了。

  • I recently started using VSCode from Microsoft for Go or bash scripts as well, and so far I really like it.

    我最近也开始将Microsoft的VSCode用于Go或bash脚本 ,到目前为止,我非常喜欢它。

  • As for techniques, I try to do TDD but I would be lying if I said I always do that. Sometimes if I’m doing something exploratory I’ll skip the tests and just dive in, and worry about refactoring and testing later.

    至于技术,我尝试做TDD,但是如果我说我总是这样做的话,我会撒谎。 有时,如果我正在做一些探索性的事情,我会跳过测试而只是深入研究,而后担心重构和测试。

  • I do love my code tested though, so for longer projects I’ll set up Jenkins or Travis CI to run the tests and code coverage for me.

    我确实喜欢测试过的代码,因此对于更长的项目,我将设置JenkinsTravis CI来为我运行测试和代码覆盖率。

  • If I’m writing Go, I’ll write some benchmarks as well to make sure my code is performing well. Go has a lot of great tools built in, such as race detectors or runtime profilers, so I’ll usually use those when working on a project.

    如果我正在编写Go ,那么我还将编写一些基准测试以确保我的代码运行良好。 Go内置了许多出色的工具,例如竞赛检测器或运行时分析器,因此我通常在项目开发中使用这些工具。

I like contributing my code via pull requests, whether it’s personal projects or at work, so my workflow is pretty much based off that. Create a request, get it code reviewed, merge, then the tests run and off it goes to our continuous delivery pipeline. Unless it’s a one-off simple project, automating as much as I can is key! :)

我喜欢通过拉式请求(无论是个人项目还是在工作中)贡献代码,因此我的工作流很大程度上基于此。 创建一个请求,审查它的代码,合并,然后运行测试,然后转到我们的持续交付管道。 除非它是一个一次性的简单项目,否则要实现尽可能多的自动化是关键! :)

alt

Twitter | Linkedin

推特 | 领英

客户门户和设计学院的创建者Laura Elizabeth (Laura Elizabeth, Creator of Client Portal and Design Academy)

I’m a designer and my partner is a developer (we’re both business owners) so our workflows are very collaborative.

我是设计师,我的合伙人是开发人员(我们都是企业主),所以我们的工作流程非常协作。

  • We do our planning on paper and use clubhouse to organise our to-do’s.

    我们在纸上进行计划,并使用会所组织待办事项。

  • My partner will start coding the basic structure, including filling in the content while I jump into Photoshop and start mocking up some visuals.

    我的搭档将开始编写基本结构的代码,包括在我进入Photoshop并开始模拟一些视觉效果时填写内容。

  • We use Fractal to define components and we start styling up some core components like buttons or particular modules that will be reused.

    我们使用Fractal定义组件,然后开始设计一些核心组件,例如按钮或将被重用的特定模块。

  • We use Atom for editing and BitBucket for development.

    我们使用Atom进行编辑,使用BitBucket进行开发。

  • For one of our apps (http://rightmessage.io) we’re using Laravel :-) others are simple WordPress websites or plugins.

    对于我们的其中一个应用程序(http://rightmessage.io),我们正在使用Laravel :-)其他应用程序是简单的WordPress网站或插件。

结论 (Conclusion)

From the above lists, some workflow ideas are very clear:

从上面的列表中,一些工作流程思路非常清晰:

  • Linux is the preferred development environment. Developers do use Windows or other OS, but only for testing and application compatibility verification.

    Linux是首选的开发环境。 开发人员确实使用Windows或其他OS,但仅用于测试和应用程序兼容性验证。

  • Developers love Docker and Vagrant to manage their projects.

    开发人员喜欢Docker和Vagrant来管理他们的项目。

  • Jenkins and Travis CI are the suggested tools to manage continuous deployment with GitHub and GitLab

    JenkinsTravis CI是建议使用GitHub和GitLab管理连续部署的工具

  • Git wins unanimously for version control, and most people like to have tests but don’t write them for personal projects.

    Git的版本控制获得一致认可,大多数人喜欢进行测试,但不为个人项目编写测试

  • The choice of IDEs and code editors is very personal and varies from simple text editors, to modern text editors, to full IDEs. When it’s an IDE, however, the paid PHPstorm seems to be preferred over free alternatives like Netbeans.

    IDE和代码编辑器的选择非常个人化,从简单的文本编辑器到现代文本编辑器再到完整的IDE,一应俱全。 但是,当使用IDE时,似乎比免费的替代产品(如Netbeans)更喜欢付费PHPstorm。

What are some of your workflow specifics? Did you find common workflow ground with any of these developers? Let us know what approach your development process takes, and maybe we’ll come away with the ultimate list of tools no one’s heard of but should have!

您的工作流程有哪些具体细节? 您是否找到了与任何这些开发人员共同的工作流程? 让我们知道您的开发过程采用什么方法,也许我们会得到一个没人听说过但应该拥有的最终工具清单!

翻译自: https://www.sitepoint.com/workflows-prominent-community-members/

中南大学杰出校友

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值