Naguel

I'm Nahuel, and these are my work experiences, ideas and thoughts as a web developer working on the eCommerce industry.

How to write a resume

How to write a resume

I know this one probably isn't the first article you ended up reading about how to write a resume. I understand, you are looking for a job change or your first opportunity and this matters so much that you are looking for many suggestions.

I happen to be on the other side of the table as I screen candidates based on their resumes and I get to conduct interviews. Those interviews, by the way, happens only if the resume appeals me, and that's why it matters: a resume can give you your first shot at a job position or totally kill your opportunity.

Since I get to see some resumes every now and then, I'm already expecting something from them when I grab one, and I'll try to tell you what's that so you can write a good one.

Look, I know this is a long article, but it's your resume we are talking about.

It is worth the time.

Anatomy of a resume

Introduction

Say something before diving into the hard data of your work experience and studies. That's how you prove to be human.

This is not exactly a cover letter but something shorter and more general (not aiming directly at the company you are applying to). Imagine only having 20 seconds to introduce yourself at a date and that's about it.

Paint an overall picture of who you are, what are you looking at and what are you capable of.

For example, I'm a developer and this is my introduction:

Hi there, I'm a Full Stack Developer, more inclined to the Front End part of it, who has been working with eCommerce platforms like Magento since 2013.

I usually work with xHTML, CSS, SASS, Compass, LESS, JavaScript, VUE, jQuery, a little bit of Grunt, PHP, Laravel, another little bit of MySQL, Git as a revision control system, Agile methodology with Scrum as an agile development method, and of course Magento.

I really like English, which is my secondary language, that's why I'm very happy with my IELTS Life Skills B1 (IELTS UKVI) certification.

A good introduction will give the company you are applying to an idea of where you might fit.

Experience

This is the most important bit, where job hunters focus when reading a resume, and it's surprising how many people got it wrong.

Experience is about listing your entire career in a way that becomes easy to read and to understand, so it needs to be perfect.

There are two ways I would recommend this to be done: one is by listing roles and the company where that role happened (that's the classic approach), and another way is to list companies and roles performed while working for each company (which is the recommended option if you had multiple roles in the same place, or to show career progress inside the company).

LinkedIn uses these two approaches combined depending on how many roles you add to the same company.

The main issue I always encounter within this section is that people usually list the title of the role, the company, the dates when that happened, and nothing more, but that's not even close to be enough.

List the actual tasks you take care of while performing on a specific position. When people read your resume they need to know what you have actually done, the real stuff you have actually done.

For example, a common job title is the "Technical Leader" for a web development agency. What that means to you?, because certainly it doesn't mean the same on every company. Did you code review stuff or that wasn't your job? Did you manage deployments or that didn't fall into your job description? Did you coach people? What else?

I'm a Full Stack Developer at my company... and I do code reviews, deployments, I interview people, take care of the onboarding of new employees, etcetera. The tasks I perform are not usually associated with the title of the role I have so that's why it's also important to be specific.

Depending on the job and/or role it might be worthy to also specify the projects you worked on, which could be a good idea if you operated as a freelance for some period of time.

Certifications

This is how you validate your previous listed experience.

Everybody know that a certification on its own is no evidence at all that you dominate the platform/software/field that certification is about, but they are used as a filter during the screening of several resumes.

So, if you have them, add them. It's more for like "Oh, look, she has this certification, so she dedicated personal time to get it, that tells something of her".

If you happen to have a certification on a different language, besides any study that proves you speak it, this is the place to add them.

Language certifications are pretty important, specially if you are looking for a job in a foreign company.

Additional projects

A lot of people do freelance stuff at the same time that works at a company as a full-time employee, collaborates on an Open Source project, or maintains a personal one.

Whatever is your case, or if you have something similar, you should list that too as it's part of your experience. And, the fact that you did that in parallel of having your regular job it's a plus the interviewer will consider.

For technical positions such as web developers this is also the moment when you introduce your personal repositories (such as GitHub), or any other social network account with focus on showing your work as a portfolio (for example, Behance).

As an interviewer, and as a resume screener (assuming that's a thing), I'm mainly focus on the technical aspects of the candidate, so a GitHub account (or similar) is for me a glimpse of the actual coding skills of the person applying for the job.

Education

Your experience (and the additional stuff you did), on top of your certifications, leaves your common education on a secondary position.

What you have done during your career, your career itself, it's your education, so at one point your attendance to college or Uni doesn't really matter. But, that's only true if you actually have a career to show.

There's still something worth highlighting here which are courses taken that are related to your professional career, either directly or complementing it.

Bonus track

Social networks?

Only if they add something to your professional profile, otherwise I wouldn't bother mentioning them.

A good examples of social networks worth mention are Twitter (if your use it professionally), GitHub (or similar version control system), and of course LinkedIn.

If you have a personal site, such as a blog, and specially if it's related to what you do professionally, mention it as well.

Hobbies?

Yes, of course. There are humans reading resumes made by other humans, so prove to be one.

A list of hobbies gives people a glimpse of your personality, and it's always good to know what you appreciate in life besides working.

Of course, this is pretty much optional, and you should share this personal side of you at the capacity you are comfortable at.

Additional personal data?

We are talking contact information here, which is important because, well, you want to be contacted back.

But also your country of residence, which is pretty much key information for time zone reasons, specially if you are applying at a foreign company.

Designs matters?

Depends on what you do for a living. If you work on something related to design, then yes, it does, and pretty much.

But, for example, if you are a developer, I personally don't care much about design and my main focus is on the content of the resume rather than how pretty that is.

Having LinkedIn

This is a double-edged sword.

LinkedIn is great, it's the perfect way to show your entire professional career. It gives you the ability to add everything we just discussed before and more.

From my personal point of view, I think having LinkedIn is enough, and that it could be your final resume. You don't need anything else.

For example, I don't have another resume but my LinkedIn profile, and when I applied to the current job I have I remember saying...

You can check my experience in my LinkedIn profile at https://www.linkedin.com/in/nahuelsanchez, let me know if you want a PDF version of my CV or something else.

...but that PDF version wasn't necessary because my LinkedIn profile had everything, it's complete.

And that's my point. If you are going to have a LinkedIn profile, have it up to date, have everything there. Make it your final and only one resume that's always available for whoever wants to read it.

Otherwise, what happens if I see a profile with content midway is that I assume that's all of your career. I can't tell if you were lazy and didn't update what I consider to be your resume.


If you are a web developer you can find me on LinkedIn and check my profile which I consider to be a good example to follow (not a perfect one, I said "good").

Also, again, if you are a web developer (which is my "area of expertise"), find me again on LinkedIn and tell me if you would like me to review your profile (after you applied to it everything that was presented here, of course).

Install Elasticsearch for Magento 2 on macOS

Install Elasticsearch for Magento 2 on macOS

Depending on the Magento version you have, or the Elasticsearch version you want, the process of getting this work locally can be easy or a nightmare I'll try to simplify here in this post.

If you already know what version to install, skip the following and jump straight to the installation instructions.

What Elasticsearch version do you need?

If we dive into the official Magento documentation and take a quick look at the different changes made to it across time, we can learn a few things.

Magento 2.3.4 documentation

Available at the magento/devdocs' GitHub repo, tag 2.3.4.

Magento 2.3.1 adds support for Elasticsearch 6.x and it is enabled by default. Magento still provides connectivity for Elasticsearch 2.x and 5.x but these must be enabled in order to use these versions.

Magento 2.3.5 documentation

Available at the magento/devdocs' GitHub repo, tag 2.3.5.

Magento 2.3.5 adds support for Elasticsearch 7.x.x (default) and 6.8.x. Both ES 2.x and 5.x are End of Life and are no longer supported in Magento.

Magento 2.4 documentation

Available at the magento/devdocs' GitHub repo, branch 2.4.1-develop.

You must install and configure Elasticsearch 7.6.x before upgrading to Magento 2.4.0.
Magento does not support Elasticsearch 2.x, 5.x, and 6.x.

Or, to summarize:

  • For Magento 2.3.1 to Magento 2.3.4 you need to install Elasticsearch 6.x.
  • For Magento 2.3.5 to Magento 2.3.n (anything before 2.4.0) you'll need to install Elasticsearch 7.x.x. It works also with 6.8.x, but version 7.x.x is easy to install.
  • For Magento 2.4.0 and up you need to install Elasticsearch 7.6.x. No support for previous versions.

If you are working with multiple Magento projects on different versions, I would suggest you to install Elasticsearch 6.x to support from Magento 2.3.1 to Magento 2.3.5, and everything before Magento 2.4.

If you have all projects on Magento 2.3.5 and up then install Elasticsearch 7.6.x.

Install Elasticsearch 6.x on macOS

You need Homebrew first, so please install it by doing the following:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

You can check the official Homebrew page for more information about it and alternative installations options.

Then, we need to add a third-party repo to Homebrew and a few packages, including Elasticsearch itself.

brew tap elastic/tap; brew cask install homebrew/cask-versions/adoptopenjdk8; brew install elasticsearch@6.8;

When you do that you'll get a lot of output on your terminal, but you need to only care for the installation path of the last elasticsearch@6.8 package.

➜  brew install elasticsearch@6.8;
==> Downloading https://homebrew.bintray.com/bottles/elasticsearch%406.8-6.8.8.catalina.bottle.tar.gz
Already downloaded: /Users/nahuelsanchez/Library/Caches/Homebrew/downloads/01d0782011cbecdb3b1125469ee2ed60ef07926a8f36752c64d1b8c2b763736d--elasticsearch@6.8-6.8.8.catalina.bottle.tar.gz
==> Pouring elasticsearch@6.8-6.8.8.catalina.bottle.tar.gz
==> /usr/local/Cellar/elasticsearch@6.8/6.8.8/bin/elasticsearch-keystore create
==> Caveats
Data: /usr/local/var/lib/elasticsearch/
Logs: /usr/local/var/log/elasticsearch/elasticsearch_nahuelsanchez.log
Plugins: /usr/local/var/elasticsearch/plugins/
Config: /usr/local/etc/elasticsearch/

elasticsearch@6.8 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have elasticsearch@6.8 first in your PATH run:
  echo 'export PATH="/usr/local/opt/elasticsearch@6.8/bin:$PATH"' >> ~/.zshrc
  
To have launchd start elasticsearch@6.8 now and restart at login:
  brew services start elasticsearch@6.8
Or, if you don't want/need a background service you can just run:
  elasticsearch
==> Summary
🍺  /usr/local/Cellar/elasticsearch@6.8/6.8.8: 136 files, 103.4MB

The path below "Summary" is the one we need to mind, where mine is /usr/local/Cellar/elasticsearch@6.8/6.8.8.

Go to that folder and install a few Elasticsearch plugins.

bin/elasticsearch-plugin install analysis-phonetic bin/elasticsearch-plugin install analysis-icu; bin/elasticsearch-plugin install analysis-smartcn;

Now, because only God knows why, we need to fix something on this freshly installed Elasticsearch package, otherwise it won't start.

Standing again into that installation path, cd into the libexec/config folders, and edit the jvm.options file.

Comment the line it says 8:-Xloggc:logs/gc.log by adding a # at the beginning of it, and below add 8:-Xloggc:/tmp/logs_gc.log.

This is how the file might ended up looking

You are basically done now.

Start Elasticsearch by doing brew services start elasticsearch@6.8.

➜  brew services start elasticsearch@6.8
==> Successfully started `elasticsearch@6.8` (label: homebrew.mxcl.elasticsearch@6.8)

To check if everything is good, you can do a cURL to the Elasticsearch instance running.

➜  curl "http://localhost:9200/_nodes/settings?pretty=true"
{
  "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "cluster_name" : "elasticsearch_brew",
  "nodes" : {
    "ArBWW_c3QRunhfQn460sxQ" : {
      "name" : "ArBWW_c",
      "transport_address" : "127.0.0.1:9300",
      "host" : "127.0.0.1",
      "ip" : "127.0.0.1",
      "version" : "6.8.8",
      "build_flavor" : "oss",
      "build_type" : "tar",
      "build_hash" : "2f4c224",
      "roles" : [
        "master",
        "data",
        "ingest"
      ],
      "settings" : {
        "client" : {
          "type" : "node"
        },
        "cluster" : {
          "name" : "elasticsearch_brew"
        },
        "http" : {
          "type" : {
            "default" : "netty4"
          }
        },
        "node" : {
          "name" : "ArBWW_c"
        },
        "path" : {
          "data" : [
            "/usr/local/var/lib/elasticsearch"
          ],
          "logs" : "/usr/local/var/log/elasticsearch",
          "home" : "/usr/local/Cellar/elasticsearch@6.8/6.8.8/libexec"
        },
        "transport" : {
          "type" : {
            "default" : "netty4"
          }
        }
      }
    }
  }
}

That host and port on that cURL command (which by default is localhost:9200) is the host and port you need to use for configuring Elasticsearch in Magento. If it doesn't work, try the same cURL call but with 127.0.0.1:9200.

Remember to brew services stop elasticsearch@6.8 when you are done working so it's not running forever in your computer.

Install Elasticsearch 7.x on macOS

You need Homebrew first, so please install it by doing the following:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

You can check the official Homebrew page for more information about it and alternative installations options.

Then, we need to add a third-party repo to Homebrew and the Elasticsearch package itself.

brew tap elastic/tap; brew install elastic/tap/elasticsearch-full;

When you do that you'll get a lot of output on your terminal, but you need to only care for the installation path of the elastic/tap/elasticsearch-full package, which is located just at the end below "Summary".

For example, mine says /usr/local/Cellar/elasticsearch-full/7.8.0.

Go to that folder and install a few Elasticsearch plugins.

bin/elasticsearch-plugin install analysis-phonetic bin/elasticsearch-plugin install analysis-icu; bin/elasticsearch-plugin install analysis-smartcn;

That's all, basically.

Start Elasticsearch by doing brew services start elastic/tap/elasticsearch-full.

To check if everything is good, you can do a cURL to the Elasticsearch instance by running curl "http://localhost:9200/_nodes/settings?pretty=true" which will output a big JSON.

That host and port on that cURL command (which by default is localhost:9200) is the host and port you need to use for configuring Elasticsearch in Magento. If it doesn't work, try the same cURL call but with 127.0.0.1:9200.

Remember to brew services stop elastic/tap/elasticsearch-full when you are done working so it's not running forever in your computer.

Can I have both installed at the same time?

No... well, I didn't try it but I think you can't. I would avoid such experiment.

What you can do for sure is uninstall one and install the other on demand.

If you do that you need to uninstall the Elasticsearch plugins you install it and install them again so you ended up with the right plugins version compatible with the Elasticsearch version currently installed.

Anything else?

Reindex Magento before trying to load the store.

No more bs against working from home thanks to a pandemic

No more bs against working from home thanks to a pandemic

It's still amaze me, you know, and hit me by time to time when going to sleep or taking a shower, a "...wow" moment, like a slap from reality: the world pressed pause a few months ago.

Not a bunch of countries, not a far far away continent. The whole world stopped because, well, you know what happened: Coronavirus.

Companies reorganized quickly to continue working with their employees from home... Well, they were forced to act quickly to be honest, not like they went through a deep analysis about the pros and cons of a remote scheme for their staff, no meeting between HR and the business management branch happened at all.

The bs was cut immediately, the scepticism towards having people working from their homes disappeared. It had too, because Plan B was to close until further notice, so the discussion about it became pointless, and frankly nobody has nothing to lose. Wasn't that beautiful?

Month ago this was considered only a benefit a company would offer, or a sometimes exception for particular circumstances. Internal company processes would decide how and when somebody could work from home like, for example, one day a week after three months in the company, and two days a week after a year.

It sounds crazy now but we all, at every level, agreed to that scheme.

Work from home forced itself and nothing bad happened, nothing catastrophic at all. Objectives are still being reached, and, most important, employees don't sleep the whole morning pretending to be online on Slack, which I believe was the biggest fear of them all.

I found it interesting that even on very objective-based companies, when thinking about offering the possibility to work from home, the mindset changes to a time-based one. In an office we thought about what to accomplish when (objectives), but then when talking about remote working we thought about how the time was going be consumed without direct supervision.

We trust developer with Live server side credentials, but oh no home will make them Facebook too much.

And even today, with a lockdown in place and a forced work from home scheme, even if an objective is not reached you know that's not because the employee is working to close to the bed. It's always something else.

You are quarantining yourself now, and everybody in your company is doing it too. Work from home is happening whatever you planned it or not, so it might be time to fully embrace it. Take the (forced) opportunity and make it a permanent thing.

It is a chance for us all to recognize that working from home is as possible as working from an office. And, sorry, my experience is always based on my role as a web developer so my focus is pointed in tech-related companies, but you can decide if this whole concept applies to you as well.

I worked, until now, as the only one remote developer of the company I'm part of, and the rest of the team was based in UK, working from a beautiful office in London. Now everybody is remote, everybody now works from their homes, and the office is entirely for a fridge they already planned to set on fire because God only knows what have been left inside months ago.

Again, nothing changed from the day to day operation of the company, there's no trough at all in the productivity graph. If anything, I think people is working more because nobody is used to work from home, yet, but that's a problem for a different post.

Having a successfully work from home lifestyle
Working from home is the new normal, get used to it and get ready, because what’s now a benefit will be a requirement in the not too distant future.

It was discussed internally, basically, the feelings towards this new forced normality, and while everybody misses the office and the social side of it, all of us are considering working from home a positive thing. Even one admitted that during lunch time takes a nap, which is fine because who cares if you are delivering at the end.

It was also raised that we might not seen us working from home, without going to an office, for ever, so I'm sure flexibility is what's coming after everything that's happening comes to an end.

Let me be clear that flexibility doesn't mean an extra work from home day to your now old internal company process. Flexibility means having an office, and go there if you want. Nothing less than that, which is perfect, which is good, fine, there's nothing wrong with that. We should have learn that already.

Imagine a hot seat scheme, with a few desks for those wanting to leave the house some day, or a more co-working spaces-based normality.

I don't know, I'm brainstorming, this is my first pandemic, but I'm sure that those, somehow still appearing, job offers from LinkedIn offering something like "2 work from home days a week" as a benefit are hilarious now and they should have gone already.