Ask HN: Simple tools/hack for small project management
thanks.
thanks.
I've had a look at their API but it does not seems too straightforward. :(
Edit: also integrates with your version control, build and test systems if you manage them with TFS as well. Pretty much what atlassian was trying to do when buying Trello.
I hope Atlassian look after it
Edit: I should also mention the Dired mode in Emacs, which is a directory browser. I use "% g" quite frequently, and it has useful extensions like wdired and dired-hacks.
If you add it to your agenda, you can filter things out by tags.
Org mode also has excellent mobile support. All your todo items, schedules etc. can also be viewed in your phone.
Another plus-side is that it is completely text based. You don't have to worry about internet access, operating system, age of the machine, the medium you want to use.
You can quickly export org-mode schedules as pdf/tex/html/txt etc.
If you cannot meet your schedules, you can make a note yourself on why you couldn't meet it and simply reschedule.
The core functionality of org-mode is actually simple. I'd suggest giving org-mode a chance.
1) Create an org document 2) Set some tasks as headlines 3) make them todo items by typing C-c C-t 4) schedule them to a certain date with C-c C-s 5) add the org-file to your agenda by C-c C-[
And you've got a working project schedule. M-x org-agenda to view your schedule.
I've only got experience with Android and MobileOrg is a pain in the ass to setup and sync. The workflow is a hassle.
Orgzly looks nice and is good for read-only usage but entering notes in it is awkward. Takes too much time compared to, for example, Google Keep.
Are there other solution out there that I am not aware of or am I just not using the existing apps correctly?
I've set it up once and never had to configure anything again.
Although I must admit that I only use the app passively to look at my weekly schedule. I haven't used it to make quick captures.
I do use org-mode quite a bit, but for project-specific notebooks, I usually quickly get mentally overwhelmed with the volume and mix of finished/unfinished tasks. I can feel the problem is in the way I use it. Somehow the same content, put in a crappy kanban-style web board, doesn't seem as overwhelming (even though it's an order of magnitude less efficient to work on than it is with org).
* Projects * Customer X
** TODO issue 42 breakage SCHEDULED: <2018-02-12>
* Customer Y
** subproject foo
** TODO fix slow frobnication SCHEDULED: <2018-02-09>
* Ideas
* Misc
When I get an e-mail or something about a new task, I use org-capture to turn it into a TODO with a link back to the e-mail and a default SCHEDULED value, and I hit C-c C-w to refile it directly into customers/subprojects (otherwise they end up under Misc and I'll refile later). I always clock into the task I'm doing, and I use the clocktable (limited to a time range) to figure out how long I've worked on what for my invoices. Since I switch tasks a lot, and didn't like how the recent-tasks-lists was emptied on restarting Emacs, I ended up writing a little helper package at [link redacted] to let me quickly clock in to recent tasks (also lets you navigate to recent tasks if you use ivy).
I do something similar to user terminalcommand, where I schedule tasks in my agenda, so when I open my work-agenda, the stuff that needs doing is always there. I might leave "sometime-maybe" tasks/ideas unscheduled (like "try shiny new library"), but anything people are actually asking me fix will be scheduled. It's really easy to push things towards the future in the agenda, so it's not really overwhelming, even though my work.org file is now at 11677 lines (and I see my work.org_archive is at 6403 – maybe I should archive more things, but it's not like I notice the size).
For collaboration, I use whatever other people use (trello, wikis, meeting notes in etherpad checked into SVN).
* Projects
** Customer X
*** TODO issue 42 breakage
SCHEDULED: <2018-02-12>
** Customer Y
*** Fooproject
**** TODO fix slow frobnication
SCHEDULED: <2018-02-09>
* Ideas
* MiscThis workflow works for my side projects.
For more serious work I open up a seperate org file. I quickly note what parts need to be done, capture my thoughts on them, make a plan and start. If my plan doesn't work I note why it hasn't worked, my current thoughts then I alter the plan.
The most important thing IMHO is to be able to capture what you're thinking honestly. Over a time you can analyze the logs and make better decisions.
In the past I've tried GTD, no plan and just Pomodoro, kanban etc. and they all worked miraclously at the start but my productivity suffered as time passed by. Because with these constructs I was forcing myself to work all the time.
My new method is to treat my org-agenda as sacred, I try not to schedule many items for a day. I give an honest effort to make them happen, but if I can't or psychologically don't want to I reschedule/cancel them without feeling any guilt.
Org-mode is fairly simple if you stick to the basics. You need to devise something that will work for you. Be that a giant file where you keep everything with tags. Or be that a Readme.org for every project. What matters is that you plan ahead and actually stick to it.
A Readme.org for me is a description of the project followed by notes and a hierarchy of issues i.e. to-do items. Also, when starting out sometimes I use src blocks to write initial bits of a script while exploring the data or the library I'm planning to work with.
Do you mean the command "Mark files containing"? I didn't know about this one before.. Could you expand on how you fit it in your workflow?
I do a lot of work from the commandline, and have a few simple macros to do simple timestamped tags. Eg "ttag started on proj ABC", "ttag debugging this", "ttag stopped for today". The tags are stored in a text file. Some work when going back to sum up hours spent on project X, hours on Y etc, but very simple.
Here:
alias ttag='/cygdrive/c/Dropbox/tools/ttag/ttag.sh'
alias ttagcat='cat /cygdrive/c/Dropbox/tools/ttag/ttag-logfile.txt'
alias ttago='open /cygdrive/c/Dropbox/tools/ttag/ttag-logfile.txt'
and >cat /cygdrive/c/Dropbox/tools/ttag/ttag.sh
#!/bin/sh
LOGFILE=/cygdrive/c/Dropbox/tools/ttag/ttag-logfile.txt
TIMESTAMP_NICE=$(date +"%F %H.%M.%S - %s:")
echo $TIMESTAMP_NICE "$@" >> $LOGFILE
works well enough for me.For me, its focus on text and deep hierarchical breakdown, in combination with tagging is potent. You may need to figure out your own way to adapt to your PM style though. For example, some common tags I use are "#next", "#someday", "#2018-02-08" and such.
If you're doing client work or have other external stakeholders involved I'd recommend trello to keep things simple and transparent.
But I do have a system that lets me use WF as reference as well as for task tracking and PM.
This even includes recaps for freelance work. Like I would have an entry of:
2/7/2018: 3 hours
- Did such and such
- Implemented this and that
- Fixed foobar to return foo
I keep to that exact date / hours worked format so when I invoice clients I just grep the file and cut / sum the total hours (if I'm not doing project based pricing).
It works really well for the solo developer / freelancer. No time is wasted on BS and there's a log of work rendered + notes + TODOs + etc..
I like it because I can do all of this from within my code editor which is where I'm doing the work. The efficiency level is very high.
One benefit with marking tasks with a @@. I move the current project I'm working in wip.md to the top, so if I do a search from the top for @@, the first hit will be the task I am currently working on. I wrote a plugin in https://getbitbar.com to put that first (and thus current task) in my menubar. I get distracted easily.. so every bit helps :)
I have another BitBar plugin that scans my wip.md file and run the same script (which I run end of the day) to compute totals and then put it in my menu bar. Since I have something like this:
11:10 PM - 11:21 PM Mimic
12:10 PM
It can detect the start time of my current task or how long since I haven't worked and display them in green or red in the menu bar.During the day, my wip.md file looks like this https://gist.githubusercontent.com/hboon/cd7ffa9ed94ce3a8bc8...
I abuse the Markdown format:
* "projects" marked with headers, with a prefix :: so I can search for it
* I mark "tasks" as done with an *
* I mark uncompleted tasks with @@
* When I start to work on a project, I add a line near the top with the start time and when I finish, I mark the end time too, using a vim macro.
I use MacVim all the time, so my wip.md is always open as the first tab. And I bind cmd+1 to it.At the end of the day:
I run a vim macro which runs a script to generate the total time for each project ending up with: https://gist.githubusercontent.com/hboon/b8770dea077f67664d9...
I then go through it manually and delete the tasks that are still marked as @@ just keeping those with an asterisk. So this effectively becomes my journal for that day. I keep a short note under the Notes: line. For eg. I might say that I didn't work because I went out with my family, or if I'm sick. I delete those mark with an asterisk in wip.md, add more or tweak the remaining ones and I have the file ready for the next day. I do my daily review at this time, so the macro which I mentioned actually opens a few other files including one called on-deck which is basically where I can grab things over from to add to wip.md. Over the years, I sometimes end up with wip.md growing too much, making it quite inhibiting. I try to keep the wip.md to ~1 page so it's more manageable.
I'm ashamed to share the script which I wrote a few years ago :P But it's simple, it just goes through each line looking for a regex match for:
11:10 PM - 11:21 PM Mimic
I have a config file that looks like this: [timelog]
projects=Everyday,Marketing,Mimic,etc
ignoreInTotal=Plan,Review,Photos,Expenses,HomeAdmin,Paperwork
timelogDirectory=/Users/hboon/Dropbox/backup/timelog/
So it can figure out the project name from the regex and only include the relevant ones. Then compute a total for each project, for AM/PM, as well as a grand total for the day.You can see the result in that second gist link.
I think I got the idea from John Carmack's .plan files https://github.com/ESWAT/john-carmack-plan-archive/blob/mast.... My original version back in 2009 only had this:
11:57 AM - 12:17 PM Code: Check conversation view problems
12:19 PM - 12:23 PM Code: Crash when timeline->avatar->followers->back (not home, probably), probably problem with ContactsPicker
It just evolved from there.My setup is with Dropbox, though. I have a symbolic link named `/Projects/Foo/_misc` ( the root directory of the git repository ) pointing to `/Dropbox/Projects/Foo`. The link is excluded via .gitignore . Then I use the extra _misc directory for everything related to this project, like notes, assets, experiments that I run, etc.
With dropbox I can be sure that I have all the information on my laptop as well as on my work computer.
It hasn't gotten any love via Show HN, but it's relevant to the thread, so :)
Basically I wanted something sort of like Trello, but more geared toward Knowledge and Content management and collaboration. I was unaware of the existence of Google Keep at the time, but it does look vaguely similar, doesn't it?
Oh yea, example (read-only) board: https://app.contabulo.com/boards/a5e413d1-8fe3-4b42-a8f1-b4f...
Useful features:
- Browse tasks with keyboard like a text file.
- Tasks can be in multiple projects.
- Tasks can have sub tasks.
- Big ecosystem - lots of integrations with other tools.
I use the following alongside it:
- Everhour for time tracking.
- Unito to sync my tasks to Github to track commits.
- Github issues.
- Instagantt for gantt charting the Asana tasks to see how reliable your time estimates were and plan ahead.
Rather than making a list of tasks I have a whole section of them, and so I can attach files or notes to each one. This makes context switching between tasks fairly efficient.
Org-mode or https://github.com/jceb/vim-orgmode if you are using vim (I do).
http://tailordev.github.io/Watson/ for cli time tracking. Works beautifully.
As aspects of the project turn into specific tasks and data I can consider making formal artifacts for them, but it's unwise to do it too early in a solo project because of the added overhead and distraction from overall priorities. Structurally, coding on your own is really different from having a team to communicate with and leads or managers to specialize time allocation. You have the freedom to automate everything you are working with, and that's your biggest advantage. Where formality is added, it should be done with the support of a script that takes care of the technical details and keeps your friction down - it is not hard to automate turning TODO or FIXME source comments into a report, for example.
Next to that using https://trello.com for setting up Agile boards.
What I like about it:
No procrastination in a management tool (over-planning, formatting, etc).
No illusion of order (technology/computers have a tendency to make you appear disciplined, or to pretend you will be more disciplined by using them… I think it's bullshit. Discipline is a core skill, not the ability to use a tool).
No software can provide the feel of moving a post-it note to the "Done" column. Physical data (pages) is also supposed to help memorization.
You might consider starting your index on the back page, and let it grow "backwards" toward the content, sort of like stack and heap do in memory.
I think I first saw this suggested by the Humphrey/PMP people, where a notebook is (used to be?) a prominent tool. https://en.wikipedia.org/wiki/Capability_Maturity_Model
I tear mine into little squares.
Occasionally I throw them at my colleagues (very small, very intense, on-site dev team) assuming they were somehow involved in creating the issue, and we are aligned on sense of humor.
For small teams, I really like Dropbox Paper. It’s better than text files here because it’s real-time collaborative, but retains nearly all of the flexibility. It supports Markdown syntax, checkboxes, etc. You can tag members of your team, comment in the margins, and link to one doc quickly from another. For small teams that don’t need a heavyweight process, Dropbox Paper fills fits my needs here rather well.
[0] http://jrnl.sh
Where it differs from most other card-based planners is:
-any number of custom properties per card
-powerful visualization (layout and color your cards automatically by their properties or connectivity)
-powerful filtering
-supports dependencies between cards (including support for PERT type project scheduling)
-store different combinations of layout, coloring and filtering as 'views' you can swap between with a mouse click
-highly customizable appearance
-runs locally on Windows and Mac (which makes it very responsive) but plays nicely with DropBox
The drawback is that you can have only one Saved Messages chat and no way to tag messages by project - it becomes messy when you use it for several projects at once.
For a small team, per-project chats are also very helpful - you can easily recall what you were discussing or planning to do several months ago.
Makes it easy to filter by topic.
Another quick tip: you can have multiple chats with the exact same recipients. Nice if you have a running chat with someone and you also have one or more shared projects.
You can build your own webrtc-enabled video chat room in under 100 lines of javascript with PeerJS or the Twilio API. Or use Talky, Cyclops, etc.
If you need invoices, time tracking, and reports. You can always jump into something like Avaza
Keep it simple. And don't be afraid to roll your own tools. Good luck!
If Google Keep is what you're looking for, then use Google Keep.
If you want to share to-do lists, then use Asana or Trello.
If you want to manage tasks, I'd recommend http://clubhouse.io
It's hard to say what would fit your needs without saying what you need or want from a product other than "project management".
Make (sharable) projects. Add tasks. Break into subtasks (recursively). Defer anything you don't want to see yet. Focus on what you can do next and get things done.
Having one place for chats, documents, tasks is great. Its fast, simple and real-time!