Modern Project Management Brendan Bartels
You Need To Manage Tasks Technical Conversation File Changes Project Documentation
You Need To Manage Tasks Technical Conversation File Changes Project Documentation
You Need To Manage Tasks Technical Conversation File Changes Project Documentation
What is Git? Tool that allows you to keep something like a diary of all your file changes over time https://git-scm.com/
What is Gitlab? A web application that allows you to integrate with Git organize tasks track work document changes in the process you get a rich record of all your work (for free) https://about.gitlab.com/
How To Manage Tasks Technical Conversation File Changes Project Documentation
How To Manage Tasks Technical Conversation File Changes Project Documentation
Managing Tasks You will have tasks How will you coordinate them? Word of mouth? Not great: Verbal communication is volatile; tasks are not Just let everyone figure out what to do? Not good: This is essentially a team without a leader Trello? Pretty good
Managing Tasks Suggestion: Use Gitlab Issues Tasks correlate nicely with Gitlab Issues Gitlab also has a board to render Issues as cards Trello-esque + seamless integration with Gitlab
How To Manage Tasks Technical Conversation File Changes Project Documentation
How To Manage Tasks Technical Conversation File Changes Project Documentation
Managing Technical Conversation You will be having technical conversations There s a looming problem in the world: People don t know how to do things Knowledge is hard to find, or impossible to find You will become experts of information associated with your senior design project Your decisions will either contribute to or prevent this problem
Managing Technical Conversation What form of communication will you use to relay technical questions and details? IM (i.e. Slack)? Bad: It s inherently disorganized and exclusive It s a black hole for information
Managing Technical Conversation The event horizon of the Slack black hole
Managing Technical Conversation What form of communication will you use to relay technical questions and details? IM (i.e. Slack)? Bad: It s inherently disorganized and exclusive It s a black hole for information Email? Bad: It s inherently disorganized and exclusive
Managing Technical Conversation Suggestion: Use Gitlab Issues Post questions on relevant Issue threads Post updates on relevant Issue threads Mention any team members that you want to contribute the conversation @netid
mention team members that you want to join the discussion in any post, and they will get an email notification
Managing Technical Conversation Other Examples: https://git.ece.iastate.edu/danc/microcart/issues/1 https://github.com/jooq/jooq/issues/2536
Okay Managing Technical Conversation Sometimes Slack can be good for quick technical discussions Just copy and paste the discussion into a relevant Issue thread when the conversation is finished
This text was copied from a Slack conversation
How To Manage Tasks Technical Conversation File Changes Project Documentation
How To Manage Tasks Technical Conversation File Changes Project Documentation
Managing Files You will have shared project files that your team will modify locally What tool will you use to coordinate changes to these files across your team?
Managing File Changes Suggestion Use Git Use a Branch-Review-Merge workflow
Managing File Changes Suggestion Use Git Use a Branch-Review-Merge workflow
Intro to Git Git is a timeline of snapshots snapshots = commits timeline = branch Initial commit Add README Implement framework for https://git.ece.iastate.edu/danc/microcart/blob//documentation/ how_to_use_git.md#how-do-i-make-changes
To start tracking a project with git, enter the directory and use the git init command
Hint: Use git status to get a hint about what you should do
[85762b0] Initial commit
[85762b0] Initial commit
[85762b0] Initial commit
[85762b0] Initial commit
[85762b0] Initial commit
[85762b0] Initial commit [d0f2f54] Replace greeting with question
[85762b0] Initial commit [d0f2f54] Replace greeting with question
Use git help to learn about commands and get help on those specific commands. [85762b0] Initial commit [d0f2f54] Replace greeting with question
Now we need to get your local changes to the central remote host for the team Local Computer Remote Host [85762b0] [d0f2f54]
Local Computer [85762b0] Remote Host [85762b0] [d0f2f54] [d0f2f54]
Let s say someone else added a commit to the remote host, such that your local copy is obsolete Local Computer [85762b0] Remote Host [85762b0] [d0f2f54] [d0f2f54] [bbf92ad]
Local Computer [85762b0] Remote Host [85762b0] [d0f2f54] [d0f2f54] [bbf92ad] [bbf92ad]
Managing File Changes Suggestion Use Git Use a Branch-Review-Merge workflow
Managing File Changes Suggestion Use Git Use a Branch-Review-Merge workflow
Branch-Review-Merge Motivation Workflow Traditional workflows involve everyone making changes to a central branch/trunk Not Great Changes are delicate because everyone is working on the stable branch Changes are often made without notice, which can lead to team member confusion
Big Idea: Branch-Review-Merge Workflow 1. Create your own personal branch (copy of ) This gives you a safe environment to make your changes 2. When finished, create a merge request for your branch This gives your teammates a chance to review your code and offer feedback before changes become final 3. After approval, merge your changes into And then delete your personal branch
Create a new branch that is a copy of Local Computer [85762b0] [d0f2f54] [bbf92ad] improve-comments [85762b0] [d0f2f54] [bbf92ad]
Local Computer [85762b0] [d0f2f54] [bbf92ad] improve-comments [85762b0] [d0f2f54] [bbf92ad] [8e656ec]
Recall the state of our remote host Local Computer [85762b0] [d0f2f54] [bbf92ad] improve-comments [85762b0] [d0f2f54] [bbf92ad] [8e656ec] Remote Host [85762b0] [d0f2f54] [bbf92ad]
Local Computer Remote Host improve-comments improve-comments [85762b0] [85762b0] [85762b0] [85762b0] [d0f2f54] [d0f2f54] [d0f2f54] [d0f2f54] [bbf92ad] [bbf92ad] [bbf92ad] [bbf92ad] [8e656ec] [8e656ec]
Branch-Review-Merge Workflow Now that we have your branch on the remote host, open a Merge Request for your branch to be merged into
mention team members that you want to review your changes in the description of your merge request, so that they get an email
Branch-Review-Merge Workflow Use the inline code comments to give specific feedback on changes
Branch-Review-Merge When your teammates have reviewed and approved your code, merge it! Workflow Local Computer Remote Host improve-comments improve-comments [85762b0] [85762b0] [85762b0] [85762b0] [d0f2f54] [d0f2f54] [d0f2f54] [d0f2f54] [bbf92ad] [bbf92ad] [bbf92ad] [bbf92ad] [8e656ec] [8e656ec]
Branch-Review-Merge When your teammates have reviewed and approved your code, merge it! Workflow Local Computer Remote Host improve-comments improve-comments [85762b0] [85762b0] [85762b0] [85762b0] [d0f2f54] [d0f2f54] [d0f2f54] [d0f2f54] [bbf92ad] [bbf92ad] [bbf92ad] [bbf92ad] [8e656ec] [8e656ec] [8e656ec]
Branch-Review-Merge When your teammates have reviewed and approved your code, merge it! Workflow Local Computer [85762b0] [d0f2f54] [bbf92ad] improve-comments [85762b0] [d0f2f54] [bbf92ad] [8e656ec] Remote Host [85762b0] [d0f2f54] [bbf92ad] [8e656ec]
Local Computer [85762b0] [d0f2f54] [bbf92ad] [8e656ec] improve-comments [85762b0] [d0f2f54] [bbf92ad] [8e656ec] Remote Host [85762b0] [d0f2f54] [bbf92ad] [8e656ec]
Local Computer [85762b0] [d0f2f54] [bbf92ad] [8e656ec] Remote Host [85762b0] [d0f2f54] [bbf92ad] [8e656ec]
Local Computer [85762b0] [d0f2f54] [bbf92ad] [8e656ec] Remote Host [85762b0] [d0f2f54] [bbf92ad] [8e656ec]
Branch-Review-Merge Other Examples: Workflow https://git.ece.iastate.edu/danc/microcart/ merge_requests/11
Branch-Review-Merge Workflow What about merge conflicts? Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66]
Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66] [0d46dbf]
Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66] [0d46dbf]
Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66] [0d46dbf]
Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66] [0d46dbf]
Local Computer Remote Host hello-earth hello-earth [e98ad66] [0d46dbf] [e98ad66] [0d46dbf]
Git will likely open a text-editor (vim) for the commit Use :q to just quit and use the commit message as is Local Computer Remote Host hello-earth hello-earth [0d46dbf] [0d46dbf] [e98ad66] [e98ad66] [1e52485]
Local Computer Remote Host hello-earth hello-earth [0d46dbf] [0d46dbf] [0d46dbf] [e98ad66] [e98ad66] [1e52485] [1e52485]
Local Computer Remote Host hello-earth hello-earth [0d46dbf] [0d46dbf] [0d46dbf] [e98ad66] [e98ad66] [1e52485] [1e52485]
Local Computer Remote Host hello-earth hello-earth [0d46dbf] [0d46dbf] [0d46dbf] [e98ad66] [e98ad66] [e98ad66] [1e52485] [1e52485] [1e52485] [3a24661]
Local Computer hello-earth Remote Host [0d46dbf] [e98ad66] [1e52485] [0d46dbf] [e98ad66] [1e52485] [3a24661]
Local Computer hello-earth Remote Host [0d46dbf] [e98ad66] [1e52485] [3a24661] [0d46dbf] [e98ad66] [1e52485] [0d46dbf] [e98ad66] [1e52485] [3a24661]
Local Computer [0d46dbf] [e98ad66] [1e52485] [3a24661] Remote Host [0d46dbf] [e98ad66] [1e52485] [3a24661]
Local Computer [0d46dbf] [e98ad66] [1e52485] [3a24661] Remote Host [0d46dbf] [e98ad66] [1e52485] [3a24661]
Branch-Review-Merge Workflow What about files generated by software? (not directly written by you) Still use Git, but keep in mind the diffs will be unmanageable, don t bother examining them Resolve merge conflicts with git checkout ours or git checkout theirs (This essentially ignores all of one team member s changes, so it is best to avoid this scenario. Coordinate with your teammates so that only one person is ever working on binary files at a time.)
How To Manage Tasks Technical Conversation File Changes Project Documentation
How To Manage Tasks Technical Conversation File Changes Project Documentation
Managing Project Documentation You might need to make tutorials, how-to s, or orientational documents Where should these go? Google Docs? Wiki Pages? Okay. But both can easily get decoupled from the other project files.
Suggestion Managing Project Documentation Add Markdown files directly into your Git project, which will be rendered as pages on your Gitlab project Markdown is a very simple and natural syntax It s quite easy to add links, pictures, code snippets Gitlab s Markdown Reference: https://docs.gitlab.com/ee/user/markdown.html
Review How to Manage Tasks Define and track tasks with Gitlab Issues Technical Conversation Ask questions and give updates on appropriate Gitlab Issue threads File Changes Use Git and Gitlab Merge Requests Project Documentation Use Markdown files committed directly into your Git project
Questions?