7 votes

Trying to become a junior developer in Brazil is an uphill battle

They ask for years of experience, skills that no Jr would know since, well, it is a Jr and the process to apply for jobs are surreal. Thousands of tests, interviews that goes nowhere and lots of ghosting. And the pay is not that good. No wonder after 2 or 3 years of experience a lot of develpers starts working for companies outside of Brazil.

Last one to contact me sent me a test to do it in 1 week. I went above and beyond and learned a lot of things. Before this, i had some small projects in Go and Python. Now i needed to learn Docker, tests, github actions, Postgresql and other things. Not everything was mandatory, but i did my best and did it all. I finished in 5 days since i have a day job.

Here is the result: https://github.com/crdpa/conservice

Showing the data in the browser was not necessary, but i think it was a nice touch and well made. If this does not land me a job as a junior developer i don't know what else could.

I'm glad i already have a job in another area, but me and my SO are separated by a 4 hour drive and i'm tired. I want to work from home to be near her and our dog. Paying rent in two places is becoming a burden.

I would be happy if you guys could test the application i made. It only needs docker.

And do you guys have any tips from now on?

14 comments

  1. [2]
    stu2b50
    Link
    Oo, I would temper expectations. Take this with a pinch of salt, I don't know the Brazilian tech market works vs the American one, but I'm "involved" in the recruiting pipeline (because engineers...

    If this does not land me a job as a junior developer i don't know what else could.

    Oo, I would temper expectations. Take this with a pinch of salt, I don't know the Brazilian tech market works vs the American one, but I'm "involved" in the recruiting pipeline (because engineers get drafted to do interviews) where I work. There's just so much randomness, so much handing information off between different people, that it's never a guarantee, especially for lower level engineers.

    I wouldn't put too much effort into any particular take home for that reason. The engineer reviewing may be having a bad day and all that goes to waste over nothing that you can control.

    10 votes
    1. crdpa
      Link Parent
      Yeah, i know. I was just venting frustration. I think the best way is to just apply everywhere and hope for the best.

      Yeah, i know. I was just venting frustration.

      I think the best way is to just apply everywhere and hope for the best.

      4 votes
  2. [3]
    teaearlgraycold
    Link
    I think the quantity of data here is enough that you should have some pagination/search functionality for the app to be usable (even on an M1 macbook the web page is really slow because everything...

    I think the quantity of data here is enough that you should have some pagination/search functionality for the app to be usable (even on an M1 macbook the web page is really slow because everything is shown at once). It also looks like all 7MB of data get loaded into the db every time the app starts - instead of as a one-time process. I'd recommend you have a separate script that seeds to database with the data in the .txt file rather than doing that on web server boot.

    Overall this looks fine to me. Besides those issues it does appear that the app works and the code is readable.

    5 votes
    1. [2]
      crdpa
      Link Parent
      Thanks for the feedback! Yes, i'm aware of those problems, but since it was not a requirement to show everything in a web page, they just want the database populated, i hope they will see that...

      Thanks for the feedback! Yes, i'm aware of those problems, but since it was not a requirement to show everything in a web page, they just want the database populated, i hope they will see that just as an extra.

      It could be way better, but it was my first time doing any of these things so i had no idea really how to do the right way and since i had little time to do it this is what i came up with.

      I'll research on how to implement what you said, but what i did there is what they will evaluate for now. Do you think for a junior position with no previous experience, is it good enough?

      2 votes
      1. teaearlgraycold
        Link Parent
        If they actually don't expect you to have any previous experience then yes. I'm from America so it's probably different, but here if you have no experience you're expected to do an internship...

        Do you think for a junior position with no previous experience, is it good enough?

        If they actually don't expect you to have any previous experience then yes. I'm from America so it's probably different, but here if you have no experience you're expected to do an internship (which would be a paid position for software roles, unpaid for many other internships). Junior means you have either a formal degree in the subject or at least a few months of full time experience from an internship.

        2 votes
  3. herson
    Link
    I feel you, I'm from Honduras and working for local companies here is an awful experience, there's market for most mainstream technologies but very few companies are willing to pay a decent wage...

    I feel you, I'm from Honduras and working for local companies here is an awful experience, there's market for most mainstream technologies but very few companies are willing to pay a decent wage for the labor.

    Almost every other programmer I know works remotely for foreign companies that offer better payments, but most of the time is under contractor agreements where you get paid by hour and you can't have PTOs.

    5 votes
  4. an_angry_tiger
    Link
    Don't take it too personally. Even for experienced people the interviews (at least in the USA) are arbitrary and random, and ask questions that don't really relate to actual on the job stuff. To...

    Don't take it too personally. Even for experienced people the interviews (at least in the USA) are arbitrary and random, and ask questions that don't really relate to actual on the job stuff.

    To some degree it's a numbers game, and you have to spin the wheel enough times that it lands on black and you get the offer.

    5 votes
  5. [2]
    archevel
    (edited )
    Link
    Just to be on the safe side. What was the actual assignment? Was it "write a program that inserts this file into a database table with these columns"? Cause sure this goes beyond that and displays...

    Just to be on the safe side. What was the actual assignment? Was it "write a program that inserts this file into a database table with these columns"? Cause sure this goes beyond that and displays additional skills etc etc, but that also makes it harder to review. If all they wanted was a single go file to check that you know the basics, then the rest of the app could just be noise to the reviewer. This can be a good thing to validate with the contact at the company, i.e. ask "do you want something small and simple or should I try to build something bigger in order to impress you?".

    It could also be the use of the global variable docInvalido which is something to avoid.

    4 votes
    1. crdpa
      Link Parent
      Sorry for the delay. They wanted a service to insert the file into the database. The columns are in the first line of the file. They wanted everything to be easy to run using just docker...

      Sorry for the delay.

      They wanted a service to insert the file into the database. The columns are in the first line of the file.

      They wanted everything to be easy to run using just docker (compose).

      Tests and CI was not necessary, but having it is a plus.

      The only thing i did that they didn't ask was to expose things in a web page.

      3 votes
  6. [5]
    vord
    Link
    Commenting on the automation/docker purely... There is definitely substantial room for improvement, but seen as work from a self-taught junior developer inside of a week? I'd be happy to hire you...

    Commenting on the automation/docker purely...

    There is definitely substantial room for improvement, but seen as work from a self-taught junior developer inside of a week? I'd be happy to hire you on that knowledge alone if I was in such a position.

    3 votes
    1. [4]
      crdpa
      Link Parent
      Thanks! Do you have any tips for improvement?

      Thanks!

      Do you have any tips for improvement?

      2 votes
      1. [3]
        vord
        Link Parent
        Here's a solid source on how to fix many of these things. For additional context, this advice is coming mostly from the Ops half of "Devops." Don't run as root within the container, which is the...

        Here's a solid source on how to fix many of these things.

        For additional context, this advice is coming mostly from the Ops half of "Devops."

        • Don't run as root within the container, which is the default.
        • Insure to run package manager updates in the first step of your runtime container, or use something like Distroless for your base. Adding a build for the Postgres image is good for this reason as well...you can make sure you've applied all updates even if your source image has not.
        • Try to minimize the number of layers you create. Each command in the Dockerfile makes a new layer, and you want to put the stuff that changes the least at the beginning of the file in order to maximize Docker's caching abilities.
        • Add a HEALTHCHECK.
        • If nothing needs to access the running docker container from outside of docker, you don't need to open the port to the host via ports in your docker-compose. The docker containers will be able to reach each other without.
        • Remove all configuration information from both the dockerfile and docker-compose in favor of environment files/variables. Github Actions should support storing variables outside of the code itself. - Make sure any real environment files are excluded from source control in your .gitignore, have a sample version in the repo itself.
        5 votes
        1. [2]
          crdpa
          Link Parent
          Thanks for the feedback! This is not my area exactly, but it is good to know this for the next time i need to use docker. This is all pretty new to me.

          Thanks for the feedback! This is not my area exactly, but it is good to know this for the next time i need to use docker. This is all pretty new to me.

          3 votes
          1. vord
            Link Parent
            Like I said...great for a JR dev. The stuff I mentioned often doesn't even get considered by senior-level folks.

            Like I said...great for a JR dev. The stuff I mentioned often doesn't even get considered by senior-level folks.

            3 votes