Top reasons software teams and companies suffer from their own decisions

مطالب و مقالات در مورد مهندسی نرم افزار و الکترونیک

مطالب پیش رو برای زبان فارسی تهیه نشده است.

When I join a company and I see managers complaining, coders complaining and designer complaining, I see a quite common pattern which I tried to not them happen in PixePlux projects and clients.

Use only MySQL or SQLite

Very often, people get into trouble by just using something weird, such as Postgres, Mongodb, Firebase, or 100 more database brands out there. In fact, MySQL or SQLite are capable of serving up to 99% of projects, up to facebook level data (MySQL). Spend a bit of time designing the right database, make two version of app which works both with SQLite and MySQL - using any orm this is just a config change - and never do not fall into hoax of some amazing database for a project which never gonna have more than 100 GB of database in decade.

They care about code more than product

We all read books about how to write "Clean code", so we did read "How to became milioner". The only important perspective of a software product is how users see that, not how or in which language it's written on.

Programmers usually do not care of software result, they are into topics which language it's used, which framework, which plugin, things which are only important to them, or maybe their tech leader.

Programmers should do their trial and error and lalaland task in codepen, github personal account, and do not bring any new library, code style, linting, plugin into the production. I see so often the entire project is stuck in how to use Redux clearly, and the project which code have 10 screens in 1 week, has gone nowhere in 3 months.

They produce large size or slow applications

Using wrong tools, you end up having software which consumes more resources than it should, this results in many issues.

  • They need very good computer to write code, run the project.
  • The application will end up large source and many users loose patience to download - specially if it's not so critical.
  • They can't ship easily, sign the app.

An example is projects written in Angular (Web) framework. The bundle size is that much big and rendering is so slow that every project feels so slow and laggy, not only it ends in user frustration, but also the developers themselves feel tired looking each time they want change something it takes couple of seconds and they want to start a new project.

There is no documentation or explanation of software

Many backends, front-ends, are being created without any explanation. Even a new developer in the same team needs to go few days into learning curve in order to run the project. Look at all major softwares, Windows, MySQL, Adobe, they all run without baby sitting from their vendors.

They are not using proper programming language

I did so much of research, and somehow ended up any project which lasted for decades, it's written in C/C++ it's no suprise, anything written in scripting languages, all the time needs maintaince and will not last 1-2 years even.

Due to my personal research these are the only proper tools:

  • Writting Android apps in Java (Not Hybrid, Ionic, Xamarin,...)
  • Writing Ios apps in ObjectiveC and Swift.
  • Writing any backend, system service, desktop application in C++, or in worst case Golang
  • React for frontend (Not Angular, Ember, Vuejs)

They are using things they do not need.

Docker, MariaDB, Fireback storage, Elasticbeans talk, CircleCi, Bitrise, Fastlane, and you name it. It seems to many people they cannot build anything without 80% of thirdparty services. Worlds most important software is written when none of these existed.

Using these tools, adds up a lot of extra time and overhead to deliver a project, which if it was written in C++ or Golang would end up 10% of the time.