Skip to content

hemant-learningforever/CodingAssessment.dotnet

Repository files navigation

Valocity Technical Assessment

This assessment is designed to emulate a day in the life of a Valocity Software Engineer. You will be assessed on how well you follow instructions and express the intent of your changes using the tools at hand. Its purpose is not to trick you or catch you out but to get an understanding of how you think about solving problems using software and capturing learnings and intent using nothing but files within a version control system.

Take as much or as little time as you like, however we suggest around 90 minutes to get through as much as you can. Feel free to search for solutions, read documentation, and ask for help. Just make sure that you try to understand the code and attribute its source before copy-pasting it.

It is up to you to manage your time. The answers will be assessed against the role you have applied for so ensure you demonstrate the key objectives expected by the role.

Commit to the local git repo often to show progress and workflow. Ensure the commit comments explain why you made the change.

Don't forget to check out the appendix](#appendix) for some great tools, hints and tips.

Getting started

You will need git and a code editor of your choice. We recommend Visual Studio Code with Remote development in Containers, this project contains a development container definition. Once this workspace has re-opened in the remote container run the following commands to ensure you are set up and ready to go.

  1. Open the terminal.
  2. Run:
    dotnet test

Submitting

To submit your solution:

  1. Ensure you have committed all your changes
  2. Run git clean -xdf to clear out any build artifacts
    • Binary files in the submission will be blocked by spam filters

  3. Compress the solution source into a single archive
    • ⚠ Ensure the .git folder and other hidden files are included in the archive

  4. Send on through to [email protected]!

If using the development container:

  1. Open the terminal.
  2. Run:
    git clean -xdf
    mkdir Pickup -p
    zip -r Pickup/CodingAssessment.zip .
  3. Send on through to [email protected]!

Assessment

Exercise 1: Code Review

This will assess your knowledge of Code Smells, clean code and the ability to comment on or critique code. The code in CodeToReview.cs has been submitted by an intern from another team to a code base you depend on. Using inline comments, review the code with either questions for clarification or feedback with enough context for the author to learn and enhance the code.

Exercise 2: Working with existing code

This will assess your TDD skills and your ability to work safely with existing code. Use tests to gain an understanding of the existing behaviours and ensure your changes are safe. Your task is to refactor CodeToRefactor.cs. Use comments, commit messages and automated tests to express your reasoning, assumptions and issues encountered.

Exercise 3: Green Fields project

This will assess your

  • Ability to design solutions
  • Ability to decompose problems
  • Knowledge of clean architecture
  • Knowledge of continuous delivery and DevOps
  • Ability to identify constraints and assumptions
  • Awareness of cognitive biases
  • Test-driven development skills

As an enthusiastic card player and developer
I want to create a program to play cards against the computer
So that when I am bored I can play against an intelligent opponent.

Constraints

Unsure of what UI to build for, or what card game I should code for. We will figure that out later. At this stage, I know I need a concept of a Deck, Cards and a Shuffle function.

How would you set up your new solution and why?

  • Show me your initial to-do list with some reasoning, for example:
    • Development environment setup
    • Scaffold/structure of your solution
    • What would your delivery pipeline look like
  • Scaffold your solution
    • See how much you can scaffold out to hand to another team member to continue with
    • Bonus points if you have something working

Appendix

Below you will find some resources to help you understand our engineering culture. These are categorised into the three main pillars of every change we make.

  1. The Why ( Values, Documentation, Commit messages, Comments )
  2. The What ( Principles, Documentation, Tests )
  3. The How ( Process, Architecture, Code, Tools )

Why

What

How

Must Watch Software Talks For Software Engineers

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published