Me, a resume
Me, a resume and personal story
It was 1991, I was 16 and after evaluate possible engineering careers, I decided apply for Electrical Engineer in National Engineering University (UNI), there, I learned about the essence of computers from a hardware perspective (to be more precise we started from math and follow with physical aspects), and It was during the study of the instructions for microprocessors that I discovered my real vocation. My interest shifted from the hardware level, to how wtite code to implement things over that hardware.
The feeling that I experienced when I was able to write instructions and witness the results was like magic, I took a programming course in Pascal, and confirmed my passion after implementing many numerical algorithms in this language. But my career (Electrical engineer) is not about programming, which is considered just as a basic skill among others .
Linux appeared in my life during my third year at UNI, a professor came from USA and brought 11 floppy disks with a “kind of” Unix that runs on PC, he said this software has been used in the research laboratory where he worked, it was just awesome. During that time, I was studying Unix only by reading books, and suddenly, I was able to use it on my PC in my home!
My computer was and Intel 386 where I installed Slackware Linux distribution. I have got shocket with all the documents that explain deeply about how all the components of the operating system and programming tools work together, this was the kind of knowledge that an engineering student cannot resist to engage with, so I spent many hours trying to understand those tools while at the same time graduate as an Electrical Engineer.
Fast forward to my first job (which last for 1 year), It was a small company where I started as a technician for maintenance of electronic equipments in the Financial industry (Banks). The most challenging assignment was to modify a C++ program that worked as the controller application for a printer machine, I spent two months reading the source code to finally complete my modifications and successfully deployed in production, again, programming was my secret weapon.
My second job (7 years) was being the network administrator for an utility company, I was in charge of the planning for installation of networking equipment (routers, switches) and designing TCP/IP network topology for efficient routing. It happened that the IT department (which I was part of) needed to evaluate the next server platform for branch offices, we were using Novell Netware 4, and the candidates for the next deployment were Netware 5 and Windows NT. I proposed Linux as an additional option, and they told me I had to prove that Linux was doable. Long story short, Linux was selected and marked the beginning of a new way of deploy and develop solutions in the IT department. It was such a success that I was prized with a trip to USA for taking the Red Hat course and the certification exam. I became a Red Hat Certified Engineer :-)
During next years after the Linux migration, I was involved in a lot of projects to grow the functionalities of the Linux infrastructure, like trying new kernel modules for clustering, deploy and evaluate relational databases, use iptables rules for firewalling, implement high availability with discs replication over optical fiber, etc. During those years I wrote a lot shell scripts to automate common tasks and to organize a dozen of distributed linux servers. Although I was not doing programming as part of the company business processes , as a Linux expert I was constantly patching and compiling code in C, Perl, and PHP. I was a privileged witness of the growing of Linux that started in branch offices, but gradually took more critical loads in the data center (dominated by HP-UX servers) , this fact inspired me: maybe, create an startup around Linux could be a good idea.
And that was my next step!, an startup aimed to bring a complete information system (hardware and software) built with Linux for small business (point of sales, store management, like an ERP for small business). I graduated in business administration in 2004 and this was a perfect escenario to put the theory in practice. In this startup, after 8 months we had a complete product built with C++ (Qt library for UX) with MySQL over Linux, the pre-sales stage begun with a salesman team; a few months later we evaluated the results. It happened that our initial cash flow was not enough to reach profitability and more fresh injection of money was needed. That was the end of the startup, I learned a lot from this experience, not only as a founder, but also, and most important, as a lead developer. I was co-responsable of evaluate technologies, hire programmers, couch them during the initial weeks. As Baishampayan Ghose (better known as BG) said in Clojure SYNC: the final frontier for scaling is always the people!. My first attempt to transform programming skills into a sustainable business did not succeed this time.
With a lot of lessons learned, and with more experience in leading developer teams, I started my own business, CompuLinux (2005). I will be in charge of Linux-based projects, and organize a team around the service of supporting data centers that have Linux servers. The other line of service will be building information systems for corporations as a contracting provider. Due to requirements from our clients we gradually became a Java shop with a developer team of 15 programmers and a few Linux experts.
I prefer to describe this period (10 years) with the tools we used and developed in our projects, for example, we switched (in 2007) from CVS to Git after seeing the Linus Torvald’s talk in Google, and combine its powerful CLI interface (the original actually) to implement Continuous Integration processes in our build chain, that means: initialize empty databases, prepare the source code, compile it and run regression tests to finally produce the next production version. All these steps easily triggered by any programmer in the team from his/her linux desktop thanks to Git, by this time I wrote a lot of shells scripts.
Also, we use Jnhp, a template solution that I implemented to combine HTML with Java Code (a way to scape from using JSP) which was the base technology to build our web applications for many years, then JavaScript appeared from our clients's requirements, so after a comprehensive evaluation of many libraries and frameworks we decided to use Google Closure Compiler. After some months implementing our first production project, we matured our criteria for doing Client Web Applications and built the tool DOObjects to make easier for UX developers run queries from the browser to the backend.
After more than 5 years using OOP paradigm and with many projects, a kind of delusion about our then-programming language happened in me, the question I constantly asked to myself was, How can we keep being productive as our codebase grows?, in the search for answering this question, I tried Clojure for a new project and tasted the magic of REPL style for development, the main feature we took advantage on that time was the concurrency abstractions, and the results were outstanding: the final code was small, compact, easy to read and maintain. Since this experience, I made Clojure the one of our main language for the following projects.
After more than 5 years using OOP paradigm and with many projects, a kind of delusion about our then-programming language happened in me, the question I constantly asked to myself was, How can we keep being productive as our codebase grows?, in the search for answering this question, I tried Clojure for a new project and tasted the magic of REPL style for development, the main feature we took advantage on that time was the concurrency abstractions, and the results were outstanding: the final code was small, compact, easy to read and maintain. Since this experience, I made Clojure the one of our main language for the following projects.
I have been doing 10+ years of Java, and CompuLinux was running acceptable, but personally I felt I need something different for me, It arrived the time to search new kind of projects, explore new ways for building solutions, we learned and deploy GAE (Google App Engine) , incorporated Python for server code, Google Apps Script for front-end development, and of course Clojure for server logic, all these new weapons gave us enough fun and motivation as a company.
The previous projects with Clojure were very efficient, but after watched many of Rich Hickey's Talks (the Clojure creator) I had a more critic view about the way we have been using databases (only relational ones), and I decided to try the new and cool ideas implemented in Datomic, a commercial database product created by Rich Hickey. Again, after incorporate Datomic in my stack, I can say that it opens a new dimension for dealing with the data, it becomes inmutable!, What does this mean?, I cannot dive into the details, just say that it is really cool.
In 2015, I decided to expand my horizons as a developer embracing new paradigms and technologies, but this new stage will no happen inside my company, the small team (5 devs) was mutually dissolved and I became an IT independent consultant. Since then, during the last three years, as a consultant, I finally built solutions with the technology I think is cool and efficient (as Rich Hickey said in his talk, maybe this is a common feeling of cranky, old, and tired programmers :-)) , so the job is much more fun in general, and I became more productive as a professional developer thanks to this stack.
My next goal?, well, after worked mostly alone for a few years, I feel ready (or at least curious) to see
this dev stack scale, so I started a new search of opportunities abroad to be part of a developer team. I would like be in a place where my curiosity could find echo between my colleagues, be part of an organization that appreciate my skills and experience, and where new algorithms (the cutting-edge tendencies I am studying) can be deployed in an open, flexible and collaborative atmosphere, that is the kind of company I am looking for, or maybe, I will have to create it, any ideas are welcome :-) .
Comments
Post a Comment