As a software engineer by heart here’s is my technology stack
Tech | Why? |
Javascript | It’s the foundation, even if I write most of my code with typescript, i still consider it as the most important. The reason is and also for other people as well is that the browser at the ends runs Javascript (not typescript) and when you learn typescript you learn about types! which is wonderful but if you “learn typescript” you might end up skipping core foundation of what javascript core foundation are: DOM manipulation, first class functions, scope and lexical environment, event loop, sync and async code, prototype inheritance, closures, hoisting callback functions as code writing skill, HOC functions, modules (es6, import/export), events, events handling – javascript is so much more than types and it’s core language in my toolbelt as a software engineer! |
Typescript | It a phenomenal and helpful language to help engineers and yourself as a solo engineer communicate between data, between files/modules and between different aspects of software (backend to front end for example). the beauty of typescript is it can slow down development at the beginning but can speed up development at later stage of the development. IMO regards to typescript, it’s ok to use ANY in some cases in early stages of the development, because the last thing you wanna happen is to fall into type-hell-hole where all you do is write complex typescript code to solve some complex odd types situation rather than writing code that meant to serve the product and the users. |
ReactJS | Over the years writing code for front end and backend shifted between where we store the “business logic” of our product, but for most part, ReactJS was and still is the best language to manage small to medium and even large/complex business logic of complex product development. even if you toss in large amount of data, lots of options in the ui and the ux. reactjs is mostly easy to write, easy to learn and easy to maintain. what i like about reactJS is that to know reactjs you need to learn javascript. to learn angularjs or vueJS you ned to learn angularjs and vuejs. that’s a big different. |
CSS3 | I’ve used to many UI libraries, and wrote some myself. I’ve used various designs approach to CSS (e.g CSS BEM) but noting beats a simple approach of managing CSS within application and noting beats a simple CSS code that is structure with simple basic rules (file per page/component, a container/wrapper css selectors, nesting the rules of css base on the HTML nesting structure, avoiding !important, avoiding inline css style, having 2 levels of global files). |
HTML5 | For obvious reasons, HTML5 is something i’ve been using for most part of my projects. starting from canvas, video camera, drag and drop, history API, contenteditable for wysiwyg editor, web workers, local storage, semantic html, GPS, SVG and many more other features for better user experience and smooth UX for my users. |
Mongodb | Using mongodb is a simple at small and medium complexity, it becomes more difficult if the product require more connections and relations between the data or there are many rules. but the goods of mongodb are the ease of use, scalability, schema, json-like docs and the high performance makes it’s reliable and a good start for most of my projects. |
MySQL/postgres | MySql was the first DB i work with back in early year of 2000′ and the relativity easy use of insert/select/deletion/update of data makes it comfortable to use. it also easier to manage connections between data points or relations between data tables, and it supports ACID compliance (for atomic updates), with strong security features like access control, data encryption and much more. |
Nextjs | Here’s we jump in to one of the new kid in the block, something that in the front didn’t had a well define space till nextjs come along, nextjs is simply opinionated where I don’t want to be, in places like which folders to creates, names of files, definition of “entities” of files like route.ts, page.ts, middleware.ts, layout.ts, api routes, app folder approach(similar to structuring large scale web app approach). those decision made by nextjs and are very good base on my experience. it allow me to speed up my development and reach to a working product faster. In addition nextjs provide static pages, support for SEO, basic Backend api, server files and client files (which allows Server Side rendering and client side high performance, the best of both worlds!), server actions which can be execute on the server and and on the front end side – the last two are hands down feature kill when it comes down to performance. |
Cloud Host (digital ocean & vercel) | Vercel is behind nextjs and backed by $2B valuation (2024) and is the new cloud hosting kid in the block, this is hands down the fastest ways to production from a github and nextjs project to fully working production scale web app. There are however downsides to managed-computed-servers which is what vercel trys to provides, however at early stage of any projects it’s a good approach. I do use also Digital Ocean which requires me to sharpen my Devops and SRE skills, but it has it’s own pros and cons. for example if your project require more of a certain and specific computed power or specific servers performance and configuration, than DigitalOcean is more handy. but for sure is more dev-friendly than AWS, Azure, GCP and the big guys. |
Material UI | Has been the go to when it comes down to picking UI library, however i am not married to any UI library and over the years i’ve used twitter bootstrap, ant design, Chakra, Semantic UI, blueprint – they all almost have problems and difficulty of use, for the obvious reasons that they are trying to obcure the complexity of a complicated design to a structured code (which is “impossible” to simplify creativity to box of structured code) – so picking a UI library should be simple as such: if the design is simple and repetitive (like dashboard, blog, repetitive site) than UI library is a good pick). if the design is complicated, creative, versatile and constantly changing. than it’s better to go naked with CSS and strict guidelines. |
VScode | What the best approach between heavy IDE where you can move a muscle and perform cross-code-base-search to “it’s just a text-editor-with-no-features” it what makes VScode the best option. It simpliy means that you can choose how much of an IDE you have on your hand and how much of notepad++ you have on your hands base on how many community plugins you willing to install. |
Zod | Here we dive down to data validation, types and communication betweeb front end to back end. and ZOD seems like a good promise to solving complicated problems between server to client. It’s is here for now, might remove it or expend my use of ZOD in the upcoming year. Why People use ZOD? |
Chrome | The main reasons Chrome won the browser wars as of 2024, is because in it’s early day of creation Chrome provided software engineers and specifically Front ends engineers the tools to debug their web application/websites. and because of that, many engineers build their site to work the best on Chrome, and at later stage “make it work” for other browsers. and even today in 2024, the best and easiest or the most features of debugging exists only on Chrome. in some cases you won’t be able to debug something unless you are using chrome as an engineer. |
Over the years i’ve used more technologies which I haven’t mention here and some i’ve probably already forget: action script, flash, php, python, laravel, cakePHP, angularjs, backbone, vuejs, go, phpmyadmin, cpanel, jquery and probably more that I don’t remember now. I tend to update my tech-stack from time to time, i might also add a “candidates list” of technologies that are “on the table” and are in used but not formaly as part of my main tech-stack.