Ask HN: What are some good tools for keeping a software project on track?

99 points by bnchrch ↗ HN
Hey! I'm coming into a new remote team as Technical Lead on Monday and I wanted to know are some good tools that can help us work better together.

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)?

77 comments

[ 4.3 ms ] story [ 137 ms ] thread
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.
Bingo.. these 4 things are the crux of the Project Management ..

> 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.

As a former pm, I sure hope you're going to track risks. Things that are (or should be) spotted early need to be tracked and managed.
For 1 and 3, it's the process that matters more than the tool. One process I found effective is maintaining a spreadsheet of tasks and a spreadsheet of larger milestones, updated in periodic meetings.

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.

Lines of communication and chain of command are more important than tools. The only person who should need to know what you're doing is who you report to. And so on all the way to the top.

Trello, jira, aha, whatever won't help if you don't have clear lines of communication and a chain of command

The only project management tool I've ever seen work effectively - I'm not even kidding - is a whiteboard with Post-it notes stuck to it. Everything else is snake oil.
how do you make that work for a "remote team" ?
trello/github projects/whatever hip new trello clone came out this month
Something Trelloesque is the obvious answer, but I'm curious if anyone's tried whiteboard+webcam.
We did this once and it didn't work. The whiteboard's appeal is its size and interactivity. The webcam version loses both of those qualities.
whiteboard+webcam

You could call it a trelloscope

We use Trello and it works great. Its closest skeuomorphic equivalent is... a whiteboard with Post-it notes stuck to it.
I actually find that the ease with which non-technical and - let's phrase this delicately - busy people can add new cards and even new lists (columns) to Trello is a significant detractor from its successful use in software project management. JIRA is significantly harder to use - I challenge any non-technical novice JIRA user to figure out how to add extra columns - but, for that reason, vastly easier to keep under control.

If you have stringent rules in place like "only the project manager can add cards, they can only add them in the sprint planning session on Monday morning, and we are keeping strictly to Kanban", then Trello will work fine - but any competent project manager should also be able to use JIRA, and will surely benefit from its extra functionality (and any non-technical stakeholder should at least be able to log into JIRA and click the requisite few buttons to see the current sprint and the backlog, if they care enough).

But hey, each to their own.

sorry, what is your "busy people" a euphemism for?
I mean, for example, a sales director with a stake in the business getting in after a challenging client meeting and creating extremely hyperbolic cards like "Search is incredibly slow!!!" or "Client profile picture is blurry" with absolutely no further details. I've seen this happen with Trello, and it doesn't help anyone. You don't get it with JIRA, because the sales guy really won't be able to use JIRA well enough to do it (in all likelihood), so he'll just send an irate email which may get translated into meaningful tickets (or, you know, it might just be he was on slow wifi in his meeting).
sorry if this is a bit long - I'd usually edit it down but am in a hurry.

So I actually am having trouble following your example.

1 - Do you mean that the landed contract is actually really big and important (basically it's now paying for all of the development) or just another signup?

2 - you called them hyperbolic but picked two examples that can keep clients from taking the software seriously: both examples seem to be something that might be much more important than whatever the team was working on.

What I mean is that if the client is trialing the software, and has a certain process in place but trying yours, then if their search is too slow they might go back to whatever process they had before; you can lose the client. Likewise blurry profile pictures might cause them to decide that it is not polished software they can use.

You did not use examples like "unclear icon on search label!!!" or "client logo NOT on their dashboard" or something stupid.

I also thought that anyone could talk to the stakeholder who added to your board and figure out why it is so important (if it is) or immediately move it if it's not (Assuming it's a big, important client.) Or edit it as appropriate.

Obviously this might mean totally rewriting the feature: perhaps slow search can just be rewritten as showing a recent list of the last ten (whatever) and allow them to be pinned, as the client doesn't really care about search but just wanted to bring up (whatever). I say this because for really old searches from archives people wouldn't care about waiting a few seconds, whereas for workflow type things done lots of times all the time it really matters.

Obviously a PM is supposed to stand between such a client/internal sales director and the developers but I am having trouble understanding why the PM can't move and translate from the board - assuming these issues and the client is big/important enough.

Emails often get lost or not handled with appropriate urgency for the case at hand (and can even be marked wontfix or feature request simply due to lack of communication) so if you wrote a bit more about your example I might understand better.

Ignoring the specifics of my examples, which really aren't important, the problem is the frequency with which these process failures happen. If the board is in a near-constant state of mayhem and flux because the sales director makes a list of "super urgent" bugs that have come out of a client meeting (because, of course, categorisation of bug urgency is not something mere mortals can really handle - everything is always urgent) and the art director has suddenly decided to make another list of visual flaws he's spotted, and so on, then no one can really get anything done because it all surprisingly quickly turns into a mess. I find Trello enables this sort of behaviour because the barrier to entry is so low, and I say this because I've seen it happen several times.

As I said upthread, Trello is adequate if you've got a project manager vigilantly pruning the board - but if you have the resources for a project manager able to do that, then why not just get them to use something that's really much better suited to the purpose?

Anyway, this is just my opinion based on my experience. Trello is a good tool for certain things. I don't think it's a great tool for managing a software project with a team of more than about three people, and even if you can make it work, I think most teams would really just benefit from using either JIRA or equivalent, or maybe GitHub Projects (which I haven't tried, but it looks quite good).

Thanks for your reply.

This actually makes it super clear, thanks for expanding!

What do you think about this:

Based on what you've written, for companies that are married to Trello it almost sounds like there should be a 'staging' board and a 'production' board where the process failures you allude to can happen on 'staging', but the devs really just see 'production' -- and as soon as stakeholders stop interfering for a while they start matching. :) Then the vigilant PM can move things over to production as they figure out wtf just got 'committed' to staging. (This sync and the fake access may require some kind of automation).

Thoughts? (I know this is off-hand. But in a way I kind of like the power of important people to directly fuck with a todo board. There are so many broken processes where unimportant things are worked on and important things get pushed into a backlog. I mean there's a reason the people you mentioned got the access to fuck up the board in the first place, isn't there?)

This is veering kind of off-topic and I do feel I understand your point very well now, so this is just kind of a hypothetical. Thanks for your answers.

I think a Trello board for non-technical stakeholders to raise a load of stuff is probably a fine idea, and almost certainly better than hastily firing off emails that will disappear into a blackhole, as you mentioned earlier.

As long as that board doesn't interfere with an actual development sprint board, I would be totally happy!

Thanks for all your answers - this was interesting. :)
Post-it doesn't even stick properly after the 2nd time

Give me an online tool any day, I work in software development, not in arts and crafts

I worked in a place once that had both a whiteboard with Post-Its and JIRA. The two weren't especially well-integrated. (The same place also had a 45 minute standup - often featuring Post-It note rearrangement and concomitant sticking issues - every morning at about 10.30 which, given their deliberately lax office hours, meant you didn't really need to worry about working before lunch. I was supremely well-informed about news and current affairs during that three month contract.)
To me a digital version is a shared google spreadsheet. Both work well.
unfortunately, there is no one good tool. you'd have to use a combination of Asana, JIRA, and something like Productplan.

it is quite interesting to see that no one has yet created one that combines all three in a simple / minimal interface.

unfortunately, there is no one good tool. you'd have to use a combination of Asana, JIRA, and something like Productplan.

it is quite interesting to see that no one has yet created one that combines all three in a simple / minimal interface.

simply look at the tools you can find on Github or similar: issue tracker, wiki, versioning of release, etc.
Let me answer those with what we are currently doing in our remote startup:

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).

not tools, however these are the best: your brain, your mouth and some things you can write with. Maybe a computer.
The computer would certainly help convey the speech and writing to the remote team.
Individuals and interactions over processes and tools.
Definitely this.

Responsible people who care about the work and have a spine when required are what keep projects on track.

1. Know what each other are working on? (progress/blockers)

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.

Post-its are hard to beat because they function as a backdrop and everyone walks by a couple of times per day, whether they want to or not.

For remote teams that run on Slack, give http://www.slash-done.com/ a try - a good friend of mine had this built after missing a simple way of having everyone check in once their tasks were completed.

Incomplete problem statement. Project size plays a big role.

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.)

200-2000 person projects may be what the big guys do but that does not mean it's a good idea. There's bound to be massive inefficiency with large numbers of developers working on the same project. The resulting software will reflect the complicated political structures required to organize that many people and will suffer greatly for it. Small teams are the most successful at producing quality software in a reasonable time frame regardless of problem complexity.
Small team here.

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.

Yeah we used to use Jira for a < 10 person team mostly based on my insistence and it ended up being too much tool for our needs. I begrudgingly agreed to switch to GitHub issues and it ended up working very well for us.
I'm pretty surprised to see so many people recommending post it notes or a whiteboard. Even if you aren't remote, people are going to have sick days or WFH days and "can you take a picture of the whiteboard for me" requests are nonsensical.

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.

Tools don't keep projects on track. Communication skills and project management skills keep projects on track.

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.

>Tools don't keep projects on track. Communication skills and project management skills keep projects on track.

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.

Another dark side to tools is that they are a vector for procrastination. You can convince yourself (or justify at least) that you need a new X and that's the answer. You'll spend a few hours evaluating various Xs.

You might end up using it for a few days but then you quickly fall back to the tools you usually use.

I've seen this with email clients, todo apps, project management tools, etc.

True. Tools paralysis, like analysis paralysis ...
Analysis of tools paralysis!
The first thing you will get for raising a issue, is a slap over the head for "bringing everybody down" and "not thinking positively".

Many managers view incursions of reality upon there vision as a personal attack.

You are right though, good communication is the best approach.

There are ways to raise an issue. An easy method is to question the reasoning with an open mind. Point out flaws in the plan without it being an attack. It's more likely to be viewed as an attack if raised in front of people.
I've successfully used Pivotal Tracker for my last three startups. It's an opinionated tool whose opinions don't always match mine, but it works well, and I've scaled it to teams up to about 15-20 participants. Beyond that, it seems to get bulky and hard to work with, but I don't know if that's so much a limitation with Pivotal, or with how I've tended to use it.
'On track'? Really? Dude it's 2017, not 1997.
Most modern software development methodologies have elements to address your point 1. For example Scrum has daily standups that specifically inform every attendant about progress and blockers. Kanban mandates that you visualize your workflow with a board.

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.

Post-it notes are an absolutely terrible mechanism even for a small colocated team. Trello is barely sufficient. It's a digital task list, not project management. I'm sure everyone is deliberately thumbing their nose at enterprise tools like JIRA, but I consider it absolutely essential. Take the time to learn how to use it. Pick a workflow that works for you and just enforce discipline. It can do release management. Even in an automated way with Jenkins plugins. Pair it with bitbucket and you can create feature branches from the UI for each ticket. You can easily match commits to which feature they were for.

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.

At my job we use https://clubhouse.io which is basically Trello but with a lot more helpful features

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

I've worked on several remote teams and for keeping up with each other the best combo I've found is a daily chat based standup, optionally with a standup-bot. Along with a ticket tracking systems with an in-progress state + a dashboard layout that includes your teams in-progress stuff.

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.

We have a stand up bot (geekbot). Coupled with a jira bot that posts-back ticket information if tickets are mentioned in the stand up, it makes for a good experience.
About a year ago, I took over a small team of 3 developers that was floundering and demoralized. This was not a remote team but I think that's incidental for the most part. I admit I'm writing this mainly as a testament to my own experience. But I think it includes some sound advice (a lot of which I collected from Hacker News discussions over the years.)

Process is key. Tools should serve the process and the team. First thing I did was to put together a basic scrum process. This had an immediate positive impact that has persisted. Some recommendations:

- Respect your team members. Give them the benefit of the doubt. There have been some good threads on HN about the distinction between being a dev and a manager.[0]

- Short daily standups: no more than 10 minutes, just the three questions: Did? Doing? Blocks? We do them in-person in the office, but I also do them over email with some of our contractors.

- Regular sprints (I like two-week sprints) with focused, structured demo, retrospective, and planning meetings.

- Retrospective meetings with developers and product owners that identify pain points but emphasize fixing the process not blaming or fixing individuals.

- One-on-one meetings every other week with members of my team and with my manager.[1]

- Weekly grooming meetings: product owners and developers together review, size, and prioritize stories.

- Projects are managed in Trello: cards are either user stories or defects with acceptance criteria.

- Issues are tracked and documented (in Github). I set an example for my team by thoroughly documenting issues and emphasizing best practices.

- Developers don't work on anything that doesn't have a Trello card (we have an action item card for small one-off tasks.)

- No burndown charts!

A lot of these practices I carried over from my previous job, where we used scrum but, because of laziness and laxity on a few points, ended up with a pretty dysfunctional team.

My only real innovation was the "No Card/No Work" rule. I think it's essential. It both stops managers and stakeholders from derailing the process. And it provides a record and reference for the team's accomplishments. Coming into an existing team, I made sure I was flexible and accommodating in implementing the new process. But this is the one point on which I told my manager I needed to be firm. We agreed to leave a little bit of room in each sprint for any urgent stories that might come up. It's worked out well.

Finally, my managers support and respect the process. Commitment was one of the keywords that was emphasized when I was first trained in Agile Scrum and I appreciate the significance of it now. Without the investment and commitment of management, this would probably all be futile. For larger goals, we created an Epic board that my manager likes to use with senior management. Trello is great because it visually reinforces the reality that priorities are a queue and if you push some urgent new job to the top, everything else in line is going to get pushed down and delayed. It's funny how easy it is for people on high or under stress to ignore that basic law of nature.

[0] https://news.ycombinator.com/item?id=3407643

[1] https://workplace.stackexchange.com/questions/32765/what-is-...

Great post. I am in the situation and can confirm that this works. I don't do the 1-on-1 though but will introduce them soon. It's a great idea.

How involved are yiur developers in the design process? Do they work in a whole story from a to z or do they get handed over requiremebts, ux and ui and then only work on the inplementation? I am trying to get a real a to z process in place, but its quite hard

We have the luxury of having a good UX/UI designer on the team so I am happy to defer to her on design questions. These should be spec'd out in the Trello card as a checklist and mockups attached in an easily readable format so that any questions can get addressed and hashed out in the grooming meetings.

In teams without a designer, I'd recommend picking a well-documented frontend framework like Bootstrap to establish a baseline and make sure there's a functional UAT process in place.

As far as getting a process in place, I agree it's challenging. Scrum provides a great foundation. But as the regular threads on scrum in Hacker News show, many orgs adopt it without really appreciating how it all fits together and as a result there's a good amount of well-earned resistance to it. At a previous company, we initially brought in a consultant for three days of in-house training. I believe it was money well spent. But we still managed to screw it up in critical ways.

I think establishing and documenting best practices is important, for both process and coding. I'm a big fan of checklists and transparency generally. A lot of my effort goes toward establishing consistency and eliminating surprises.

There's also the Joel Test, which is another good way to measure dev team health and smooth out some aspects of the dev process:

https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-s...