Development Guidelines
These Development Guidelines provide guidance to Power Partners employees and team members. It is an overview of how we do things.
Best Practices
-
We commit and push at least every evening
-
We report time every evening
-
We make sure that our tasks are up-to-date before every meeting (daily standup, demo, planning)
-
We tick off AC's (Acceptance Criteria) whenever achieved
-
We reference each commit with the respective planio tasks by using
refs #123orcloses #123(NO COMMIT WITHOUT REFS OR CLOSES)
Organization
- We use scrum (Power Partners flavor)
-
We use weekly sprints
-
We have a demo/retrospective on Friday, and a Planning on Monday
-
We have daily standup meetings
Tools
-
We use planio to
- manage sprints: Agile board
- store security aspects: Wiki
- source code repository: git (linked to GitHub)
- clients: 1 planio projects per client
- manage projects: category
- estimation: on the planio tasks
- time reporting: time reporting
- help desk functionality
-
We use GitHub for our git repository (and we link to them from within planio)
-
We use Teams to
- communicate. Use the Client Project on the pwrp tenant when a thread is clearly attributable to a client. Use a private channel if the client has access to the team
-
We use Markdown and Mermaid for solution design and documentation of projects and libraries. We love Markdown. It even works in the planio git browser. For example, see planio example.
-
We use Python for API downloads
-
We use VSC (Visual Studio Code) for software development and for git
-
We use GitHub Client for git (in addition to VSC)
-
We use Azure Storage Explorer to review Storage Accounts
-
We use Azure Data Studio to explore databases
-
We use Parquet Viewer to inspect Parquet files Parquet Viewer on GitHub
Tech Stack
-
We use Power BI for visualization
-
We use Power Query / M for data wrangling, unless we have a DWH (Data Factory)
-
We use Azure Data Factory (ADF) for a DWH, using the following components
- Azure Functions / python for API downloads
- Blob storage for storage of files (without
Azure Datalake 2, because that will not allow us to configure version history, which is important for support cases) - Azure Copy activity for copying and simple wrangling
- Azure Data Flow from complex wrangling
- Under investigation: Use SQLServer with DTU costing instead of files
-
We use parquet files wherever possible (and not, say, CSVs)
-
We use SQLServer (instead of parquet) whenever we can get incremental updates from the source (e.g. a REST API where we can filter for last_update). SQLServer then lets us update records selectively, which is a pain in files.
Coding Conventions
Azure
-
We use a single Storage Account and a single Blob Container for a solution
-
We also use a single azure function app containing all the azure functions
Python
Naming Conventions
-
Packages (folders) should have short names. The typical package is
pwrp\pck_name, e.g.pwrp\bouwsoft -
Modules (files) should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.
-
Class names should normally use the CamelCase convention.
-
Function and (local) variable names should be lowercase, with words separated by underscores as necessary to improve readability
Terminology
-
implement: write code
-
deploy: roll out/install (e.g. the extension, the azure function, the pipeline)
-
upgrade: deploy to a newer version (as opposed to re-deploy the same same version, e.g. in case of a faulty deployment)
-
refresh: download latest data (e.g. run pipeline, refresh dataset)
-
update: let's not use this, it's too generic, it could mean any of the above
Version Control
-
We use git on GitHub
-
We use one git repository per client
-
The name of the git repository is equal to the client short code, e.g.
cgk -
We link all check-ins to a planio task by using
refs #123in the check-in comment -
We use branches sparingly, namely only if
- we have a long-running dev task
- which might conflict with someone else's work
- we never use a branch for work on the pbix file
-
We use GitHub lfs (GitHub Large File Storage) to store pbix files and other large files, such as csv, XLSX, pbix, JPG, PNG
Time Reporting
-
All time spent on Delivery tasks is logged to planio.
-
If you don't have a planio issue, create one or raise it with the Project Manager
-
Always log to the
Task,Question, orMeeting. Never log to the Order. -
Add a comment to your time log. It will make things easier in case a client challenges a time report
-
Always log time as
Billable, except if instructed otherwise by the Project Manager
For details, see terminology-and-concepts .