It's benefitial for a developer to work on a slower machine
How much resources do you need?
Currently we can
notice there are a lot of YouTubers who create videos about product
reviews. They compare one product with another and usually say if one
is good or bad. But what we can notice there is they usually review a
flagship products and try to find the best one – which one is the
fastest, performing the best, has the best camera and etc… But when
we watch such kind of videos we usually end up buying the most
powerful product and probably the most expensive among the products
of its family. It is pretty common nowadays to ease our life when we
buy something just to reach for the best one because we are afraid if
we get something from the middle range class it might not serve us well.
But what actually
and how much do we need? Let me share my story with you.
As a developer I
used to own a MacBook Pro mid-2015 (the one with the best keyboard
and a lot of ports) which was the fastest on the market back then:
- 15 inch glossy screen
- i7 4th gen HQ CPU: https://laptoping.com/cpus/product/intel-core-i7-4720hq/
- 16 GB of RAM
- Dedicated ATI Readeon video card
Sounds pretty good,
doesn’t it?
For 4 years I don’t
remember any time I have used any of those specs on full potential.
But being afraid what I actually might
need I ended up buying this machine.
A small fisher boat that could sail in the shallows and could take you everywhere. This fisher boat doesn't need an entire crew to manage it and there is plenty of room for everything you might need (for the purpose you would buy it, don't forget).
![]() |
| Drawing by Iliyan Betovski |
Why there is a drawing of a big ship on this page? The answer is simple. When we buy the flagship product, we actually buy this ship. Something that could be loaded a lot, could do a lot, but of course it needs much more power, an entire crew to manage it and you can imagine, by following the analogy so far, it sails only in the see or the open ocean. But what you actually need it this:
| Drawing by Iliyan Betovski |
A small fisher boat that could sail in the shallows and could take you everywhere. This fisher boat doesn't need an entire crew to manage it and there is plenty of room for everything you might need (for the purpose you would buy it, don't forget).
What was my experience with MacBook Pro?
So I can say I did some pretty good projects on this machine and I
loved it. But with the time some drawbacks started emerging.
- 15 inch screen laptop is not veeery mobile. It is tick and heavy.
- The fast CPU makes it really hot when it starts doing something that requires more power – opening chrome for example :D So your lap gets hot pretty fast when you try working with a laptop in your lap. This machine feels the best when it sits on a table, not in your lap.
- The fast CPU uses more energy so you are not gifted with the most lasting battery you can just go outside and work for hours on your machine.
- Mentioning working outside, the glossy screen makes it not the best choice for doing it but hey, this is what you get when you are used to Apple after 10 years of working on apple machines.
- Did I really really need 16G RAM? This, my friend, was good question I decided to validate.
Evaluating my needs.
So
after putting everything on the table, I started questioning if I
needed all this horse power and if I was ready to swallow all the
listed drawbacks above. I did my research about what actually was
needed as CPU and RAM. The video card I didn’t consider at all because I
am not dealing with any video manipulations and games. So the video
wasn’t important at all for me.
So did I need 16GB of RAM? No.
Did I need super-dooper fast CPU that drains the battery? No.
Did I need super-dooper fast CPU that drains the battery? No.
Did I need dedicated graphic card? No.
After asking the right questions and giving the answers, the path forward started emerge clear before me. I needed a middle range class laptop that would serve me well for:
After asking the right questions and giving the answers, the path forward started emerge clear before me. I needed a middle range class laptop that would serve me well for:
- Mobility - being convenient to carry around
- Long battery life for working outside whenever needed
- Not getting too hot in my lap
Here are the specs of the machine I got:
- i5 8th gen CPU Low energy. https://laptoping.com/cpus/product/intel-core-i5-8265u/
- 8GB RAM
- Integrated video
Before
saying anything, you can check the link above and check where is the
CPU in comparison to the i7 4th
gen HQ (the one the MacBook Pro had) in the data chart.
Why all this struggle to work on limited resources?
First of all, before we continue, you should decide what do you want
to be? A user or someone who is trying to understand
what is under the hood and how all the parts work together. If the
answer is the second option, then you are on the right place and you
can continue reading. If you want to be just a user, then go buy some MacBook and close this page. ... Or continue reading and you might start
evaluating on which side of the road actually you are.
When we work with unlimited resources we get used to “everything
just works” which actually is not true. How come it is not true you
might ask. Let me explain:
We
are living in times when most of the developers just code without thinking
about resources because they are there. Even I have answered the question about efficiency and algorithms with answer "It would be needed for something that requires more performance but for front-end, the computers are pretty fast". How silly I have been. And I am still probably.
Using limited resources is like having a budget on how much you can spend. As a developer you start thinking about careful usage of the memory. But not only this. You learn how to be a better developer looking for differnt ways of getting the final result. For example, two years ago I did a database migration script for one of my projects. I used streams to do it because you can not load all your DB records in the memory and then manipulate them. This is what every non-experienced developer would do. Loading everything in one variable and manipulate it. So after I hit a memory limit, I had to think about different ways. I started using streams. At least I thought I was using streams. Until yesterday when I did the same approach and it didn’t work as expected. Why? What was the difference? It was I am currently having only 8 GB of RAM. Usually when this happens, we say "Oh, I need more RAM!". Or when the internet starts working slower - "Oh, I need a new router". But we are developers. We have the power given by God to debug and thinker.
So ... Having just 8GB of ram, not 16 as I used to have, showed I didn’t use the streams as they were supposed to be used. It happened that I haven't noticed I have loaded everything needed in the memory and everything has been done way before filling those 16 GB. Btw, 16 is a lot! You must be doing something really wrong if you load it. So even if you do it wrong, you will not notice. It's like sailing with your boat only in the deep waters. No issues. So this is how I started looking for alternatives and found pretty good usage of generators (JS generators).
Using limited resources is like having a budget on how much you can spend. As a developer you start thinking about careful usage of the memory. But not only this. You learn how to be a better developer looking for differnt ways of getting the final result. For example, two years ago I did a database migration script for one of my projects. I used streams to do it because you can not load all your DB records in the memory and then manipulate them. This is what every non-experienced developer would do. Loading everything in one variable and manipulate it. So after I hit a memory limit, I had to think about different ways. I started using streams. At least I thought I was using streams. Until yesterday when I did the same approach and it didn’t work as expected. Why? What was the difference? It was I am currently having only 8 GB of RAM. Usually when this happens, we say "Oh, I need more RAM!". Or when the internet starts working slower - "Oh, I need a new router". But we are developers. We have the power given by God to debug and thinker.
So ... Having just 8GB of ram, not 16 as I used to have, showed I didn’t use the streams as they were supposed to be used. It happened that I haven't noticed I have loaded everything needed in the memory and everything has been done way before filling those 16 GB. Btw, 16 is a lot! You must be doing something really wrong if you load it. So even if you do it wrong, you will not notice. It's like sailing with your boat only in the deep waters. No issues. So this is how I started looking for alternatives and found pretty good usage of generators (JS generators).
The conclusion.
Having
unlimited resources makes you omit when something is wrong.
When you see the CPU is performing little bit more than the usual,
you don’t dig and check why. Actually you don’t even notice it is
dealing with something unusual. But when there is a limit and the CPU
is not so fast (actually i5 8th gen is pretty fast!), the User Interface starts freezing and lagging. "Hmm,
this is not normal" - you should tell yourself. Then you start looking
into the processes and you see there is something wrong there. And
you fix it. This is how I noticed that dropping the database (on
purpose) while my script was still running and trying to connect to that database
caused the computer to loose its breath. This is how it is supposed to be - You
see, you fix. Unless you want to be a user.
Everyone
can build a big ship that will sail without problems in the ocean.
But what about building something that can sail in the ocean and in
not so deep waters? This is when you start learning :)
So my advice is not to be influenced by the YouTubers who review
flagship products. Ask yourself the right questions. Evaluate your needs based on your
daily usage and then make a purchase. The easiest thing to do is just
to go to the store and buy the most powerful machine. But do you
really need to kill a fly with a rocket launcher or you might find
other tools? :)
So I strongly believe if all developers stop sail only in deep waters, there will be much more efficient and well working software that doesn't drain you battery.
So I strongly believe if all developers stop sail only in deep waters, there will be much more efficient and well working software that doesn't drain you battery.
PS:
Don’t worry about my 8GB of RAM. Currently they are sufficient
but if a time comes when I need more, I will take my laptop to a
service and will add more because it is not a MacBook and it could be
upgraded.
I will continue sharing my experience with 8GB of RAM in 2020. Stay tuned.
Also, if you have different or the same opinion I would love to have a discussion about it. Do not hesitate to leave a comment
I will continue sharing my experience with 8GB of RAM in 2020. Stay tuned.
Also, if you have different or the same opinion I would love to have a discussion about it. Do not hesitate to leave a comment


Interesting read.
ReplyDelete"Necessity is the mother of invention" Plato.
Well said, Kiano. I wanted to quote such saying but it is very hard to find it in English when you know in your mother language :)
Deletecute drawings!
ReplyDeletebest, kiwi