Work History

Work History
Dec 2014 - Present

Microservices Architect

Red Científica Peruana

I'm currently a systems architect and technical lead helping a Telecommunications and Media group migrate from their monolithic legacy applications and web portals to a set of modern microservices orchestrated to perform in a scalable and efficient way using opensource technologies like Linux, Docker, Python, Java and Go. Skills and technologies used at this job: TDD, Python performance optimization, Java SOA,  NoSQL databases, clustered RDBMS.

Jul 2000 - Present

Coordinator

Peruvian Linux User Group
I'm a coordinator for the Peruvian Linux User Group since 2000 and have helped organize many Linux events and have given a ton of talks about Free software in general and Linux in particular all around Peru.
Jun 2013 - Dec 2014

Chief Systems Architect and Head of Software Engineering

Red Científica Peruana

As the Chief Systems Architect for Red Cientifica Peruana I designed, tested and helped run highly scalable distributed systems built almost exclusively using opensource technologies.

Python, PHP, PostgreSQL, MongoDB, Redis, RabbitMQ, HTML, CSS, Javascript and CoffeeScript were all used in building LaMula.pe, a blogging platform that I designed from scratch as a set of microservices.

As the Head of Software Engineering I lead a team of 10+  developers building new systems and maintaining legacy code.

Two of the most relevant legacy projects my team had to maintain were the Punto.pe web portal, the end-user portal of  the ccTLD .PE and Yachay.pe a web portal for a local Telecommunications company. Both systems had extensive backend subsystems written using LAMP technologies that we gradually refactored and partially replaced with modern object-oriented PHP workers connected using RabbitMQ. 

Jan 2012 - May 2013

Co-Founder

Worldrat

I'm one of the 5 co-founders of Worldrat, an urban exploration web and mobile app that aims at helping everyone discover the best places around a city according to their interests and likes. I was responsible for the website backend written in Django and led the construction of a recommendation system (RecSys) based on ideas from several CS papers. In order to speed up the RecSys we used Redis as the main storage.

Dec 2010 - Apr 2013

Partner

Bit Zeppelin S.A.C.

As partner at Bit Zeppelin, a mobile-oriented software development shop, my duties included systems architecture, project management, backend programming, web service design, recruiting, mentoring and training.

Education

Education
Jan 1998 - Jan 2014

Hacker / Coder / Programmer / Entrepreneur / Evangelist

Web Search and Book Reading

I taught myself a whole range of IT-related subjects during all of this years: specially how to work with GNU/Linux and open source technologies including GCC, make, autotools, Perl, PHP,  Apache, Squid, Postfix, MySQL, PostgreSQL, Memcache, Redis and MongoDB, etc. I've used several Linux distributions in this period: RedHat Linux, RedHat Entreprise Linux, CentOS, SuSE Linux, Debian and Ubuntu Linux.

I've also read books on web security, defensive programming and agile software development  as well as many books about entrepreneurship and shiping code: Clean Code, Ship It, The LEAN Startup, Rework, Running LEAN, The Toyota Way, among others.

I regularly read IT-related blogs as wells as news sites like Hacker News and Programming Reddit.

2005 - 2009

Systems Engineering

Universidad Peruana de Ciencias Aplicadas

I completed a bachelor degree in this very common peruvian IT career that is a mix of Management Information Systems and Software Engineering but has very little Computer Science content in it. The focus was on procedural and object-oriented programing, software analysis and design using UML/RUP,  networking and some foundations of artificial intelligence. We used mostly Java and some C in our courses. A good deal of management courses are also part of this program: general management, accounting, finance, marketing, human resources, strategic management, IT management, etc.

Jan 1994 - Jan 1998

Systems Engineering (Unfinished)

Universidad Peruana de Ciencias Aplicadas

This was my first experience formally studying an IT career. Programming courses used Object-Pascal and C but no UML/RUP was used. Instead we used a cuban software analysis/design methodology called ADOOSI. I took a good deal of basic math and humanities courses during this period. I dropped out in order to found a web hosting / software development company.

Skills

Skills

Training

I've been a trainer in IT topics for years in both technical schools and private courses for local companies and the general public. I've taught many courses on Linux, LAMP and Python/Django.

Recruiting

During my career I have interviewed hundreds of people and hire some 30+ as part of the several jobs I have had. In recent years I switched to asking the applicants to write code during the interview process, specially in the early stages. An example of that is described in the http://fullstackdev.pe/ website.

Leadership / Mentoring

I've been leading small teams of developers since very early in my career. Since I founded a company after dropping out of university I've been a technical lead,  a project manager, an architect and the main developer in many projects both with my company and as an employee for other organisations.

Nginx

Nginx is my web server of choice due to its awesome performance and flexible nature. I use it regularly for serving static content and proxying specialized web servers like uWSGI, gUnicorn, Java web application containers, among others.

Apache

Used this web server extensively during my LAMP-only years. I still used it occasionally due to it's simplicity when performance is not critical.

XML-RPC

I've used XML-RCP several times before REST was popular as a simpler alternative to SOAP in several service-oriented scenarios.

OOP

I learnt OOP at university but really found my way to OOP Design Patterns and SOLID principles during the rest of my career. I'm comfortable with this technique but focusing more and more in adding functional approaches to the mix as the rest of the industry is doing right now.

MongoDB

My experience with MongoDB is not as extensive as with RBDMS systems  but I'm familiar with the administration in general, some of the most common modelling approaches  and know how to configure the clustering options and replica sets.

Redis

I'm a huge fan of Redis for 6+ years now  and I've been using it heavily in many projects since 2008.

PostgreSQL

I use PostgreSQL since 2000 and was attracted to it because of the advanced features like replication, clustering and partitioning support. In recent years I've been following closely the development of newer clustering solutions like Postgres-XL and JSON support.

MySQL

I've been using MySQL since 1998 as my default database choice since its close association with PHP back then. I soon switched to PostgreSQL due to the superior feature set but most of my clients /gigs still used MySQL so this is a product I've been using a lot during the years.

PHP

I've been using PHP for 16+ years now since 1998. This was the first language I started doing professional programming with. I used no web framework since 1998 to 2004 then I started experimenting with the first generation of MVC frameworks for PHP and settled for Symfony. In recent years I have used Laravel for occasional PHP projects. I've done all kind of projects with PHP from web stores, to portals, intranets, scripts, reporting and everything you can think about.

Django

I've been using Django since version 0.96 for 8+ years now and feel very comfortable with it. I have a few Django-related open source projects at my Github account and is by far the web framework I have more experience with. I've done a wide range of web projects with Django: web portals, news portals, consumer portals, intranets, web services, etc.

Python

I've been using Python for 8+ years now since 2006. Mostly for Django web development but also using alternative frameworks like Tornado, Flask, Itty and Bottle and for scripting tasks.

REST

I've been focusing heavily on understanding REST as formulated by Roy Fielding in this Phd Dissertation not just the simplistic "pragmatic" so-called REST approach that many developers use. This led me to learn more about HTTP, the related RFCs and the whole ecosystem around the protocol. 

Linux / Unix

I've used Linux as a desktop OS since 1997 and as a server OS since 2000. I feel really comfortable in a Linux-based OS but use Mac OS X as my desktop OS since 2006.  My experiencie with BSD-based OSes is very limited but I have some.

Opensource

I'm familiar with the open source community mechanics and the legal aspects of the movement since 2000. I've been presenting about the topics in many peruvian IT conferences during the years and have occasionally contributed to several open source projects but always with minor patches and translations. In recent years I've published several small open source projects of my own on my Github account at https://github.com/gnrfan

References

References

Gustavo Picón - Senior Software Engineer at YouGov

Gustavo is a long-time friend from the Peruvian Linux User Group and was a co-worker at Aureal Systems. He's now part of the YouGov team.