Hui Xinchen es uno de los expertos técnicos en PHP más influyentes de China, miembro central del equipo de desarrollo de PHP, desarrollador de PECL y consultor externo de Zend. Trabajó en Yahoo y Baidu, y actualmente es arquitecto jefe del departamento de plataforma y datos y consultor jefe de PHP en Sina Weibo. Hui Xinchen es desarrollador principal de PHP NG y desarrollador principal de PHP 5.4 y 5.5. Como desarrollador de PECL, ha contribuido con Yaf, Yar, Yac, Taint y otras excelentes obras de código abierto, y también es mantenedor de proyectos como APC, Opcache y Msgpack.
Desde ser un principiante que buscaba tutoriales de PHP en Internet hasta convertirse en miembro central del equipo de desarrollo de PHP, Hui Xinchen siente que todo el proceso fue como "subir de nivel derrotando monstruos". PHP, que al igual que Java también es llamado lenguaje de cuello azul, en su opinión es precisamente la cuna que puede formar a más programadores, y en la era en que todos pueden programar, inevitablemente surgirán más talentos que impulsen el avance tecnológico.

Pregunta: ¿Cómo empezaste a interesarte por la programación?
La primera vez que hice "programación" fue, creo, en una consola de aprendizaje Subor. Después estudié informática en la universidad, y durante el posgrado fui responsable de la construcción de la informatización del campus, haciendo mucho desarrollo web, de forma activa o pasiva, incluidos los sitios web de muchos departamentos secundarios de la escuela y el mantenimiento del BBS del campus. Pensándolo bien, no parece que hubiera un momento o una ocasión concreta en la que decidiera que me gustaba programar. Simplemente entré en esta industria de forma natural, no me desagradó, y así seguí.
Pregunta: ¿Cómo llegaste a gustar de PHP? ¿Y cómo te convertiste en miembro central del equipo de desarrollo de PHP?
En ese momento, durante el posgrado, necesitaba crear un sitio web. Como no sabía nada, busqué en Internet y casualmente encontré un tutorial de PHP que enseñaba cómo hacer un sitio web sencillo. Intenté seguirlo y descubrí que era muy conveniente en cuanto a instalación, despliegue (en ese entonces no existían las herramientas de despliegue centralizadas, aunque también había muchos tutoriales sobre cómo desplegar LAMP), escritura de código y pruebas; además, la sintaxis era muy similar a la de C, e incluso muchos nombres de API eran iguales a los de libc. Así comenzó mi vínculo inseparable con PHP.
Debe haber sido en 2011. En ese momento desarrollé Ap (el proyecto predecesor de Yaf) para Baidu, y funcionaba bastante bien internamente en Baidu. Entonces pensé en contribuirlo a PECL. Después de hacer algunas modificaciones, lo renombré Yaf (Yet another framework; el nombre también era una especie de autocrítica, porque había muchísimos frameworks de PHP). Envié un correo a la lista de correo de PHP. Como mi inglés era bastante malo, el proceso fue bastante tortuoso. Afortunadamente, Pierre Joye me ayudó mucho y Yaf entró en PECL.
Además, antes de enviar Yaf, en realidad siempre estuve estudiando el código fuente de PHP, así que también envié muchos bugs y correcciones. Por ejemplo, recuerdo que un mediodía, Rasmus (el padre de PHP) dijo en IRC que había encontrado un bug, y yo presenté una corrección unos 5 minutos después.
Cuando poco a poco fui conociendo a algunas personas y gané su confianza, presenté una solicitud. Después obtuve permisos de commit para el código central de PHP, participé en el desarrollo directo y la corrección de bugs de PHP, y me convertí en miembro del equipo de desarrollo.
En cuanto a ser "central" (core), eso se fue acumulando poco a poco; en realidad es un proceso de confianza mutua. Si tu trabajo es reconocido por los demás, respetarán tus opiniones. Poco a poco fui haciéndome amigo de Dmitry Stogov, obtuve permisos de commit en la parte central de Zend, envié muchas correcciones de bugs centrales y nuevas características, y más tarde me convertí en consultor externo de Zend y, gradualmente, en Core Developer.
Suena un poco como "matar monstruos y subir de nivel", ¿verdad?
Pregunta: ¿Bajo qué circunstancias desarrollaste Yaf? ¿Cómo apoyó Baidu el desarrollo de Yaf en ese entonces?
Antes de Yaf, siempre hubo un debate clásico sobre usar o no un framework: "Usar un framework reduce el rendimiento, y no usarlo reduce la eficiencia del desarrollo."
En ese entonces, dentro de Baidu había muchos frameworks, incluidos los de código abierto como Yii, ZF, etc., y también algunos escritos por los propios equipos. Esto generaba un problema: las bibliotecas de clases y algunas infraestructuras periféricas no podían interoperar.
Otra razón era que, después de que muchos autores publicaban sus frameworks, descubrían que diferentes personas hacían diversas modificaciones al framework. Con el tiempo, un framework publicado se convertía en varias variantes, y la actualización unificada posterior se volvía imposible.
Así que decidí implementar un framework con una extensión de PHP para resolver estos problemas. Por supuesto, antes de escribir la extensión no estaba muy seguro; no sabía cuánta mejora de rendimiento podría aportar el uso de la extensión. Afortunadamente, el resultado final fue muy bueno.
Pregunta: ¿Por qué elegiste escribir Yaf en C?
PHP está escrito en C, por lo que sus extensiones también se escriben en C; de ahí que eligiera C para escribir Yaf.
Pregunta: ¿Por qué dejaste Baidu y viniste a Sina Weibo?
En realidad, había muchas razones. Por ejemplo, en ese momento ya era T7 en Baidu, participaba menos en asuntos de negocio y sentía que no tenía mucho que hacer, una sensación de estar perdiendo el tiempo.
Además, en ese entonces trabajaba en el departamento de búsqueda comercial de Baidu y no tenía contacto directo con sistemas de alto tráfico, así que también esperaba encontrar una gran plataforma para seguir formándome, y Weibo era precisamente una plataforma así.
Desde que llegué a Weibo, ciertamente me he enfrentado a muchos desafíos que no había encontrado antes, y siento que mis conocimientos tienen un escenario más amplio para desarrollarse.
Pregunta: ¿De qué te encargas exactamente ahora en Sina Weibo?
Ahora estoy en el departamento técnico de Weibo, liderando un grupo de servicios básicos. Nuestro trabajo principal también se divide en etapas. En los primeros dos años, el trabajo principal fue la optimización del rendimiento de LAMP en Weibo, incluidos varios frameworks básicos, desarrollo de herramientas, optimización del entorno, formulación de estándares, etc.
En los últimos dos años, la arquitectura LAMP de Weibo se ha estabilizado y el rendimiento general ha mejorado varias veces. También hemos desarrollado nuestra propia solución integral de LAMP de alto rendimiento. Por eso, el trabajo de optimización de LAMP ha disminuido. Ahora me concentro principalmente en la investigación y el desarrollo de infraestructura, como la capa intermedia de caché, los servicios de transcodificación, la plataforma de comunicaciones, etc.
Pregunta: ¿PHP7 (PHPNG) ha tomado como retroalimentación importante las necesidades y los puntos débiles del uso de PHP en la plataforma de Sina Weibo?
Por supuesto que sí. Desde que me uní al equipo de desarrollo, he tenido discusiones similares con muchos otros miembros: yo creo que el rendimiento es muy importante, mientras que otros piensan que las nuevas características son muy importantes. Entonces, cuando una nueva característica afecta al rendimiento, entramos en conflicto.
Soy muy obstinado con la mejora del rendimiento. Esa es también la razón por la que luego colaboré bastante con Dmitry Stogov, porque a él también le importa especialmente el rendimiento.
La razón principal por la que me preocupa el rendimiento es que tengo una experiencia muy real del valor que cada 1% de mejora de rendimiento puede aportar a una plataforma LNMP tan grande del país como Weibo. Aunque el rendimiento general de Weibo ha mejorado mucho en comparación con hace dos años, me doy cuenta de que, sin afectar la eficiencia del desarrollo, mejoras adicionales solo pueden depender de las mejoras de rendimiento del lenguaje y del entorno. Así que esa es la necesidad que Weibo tiene de PHP.
En WordPress, PHP7, en comparación con 5.6, tiene una mejora de rendimiento real superior al 100% (QPS). Creo que el año que viene, cuando se publique PHP7, todos los servicios de nuestra plataforma LAMP en Weibo también obtendrán una mejora de rendimiento del 100%.
Pregunta: ¿Cómo fue tu proceso de participación en el desarrollo de PHP7 (PHPNG)? ¿Cómo colaboraste con los demás miembros del equipo de desarrollo?
PHPNG era un proyecto secreto en ese entonces; los únicos participantes iniciales éramos Dmitry y yo. Recuerdo que fue a principios de este año. En ese momento, nuestro proyecto JIT basado en PHP 5 fue suspendido porque los resultados no eran ideales, y estábamos bastante deprimidos.
Dmitry dijo que tenía una idea: rediseñar ZVAL, comprimiendo su tamaño para reducir el uso de memoria. Luego los dos lo discutimos; como en realidad todos los días teníamos todo tipo de ideas, en ese momento solo pensamos: "Bueno, tal vez esta idea pueda funcionar". Pero aún no teníamos mucha confianza.
La idea principal en ese momento era hacer rápidamente un prototipo funcional para probar el efecto. En ese proceso, principalmente discutíamos ideas, luego cada uno implementaba la parte que le correspondía y finalmente fusionábamos los cambios.
La principal herramienta de colaboración era Skype; pero como él está en San Petersburgo y hay una diferencia horaria con nosotros, también nos comunicábamos por correo electrónico y hacíamos review del código mediante GitHub.
Cuando el proyecto llegó a una conclusión, descubrimos: "Oye, esta idea no está mal, funcionó". Luego lo hicimos público. Después se convirtió en el modo normal de colaboración: si alguien tenía una idea, enviaba un RPC, enviaba un patch, se votaba, todos lo revisaban y luego se fusionaba.
Pregunta: ¿Qué características se han añadido o eliminado en PHP7 hasta ahora? ¿Cómo se mejorará aún más el rendimiento antes del lanzamiento?
Muchas. Además de que la rama PHPNG proporciona principalmente mejoras de rendimiento, también tenemos soporte para AST (árbol de sintaxis abstracta), Uniform Variable Syntax, soporte para cadenas de 64 bits, algunos azúcares sintácticos nuevos y, más recientemente, Native TLS, entre otros.
PHP7 se publicará oficialmente en octubre de 2015. Antes de eso, todavía tenemos algunas ideas que probar, como usar zend_array para reemplazar directamente a Hashtable; como reducir los fallos de iTLB mediante la reorganización y ordenación de funciones específicas; como introducir en PHP parte de las técnicas de optimización de JIT (inferencia de tipos) para acelerar, junto con algunos OPCodeHandler específicos de tipos; o como mejorar aún más la localidad de los datos del código para reducir los fallos de caché, entre otras cosas.
Por supuesto, también tenemos un proyecto JIT en paralelo; solo que me preocupa si este proyecto estará listo para el lanzamiento de PHP7.
Pregunta: ¿La nueva versión de PHP omitirá PHP 6 y pasará directamente a PHP 7? ¿Por qué?
La razón principal es que en su momento PHP tuvo una versión de desarrollo llamada PHP 6, pero luego esa versión fracasó y no se publicó. Por lo tanto, esta vez la versión debería ser PHP 7.
Pregunta: ¿Qué relación hay entre Hack, el lenguaje publicado por Facebook, y PHP? ¿El propósito de Hack es reemplazar a PHP? ¿Qué ventajas tiene cada uno de estos dos lenguajes en comparación con el otro?
No hay una relación demasiado grande; Hack no es PHP. En cuanto a reemplazarlo, creo que ellos (Facebook) podrían tener esa idea, pero eso depende de si la comunidad lo acepta o no.
No estoy especialmente familiarizado con Hack, así que es difícil hacer una valoración concreta.
Pregunta: Algunos creen que, como PHP es fácil de aprender y tiene un umbral de entrada bajo, ha provocado que entren personas que no son aptas para la programación. ¿Qué opinas de este punto de vista?
No me atrevo a estar de acuerdo con esta opinión. Cuando me gradué de la carrera, también intenté buscar trabajo de desarrollo, me entrevisté en varias empresas y me rechazaron en todas. Quizás, a los ojos de quienes me entrevistaron entonces, yo era alguien no apto para la programación.
Pero como el umbral de PHP es bajo, permite que la gente vea rápidamente los resultados de su "programación", lo que genera un efecto de incentivo de retroalimentación positiva para los principiantes, haciendo que quienes tienen interés se interesen aún más. Y cuantas más personas programen, mayor será la probabilidad de que aparezcan grandes expertos y personas que contribuyan al avance tecnológico.
Además, los lenguajes de programación del futuro seguramente se desarrollarán hacia la facilidad de uso, reduciendo aún más el umbral de entrada. ¡Quizás algún día todo el mundo pueda programar!
Pregunta: ¿Cómo es la estructura de conocimientos de un ingeniero PHP cualificado?
Recuerdo que antes había un dicho: "Los ingenieros de PHP son manitas para todo". En realidad, esta frase no solo se aplica a los ingenieros de PHP, sino que debería aplicarse a todos los ingenieros.
La estructura de conocimientos debe ser muy amplia. El desarrollo web implica bastantes puntos técnicos. Además de HTML, CSS, JS y SQL, también hay que conocer algunos métodos comunes de configuración, mantenimiento y resolución de problemas de Nginx, Linux y MySQL. De todo eso deberías saber un poco.
Pregunta: Además de la capacidad técnica, ¿en qué más te fijas en las entrevistas?
Presto especial atención a la claridad de pensamiento, la comunicación y la forma de expresarse. En esencia, se trata de si habría obstáculos para trabajar juntos en el futuro y si el potencial de crecimiento es grande.
Pregunta: Chen Bole, el antiguo webmaster de phpe.net, ahora vende calcetines para hombres. ¿Cuáles son tus planes para el futuro? ¿Vas a ser siempre un coder?
En realidad, soy una persona muy perezosa, nunca pienso demasiado a largo plazo; vivo el momento. Así que, en realidad, tampoco tengo muy claro el futuro. Solo siento que ahora todavía me gusta programar, me gusta beneficiar a los demás con mi trabajo y ganarme el reconocimiento de la comunidad. Creo que eso está muy bien y seguiré haciéndolo.
Fuente: http://www.ituring.com.cn/article/142454