Ask HN: What are some good tools for keeping a software project on track?
Things like:
1. Know what each other are working on? (progress/blockers)
2. Know what is currently deployed to production and staging? (heroku)
3. Keep track of larger goals (milestones)?
[+] [-] dannysu|8 years ago|reply
I believe the most important task is to teach your team members those project management skills.
Teach them the skills to recognize unexpected events and know to communicate those bad news proactively. For example, an assigned task turned out to be much more difficult or larger scope than previously thought? Communicate. Uncertainty whether things can get done in time? Communicate. Feeling even the slightest uneasy about anything? Communicate.
Understanding of the business goals? You have to teach it and make it clear. You're not gonna have a textbox, type it in and expect the team to just get it. There's a difference between reading something, and understanding something.
Again, tools are "tools". No tool can allow your team to just be in zombie mode and not use their brain to think. Tools are there as an aid, not to fill in a hole in competencies.
Choose whichever tool that works for you. Observe how your team members are doing and teach them the necessary skills as needed.
At my company we've used simple Google doc, Asana, Trello, and now we're on JIRA. They all have pros and cons, but so far JIRA is working out alright and I think better than Trello.
[+] [-] vram22|8 years ago|reply
Great comment.
Good methods are more important than tools, to keep projects on track. As in, methods of doing things, not OOP methods.
Tools, while they can be useful (though no panacea), are secondary, and also, some tools bind you into fixed ways of doing things, which may be a hindrance at times.
[+] [-] Pica_soO|8 years ago|reply
Many managers view incursions of reality upon there vision as a personal attack.
You are right though, good communication is the best approach.
[+] [-] BOOSTERHIDROGEN|8 years ago|reply
[+] [-] boffinism|8 years ago|reply
[+] [-] LrnByTeach|8 years ago|reply
> In my experience, what matters most is good communication.
> Whatever tool you use, what matter most is making sure your team are diligent about updating it, and about responding to updates by others
> If you can get them doing that, then using a spreadsheet or a wall of post-it notes will give you 80% of the benefits of using the most advanced dashboard/kanban/IM tool.
> If you can't get them doing that, then even the most advanced tools won't save you.
[+] [-] tootie|8 years ago|reply
I know there's also a lot of scorn for agile, but the core tenet is really just writing well-defined stories. Make each ticket the smallest possible feature with incremental value than can be built, tested and deployed. Then stack your tickets in priority order. Everything else about the process is for communication and visibility, but if you write your stories well, they are less important.
[+] [-] ryandrake|8 years ago|reply
A lot of solutions posted so far (post-its, E-mail, whiteboard) work well for 2 person projects, with discipline scale to 20 person projects, are problematic for 200 person projects, and are totally inappropriate for 2000 person projects.
Specialized tools are recommended when projects scale beyond 10-20 people. Formal process helps. You also need to track risks as another poster pointed out. If your project is a part of a larger whole, you need to track dependencies and their schedules (other teams at your company, vendors/suppliers, 3rd party open source dependencies, etc.)
[+] [-] jcoffland|8 years ago|reply
[+] [-] wikwocket|8 years ago|reply
You can monitor this for basic uptime monitoring and refer to it to sanity check which version is deployed. We do this at my place and it's super convenient.
[+] [-] smithkl42|8 years ago|reply
[+] [-] blipblop|8 years ago|reply
> Know what each other are working on? (progress/blockers)
a. Gantt chart = Asana + Instagantt
- Instagantt is great. It allows you to create a Gantt chart from multiple Asana projects. I have an Asana project for each customer project with the deadlines/milestones. I also have a project for Ops/Refactoring "projects" (changing ORM, dockerizing, etc.), a project for Releases, and a project for Meetings.
- I use to think Github could do everything but business-folk seem to struggle with it, and Asana is more flexible. Assigning tasks to people in Asana is great.
b. Kanban board = Github + Zube
To actually get things built we work in loose two week sprints. We create Github Issues for tasks we are working on usually keeping them quite broad as usually a lot of details emerge once we start working on them.
We estimate time based on Planning Poker with the goal being to become better at estimating time and scoping tasks.
> Know what is currently deployed to production and staging? (heroku)
I've started keeping details of releases in Asana. Could also use Github Milestones. We feature freeze releases to a branch called `release/0.5.x`, when we ship we use a tag called `release-tag/0.5.0`, and then tag our deploys with `deploy/staging`, `deploy/prod`, or `deploy/<on-premise-customer-name>`.
> Keep track of larger goals (milestones)
We use a Gantt chart is visualise this, and usually some high-level strategy docs in Quip.
[+] [-] olalonde|8 years ago|reply
1. We do all of this from Github using issues, milestones and projects. We have a GitHub Slack integration which can also give a feel of what everyone's working on. We also have a meeting every Monday where everyone says what they'll be working on this week.
2. Master branch is always in production. Staging branch is always in staging. We use CircleCI for CI/CD.
3. Milestones in GitHub.
[+] [-] Thriptic|8 years ago|reply
[+] [-] leipert|8 years ago|reply
1. How do we know what each other is working on?
All of us (~15 people, 5 of which remote) participate in the daily at 10 o'clock. The daily takes around 15 min and it is focused on the stories and every one has a good overview on what is everyone doing. Other meetings are usually organized in the daily. Typically like
A) "I have this and that problem with X, I would like to talk with B)"
B) "Okay, let's talk after the daily."
C) "I have also interest in this"
Every day the daily is lead by another person. At the end of daily we ask questions regarding if everyone has enough/to much to do, knows what to do and so on.
2. How do we know what is currently deployed to production and staging?
Version numbers ;) And Bamboo deployments.
3. Larger Goals
Big releases every few months with planning directly after each release.
[+] [-] taprun|8 years ago|reply
[+] [-] foodie_|8 years ago|reply
It's simply to early to think about the solution at this stage.
(With that said I manage a remote team and we use kanban on trello, heroku and slack. We only meet as needed)
[+] [-] james-skemp|8 years ago|reply
[+] [-] astonex|8 years ago|reply
We can see what everyone is working on just by looking at the stories in our 'in development' list which show who picked up that story.
We can also group stories into epics and milestones to track progress towards larger goals
[+] [-] ilaksh|8 years ago|reply
[+] [-] perlgeek|8 years ago|reply
Tracking the larger goals is often not well formalized, but I like this podcast episode about levels of planning in agile projects: http://deliveritcast.com/ep33-always-be-planning. It's often included in frameworks for scaling scrum, like SAFE of scrum of scrums.
2. is a purely technical problem. If I remember correctly, stuff deployed to heroku corresponds to git branches, so it should be pretty easy to create some visualization about what's deployed right now from looking at git repos. I could be wrong here.
[+] [-] eikenberry|8 years ago|reply
For example my dashboard I has a 2 column layout, on the left top is my in-progress stuff and down the left side is the other team members in progress stuff. On the right top is my assigned tasks and below is monitored tasks. This layout is useful to me for tracking my work and I get to stay aware what the others are working on. It helps a lot to keep tickets small in scope, so you can rotate them fairly often.
Of course what works depends on the nature of your teams work. Anyways, just some ideas.
[+] [-] batbomb|8 years ago|reply
[+] [-] ksikka|8 years ago|reply
For the task spreadsheet, you can have a twice-a-week stand up where everyone goes around and updates their own tasks on a google sheet in turn.
For the milestone spreadsheet, a period between one month and one quarter works well.
Although meetings are often eschewed by software engineers, they really do help to keep projects on track.
Also appoint someone to be in charge of tracking the "health" of various milestones, red = needs course correction, orange = at risk, green = on track, etc.
[+] [-] dasmoth|8 years ago|reply
The closest thing I've seen to a nice solution to this is to e-mail a brief report of what you've been up to to the manager at the end of the week, who collates into a summary at the start of the following week. Lightweight, avoids superfluous detail (because the coordinator can edit it out), and not so fine-grained that individuals can't sit on a problem for a day or two while thinking it over if that's their preferred style.
Obviously, this doesn't preclude talking about individual issues during the week! But daily check-ins force this too quickly in my view.
[+] [-] msupr|8 years ago|reply
Start with Trello. You can easily bend Trello to work with any productivity/PM system. Easy to get started and easy to evolve your process over time. Lots of great examples of how people are using it and some cool plugins to extend it.
#1 is extremely easy to implement in Trello. #3 is definitely possible but takes some time and buy in.
[+] [-] billdybas|8 years ago|reply
I would add that visibility into what everyone else is working on is also super helpful to avoid stepping on other's toes or duplicating work.
Once you've got communication down, you might find one of these tools useful:
https://zube.io
https://www.pivotaltracker.com
https://basecamp.com
[+] [-] laktek|8 years ago|reply
1) Team members have to reply to a thread on "What are you working on?" at the end of the day. This keeps everyone informed of progress and blockers.
2) We use the CI dashboard to answer this (any changes to the master branch are auto-deployed to staging, and then staging is manually promoted to production.)
3) We use a Gantt chart to track high-level milestones (usually we go through it once a week to see where we are at).