0% found this document useful (0 votes)
33 views7 pages

Software Engineer I - Technical Assignment

Uploaded by

financestudies01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views7 pages

Software Engineer I - Technical Assignment

Uploaded by

financestudies01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Project: Engineering Resource Management System

Overview

Build a full-stack application to manage engineering team assignments across projects. Track
who's working on what, their capacity allocation, and when they'll be available for new projects.

Duration: 2 days (16 hours)

Core Features
1. Authentication & User Roles

●​ Login system with two roles: Manager and Engineer


●​ Engineers can view their assignments
●​ Managers can assign people to projects

2. Engineer Management

●​ Engineer Profile: Name, skills (React, Node.js, Python, etc.), seniority level
●​ Employment Type: Full-time (100% capacity) or Part-time (50% capacity)
●​ Current Status: Available percentage (e.g., 60% allocated, 40% available)

3. Project Management

●​ Basic Project Info: Name, description, start/end dates, required team size
●​ Required Skills: What technologies/skills the project needs
●​ Project Status: Active, Planning, Completed

4. Assignment System

●​ Assign Engineers to Projects: Select engineer, project, allocation percentage


●​ View Current Assignments: Who's working on which project and for how long
●​ Capacity Tracking: Visual indicator of each engineer's current workload

5. Dashboard Views

●​ Manager Dashboard: Team overview, who's overloaded/underutilized


●​ Engineer Dashboard: My current projects and upcoming assignments
●​ Availability Planning: When will engineers be free for new projects
6. Search & Analytics

●​ Search & Filter: Find engineers by skills or projects by status


●​ Analytics: Simple charts showing team utilization

AI-Powered Development Approach


Important: We strongly encourage leveraging AI development tools throughout this assignment.
As the engineering landscape evolves rapidly, we seek team members who can effectively use
AI to accelerate development while maintaining code quality and deep technical understanding.

Expected AI Tool Usage

●​ AI IDEs: Cursor, Windsurf, or similar AI-powered editors


●​ AI Assistants: Claude, ChatGPT, GitHub Copilot for code generation and debugging
●​ Code Review: Use AI for code optimization and best practices suggestions
●​ Problem Solving: Leverage AI for architectural decisions and implementation strategies

Critical Requirement

While we encourage AI usage, you must understand every line of code you implement.
Simply copying AI-generated code without comprehension will not meet our standards. You
should:

✅ Review and understand all AI-generated code


✅ Modify and optimize AI suggestions to fit your specific needs
●​

✅ Be able to explain your implementation decisions


●​

✅ Test and validate all AI-assisted implementations


●​
●​

Documentation Requirement

In your README, include a section on:

●​ Which AI tools you used and how


●​ Specific examples of how AI accelerated your development
●​ Any challenges you faced with AI-generated code and how you resolved them
●​ Your approach to validating and understanding AI suggestions

Technical Requirements
Frontend (React + TypeScript)

●​ Components: Use ShadCN UI components with Tailwind CSS


●​ Forms: React Hook Form for project/assignment creation
●​ Data Display: Tables showing assignments, charts showing capacity
●​ State Management: React Context or Zustand

Backend (Node.js or NestJS preferred)

●​ Database: MongoDB or Any Database with proper schemas


●​ Authentication: JWT tokens
●​ API Design: RESTful endpoints
●​ Business Logic: Capacity calculations

Database Schemas
User
{
email: String,
name: String,
role: 'engineer' | 'manager',
// Engineer fields
skills: ['React', 'Node.js', 'Python'], // Array of strings
seniority: 'junior' | 'mid' | 'senior',
maxCapacity: Number, // 100 for full-time, 50 for part-time
department: String
}

Project
{
name: String,
description: String,
startDate: Date,
endDate: Date,
requiredSkills: [String],
teamSize: Number,
status: 'planning' | 'active' | 'completed',
managerId: ObjectId
}
Assignment
{
engineerId: ObjectId,
projectId: ObjectId,
allocationPercentage: Number, // 0-100
startDate: Date,
endDate: Date,
role: String // 'Developer', 'Tech Lead', etc.
}

Key Calculations
1. Available Capacity
// How much capacity an engineer has left
function getAvailableCapacity(engineerId) {
const engineer = getEngineer(engineerId);
const activeAssignments = getActiveAssignments(engineerId);
const totalAllocated = activeAssignments.reduce((sum, a) => sum + a.allocationPercentage,
0);
return engineer.maxCapacity - totalAllocated;
}

2. Skill Matching
// Find engineers with required skills for a project
function findSuitableEngineers(project) {
return engineers.filter(engineer =>
project.requiredSkills.some(skill => engineer.skills.includes(skill))
);
}

API Endpoints
Authentication:
POST /api/auth/login
GET /api/auth/profile

Engineers:
GET /api/engineers
GET /api/engineers/:id/capacity

Projects:
GET /api/projects
POST /api/projects
GET /api/projects/:id

Assignments:
GET /api/assignments
POST /api/assignments
PUT /api/assignments/:id
DELETE /api/assignments/:id

UI Requirements
Manager Pages

●​ Team Overview: List of engineers with current capacity (e.g., "John: 80% allocated")
●​ Create Assignment: Form to assign engineer to project with percentage
●​ Project Management: Create/edit projects with required skills

Engineer Pages

●​ My Assignments: Current and upcoming projects


●​ Profile: Update skills and basic info

Key UI Elements

●​ Capacity Bars: Visual representation of workload (progress bars)


●​ Skill Tags: Display engineer skills and project requirements
●​ Assignment Timeline: Simple calendar view of assignments

Evaluation Criteria
1.​ Functionality (20%): Core features work correctly
2.​ UI/UX (20%): Intuitive interface with good visual design
3.​ Code Quality (30%): Clean, readable, well-structured code
4.​ Technical Implementation (30%): Proper API design, database structure, code
structure

Sample Data
Include seed data with:

●​ 3-4 Engineers with different skills and capacity


●​ 3-4 Projects with various requirements
●​ 6-8 Assignments showing different scenarios
●​ Mix of full-time and part-time engineers

Deliverables
1.​ GitHub Repository with:​

○​ Frontend and backend code


○​ README with setup instructions
○​ Database seed script
2.​ Working Demo with:​

○​ All core features functional


○​ Sample data pre-loaded
○​ Responsive design

Bonus Features
●​ Timeline View: Calendar showing assignment duration
●​ Skill Gap Analysis: Identify missing skills in team

Success Metrics
Your system should:

●​ ✅ Accurately calculate and display engineer capacity


✅ Allow managers to easily assign people to projects
✅ Show clear overview of team workload
●​

✅ Handle basic CRUD operations smoothly


●​

✅ Have intuitive UI that non-technical managers can use


●​
●​

Focus on building a practical tool that solves real resource allocation problems. Keep it
simple but functional!

You might also like