[–] 2 points 2 years ago

We tried to ask our interview question of ChatGPT. After some manual syntax fixes, it performed about as well as a mediocre junior developer, i.e. writing mutithreaded code without any synchronization.

Don't misunderstand, it is an amazing technical achievement that it could output (mostly) correct code to solve a problem, but it is nowhere good enough for me to use. I would have to carefully analyze any code generated for errors, rewrite bits to improve readability (rename variables to match our terminology, add comments, etc), and who knows what else. I am not sure it will save me much time and I am sure it will not be as good as my own code. I could see using an AI to generate sophisticated boiler plate code (code that is long, but logically trivial).

  • source
  • [–] 2 points 2 years ago

    The immediate use for this that jumps out at me is batch processing: you take n inputs and return n outputs, where output[i] is the result of processing input[i]. You cannot throw since you still have to process all of the valid input.

    This style also works for an actor model: loosely coupled operations which take an input message and emit an output message for the next actor in the chain. If you want to be able to throw an exception or terminate prematurely, you would have to configure an error sink shared by all of the actors and to get the result of an operation, you so have to watch for messages on both the final actor and the error sink.

  • source
  • parent
  • context
  • [–] 2 points 2 years ago (1 child)

    I knew basic CLI commands (such as cd and ls) for a while, but did not do learn much more. Some things have helped me grow my skills:

    • Necessity: Some times I need to do something on a VM or container that does not have a graphical interface installed. Some utilities only have a command line interface and not a graphical client. My only option is to Google how to do it. The more I do it, the less I have to Google and the more focused my searches become (instead of searching for "How to do x", I search for "How to do x in utility").
    • Learning from others: For many tasks, I follow internal or external guides, which typically use CLI commands. Often I look at how my coworkers accomplish tasks and pay attention to what commands they use. Then, when I have time, I look up any new commands I saw and decide if they will be useful for me too. Lately, I have been doing code reviews that involve shell scripts. Those are especially nice, because I can take my time, going line by line, and understand what each command does.
    • Keep notes: Every time I find a command that I think I will need again, I copy it into a text file (and I have many such text files). It also makes it easier when I need to run the command with slightly different arguments (a different commit id or something), I can just edit the command in my editor (with searching and undo) and paste it in to my terminal with all the flags and arguments correct.
  • source
  • [–] 0 points 2 years ago

    GUIs are easier to learn, but they are not always available. Many services only have a CLI client. If you are connecting to a remote server or, especially, a container to debug it, it may not have a window manager installed. If you know how to do something via the CLI, you can automate it with a shell script.

  • source
  • parent
  • context
  • [–] 1 point 2 years ago

    I also exclusively use the git CLI. I have tried to use a graphical client and could never figure out what it was doing and what was going on. I probably picked it up so easily because when I learned git, I was already used to using a CLI version control client. At the time, I was working at a company that heavily used Perforce and had a custom wrapper around the p4 cli that injected a bunch of custom configuration.

  • source
  • parent
  • context
  • [–] 7 points 2 years ago

    My favorite YOLO-Driven Development practice (from a former employer) was Customers as QA. We would write code, build the code, and ship it to the customer, then the customer would run the code, file bugs for what broke, and we would have a new build ready next week.

    It provides many benefits:

    • No need to hire QA engineers.
    • Focuses developer debugging time on features actually used by customers instead of corner cases that no customer is hitting.
    • Developers deliver features faster instead of wasting time writing automated tests.
    • Builds are faster because "test" stages are no-op.

    One time a developer was caught writing automated tests (was not sure in the correctness of his code, a sign of a poor developer). Our manager took 15 minutes out of his busy day to yell at him about wasting company resources and putting release timelines in jeopardy.

  • source
  • [–] 1 point 2 years ago (1 child)

    I have not read the PEP itself or the PEPs that they claim to simplify, but this feel like a very bad idea that only really benefits Meta and a few other mega servers. It is enabling a micro-optimization that is only usable in a niche use case (forking long running processes with shared memory). Unfortunately, it is making all other python applications, on average, 2% slower. This is a minor regression but it hurts everyone and benefits almost no one.

  • source
  • [–] 1 point 3 years ago (1 child)

    That should be a disciplinary issue. The engineers in question should be brought forth in front of management to explain why they thought that this particular change should be exempt from testing and why this was not explained, in detail, in the code review.

  • source
  • parent
  • context
  • [–] 75 points 3 years ago (2 children)

    Yes, you should use third party tools (just don't take credit for them, maybe even credit the tools used in the footer). In a real job, you would leverage third party libraries to work more efficiently, so you should do the same when showing off your skills.

  • source
  • [–] 1 point 3 years ago* (last edited 3 years ago)

    As a student (and even as an alumnus), you should have access to university career counseling. They can edit your resume for you. They may also have job listings from companies looking to hire students.

    Also, you mentioned in a reply that your LinkedIn profile is not up to date. Fix that. Make sure you have all of your skills listed and experience described (then update it once your university career counselor rewrites your resume). The last two jobs I got via LinkedIn. I have had the best results from recruiters looking to fill a specific role as opposed to ones who wanted my resume to spam out.

    P.S. Assuming you are talking about lambdas as a language feature and not AWS Lambda, they are the same thing as anonymous functions. lambda is just a keyword to declare anonymous functions in many languages.

  • source
  • view more: ‹ prev next ›