About Me
Hi, my name is Jorens. I'm a full stack web developer with 4 years of professional experience.
I'm a web developer with a mindset of an entrepreneur. I view my job more than just writing code. I try to help and support my clients in any way I can; When appropriate, I will take initiative, offer suggestions and alternatives.
Although my main trade is web development, I have skills that stretch beyond that as well, skills such as marketing, UX, product design.
I am very easy to work with - I am communicative, honest and responsive. I always try to keep my clients in the loop as much as possible (without being a bother)
My skills
Currently, I mostly work with React and Node or Next.js, but besides that, I also have experience with:
-
Languages
- HTML
- JavaScript/TypeScript
- CSS
- Java
- PHP
-
Full stack
- Next.js
- WordPress
- SvelteKit
- Shopify
-
Frontend
- React
- Svelte
- Tailwind
-
Backend
- Node.js
- Express
- Deno
- Laravel
Specializations
I have several areas of focus, although my work is not limited to just those and I'm always open to exploring new ones.
- Systems and architecture design - ensuring that the foundation upon which the project rests is scalable, extensible, optimized and cost-effective, and that different parts of the system interact seamlessly.
- Infrastructure - ensuring that the tools and platforms used for running the project are best suited for the use-case and work well together.
- API design and development - designing and developing logically structured APIs.
- API integration - integration of various third-party (or own) APIs with the frontend or backend of the project.
- Dynamic UIs/highly interactive web apps - Dashboard types of apps or SaaS, with dynamic/frequent data fetching/sending and where user interaction is frequent and needs to be fast, intuitive and seamless.
- Scripts/utilities/automation - Small scripts, apps or pages designed to tackle a particular recurring problem in a workflow.
Principles
As a developer, I have several principles that I follow when writing code and designing systems, namely:
- Team code - I write code that is readable, well-documented and logical in the context of collaborating with other developers (even when working by myself), both for the given moment and for the future.
- Independent, reusable code - I favor abstract code that is not coupled to a particular third-party framework, platform or library, which makes migration to a different one, metaphorically speaking nearly as simple as pressing a button, without needing to rewrite much or anything at all.
- Extensible code - I write code that is easy to extend, focusing on making it easy to add new lines and making it unnecessary to rewrite existing ones.
- Fast code - I write code that is optimized for time-to-first-(byte, interaction, request, response, load), in other words reducing the time spent just waiting for the software to finish its task, without the expense of other features like readability or extensibility.
- Scalable code - I write code that is fundamentally designed to work well and without friction in large complex systems, favoring a modular approach.
My proccess
When I work on projects and/or with clients, my workflow is Agile-like and typically consists of a flexible/open-ended cycle composed of the following steps:
- Define feature/task/milestone/goal/project - A client might request for a task to be done by me, at which point I either clarify requirements if they are not clear enough and/or offer suggestions/alternatives before moving onto the next step
- Define an abstract design for feature and plan of action towards fulfilling it - At this point I "blueprint" the base/core of the feature or task, defining the core characteristics, potential room for variation, make sure that I have everything I need to get it done, and defining a clear picture of how to achieve it
- Develop an MVP of the feature based on the abstract design - Develop an MVP of the feature, something that outlines the core characteristics of the feature while also making it easy to customize the feature for revision or future changes.
- Receive feedback - Collect and analyze feedback/criticism from the client
- Iterate or move on to the next task - If the client is satisfied with the outcome, move onto the next task. If changes are requested, re-iterate until expected outcome is achieved.