- Solving problems with clean, reusable, scalable, and easy to maintain code.
- Software Architecture
- Design Patterns
- Android. Native Apps and Andengine.
- Web, server side: PHP (OOP), SQL and DATA modeling, ZF2, Doctrine. Custom web frameworks and ORMs.
- Server Admin: SSH, linux, cronjobs are your friends. Vhosts, DNS.
- Web Front End: JS (long time ago there wasnt frameworks), jquery, mootools. Backbone, angular.
- Sometimes, some desktop and OEM software in C++
Obsessed about (as you should be):
- Separation of concerns: A component should do one thing, and do it well.
- The DRY principle: Don't repeat yourself.
- Single responsibility, Open/closed, Liskov substitution principle, Interface segregation , Dependency inversion (yeah, SOLID)
- Whatever you do, try to do it in some way so you can reuse it. Abstraction, dude.
- Develop the system your clients needs today, but thinking about what they could need tomorrow.
- Respect life cycles. One requirement at a time. New requirements in the right moment. Analyze every new requirement as if it where important. You will find always ambiguous and contradictory points.
- Do it well, its good for everybody, and is better for the "you of the future"
- "Dirty remains long after quick has been forgotten." A small delay isn't that important some time later, when everybody is still happy with a healthy software.