I am an experienced web application developer and database administrator specializing in portable, secure code, program architecture, and application optimization. I have almost a decade of professional experience in both the private and public sector, from organizations ranging from schools to web design companies to consulting firms to nonprofits.
My other experience comes from developing in a variety of environments, including those based in MVC PHP applications, GO, Rust, etc.
What sets me apart is my absolute focus on the end user. I adhere to the philosophy of the iceberg: the customer is only going to see 10% of what your application does. They're only going to care about the 10% that they can see, and whether or not the 90% below the surface makes that 10% work. The 90% left, the pieces below the surface that make all of the gears grind together - well, let's just make that run in the most efficient way possible. It's the user interface that has to shine. At the end of the day, what I care about is giving your users the absolute best experience that they can have.
But that is not to say that a "good enough" approach is what should be followed! No, rather, I only mean that I favor test coverage and stability over elegance any day. A short anecdote to explain why:
Not too long ago, I was working on a PHP project. It was running well - deployment was set up, the code was solid, and everything that was supposed to happen was indeed happening. During sign up, a record was created which was saved and then further modified down the line. Unbeknownst to me, another dev wrote some code which simultaneously pulled the same record, performed operations, and then saved it again. When the record was saved in the competing method, my database changes were overwritten. I puzzled over this for a good day or two before figuring out what was going on. If unit tests alone had been written, the problem would have been immediately obvious when the second piece of code caused the build to break. Unfortunately, with no tests present, the problem went unnoticed until it caused issues in production.
Another important facet of my philosophy is making you, the client, comfortable with the way that I do things. The single worst thing that can happen to a project, bar none, is that communication breaks down. I consider myself to be the steward of good communication. I get this done by setting manageable goals, always keeping open lines of communication and letting you play just as big or as smart of a role as you want to play. That doesn't mean that I won't play referee for off-the-wall ideas; but I will be diplomatic.
So, the long and the short of this is that I'm a clever, hardworking, nice guy. The kind of guy with whom you want to do a project...and then another one down the line.
Broadly, my skill set includes:
- PHP development within MVC frameworks such as Laravel, my personal favorite
- RESTful API development
- Experience designing code from scratch and reworking existing code
- Database design and implementation
- Program design and implementation from concept to production, including planning, implementation, review, and optimization
- Project management use Agile methodology, including sprints, scrums, and nice project management tools like Pivotal Tracker, Trello, etc.
- Development utilizing standardized design patterns
- Philosophically, I believe that logic should be in the code, not in the database, so I'm not a fan of DB triggers or stored procedures.
- That being said, I've got years of experience with MySQL and MongoDB.
- I have some degree of familiarity with PostgreSQL and SQLite.
- Experience with concepts that typify mature database applications, including ActiveRecord pattern, validators, table inheritance, transactions, lazy loading, etc.
Good coding practices:
- I believe that good code is code that is readable. The fact that a machine can interpret it is secondary.
- Primary focus on code efficacy and user experience
- Unit/functional (e2e) testing
- Excellent commenting and code organization skills
- Proper error reporting and configuration
- Best practices and crisis management.
- My current love interest is Ansible. If there's a deployment that needs to be done, you bet you can get it done in Ansible!