Ask HN: Best project management practices in 2018?

184 points by dgroshev ↗ HN
"Agile" and "scrum" were the hotness a few years back, but now it seems that the hype mostly subsided. It's reasonable to assume that the Agile practices are put in context and incorporated into the mainstream now. Are there any recent works on project management that systematically present modern best practices? What have we been left with few years since the Agile revolution?

112 comments

[ 4.4 ms ] story [ 172 ms ] thread
My personal favorite is: get sh_t done without burning yourself out or making bad decisions along the way.

Of course, it's possible that I have entirely misunderstood your question.

That works on an IC level for sure. However, a bit more structure is needed on the interface between developers and the rest of a company (especially if the company is not in a software business).
Do something small everyday. I declare the day a success after that. This has worked very well for me because:

1. doing something, anything, will move the project forward.

2. I do not feel guilty if I stop and do something else. In turn this allows me to continue the next day (well rested and without any guilt for beeing "lazy")

You said it better than I did, but I meant the same thing. I work on three+ projects at any given time in order to give myself room to do something small on each one of them every day. When I get stuck on one thing, I execute a context switch to another project and stay productive there until I hit a wall or need to think about some problem. Rinse, repeat. This yields remarkable productivity and leaves boredom in the rearview mirror.
Based on my experience (primarily enterprise level data development) Agile can work if the product is ideally suited to it. By that I mean a reasonable number of stakeholders, and documentation and the product are in a state that can support rapid iteration. When management complexity and product complexity increase I begin to lust for the dreaded waterfall, because it can become onerous just defining requirements in an environment that is particularly chaotic or troublesome.
What do you mean by "chaotic" and "troublesome" environment. Also I would be interested in how waterfall is helpful in those cases.
Not OP, but I read that as the codebase is compartmentalized poorly. Agile works best when you can dip in, fix something small, and move on. If you need to change half the codebase to do a small thing; it may make sense to combine multiple small changes together. "While you're in there...".

I do consider that an environmental 'code smell' though.

For large efforts, I've always subscribed to "define waterfall, build agile". If you don't really hammer away up-front on all the possible avenues stakeholders want to explore in an end product and get those fully listed out and vetted before even the first line of code is written, then the "agile" portion should be simply changing directions on which of those things are considered most critical to delivering a minimum viable product based on where you currently are in the overall effort.

Too often real work begins to get something concrete for stakeholders to react to (the general point of Scrum & Agile) while losing sight of the ultimate goal because it was never really defined very well to begin with. That just means more rework. Some rework is unavoidable, but so much of it is.

You can control which mountain you want to climb and you can and should select which face of the mountain makes most sense to use as your path up it, but have a way to move laterally to a safer path up if the weather goes south.

Product owner says build feature x this iteration by way of showing progress. Customer has explicitly said they are only interested in y. Whole team knows that x will have to be completely tossed out when building y. That's when agile fails. If you know what you are building it's a good idea to take that into account.
Agreed. That's the sort of rework that I think can be avoided by a good partnership between the PO and the stakeholders in the nascent stages before physical work begins.

I guess the reason why this happens is this weird psychological block in people's minds that software is totally mutable and flexible and therefore can change to whatever you want it to be, even after the fact. You'd never go into that mindset when building a physical structure, but the amount of re-architecture required to enact such changes in software can be just that monumental.

I was able to break the impasse and build trust by getting PO to agree to architectural deliverables in a sprint. He was skeptical but with some sort of defined behavior for acceptance he was OK with it.

Saying "ima go build a framework for this, back in a couple months" is usually a non-starter.

Also from reading this thread I am still convinced that you cannot jam process down people's throats and there is no single solution. What you can do is create a tone deaf hated ass-backwards process that make people quit the company.

Don’t do “projects” at all.

Instead, Everything is either an “enhancement” or a “defect” broken down into the smallest deployable chunk. These can have themes (epics), labels, and dependencies.

Prioritize in consultation with the business, but don’t plan more than a few months ahead.

This actually seems to be working for us in SaaS product management, infrastructure management, even managing packaged internal-facing “crapplications” like financials.

The budgeting, funding, and measurement practices surrounding “projects” is so broken in most orgs that you almost have to do this.

Interesting concept. But what if you start building from scratch?
It's the same thing. You start by talking to customers to get an idea of what to build, then you create a mockup of what you'll build and then show that to customers and iterate until there's demand - now you have your first set of Things to Build, and they'll all be "Enhancements" at this point, since you haven't built anything yet. Once you've done that, you get that first draft in front of customers, collect feedback, and you'll find the feedback is a mix of "x is broken" and "wouldn't y be cool". And you're off to the races.
(comment deleted)
Then there is some minimal unit of functionality you want to deliver first.
This is called Kanban I believe.
Yeah, Kanban is an implementation of this concept. But, you could do it without calling yourself kanban or using any kanban tools.
Kanban can support this, though it's not exclusively used for that. But the proposed approach is at a higher level of abstraction than Kanban.
In Japanese lean manufacturing, Kanban is an object. It's interesting to see how it's been adopted in software development as a methodology.
Yeah, the software process was developed from the Japanese manufacturing processes (which use kanban cards as singals in their inventory systems).

The basic concept is the same - minimize wasteful work in progress. In manufacturing, this is excess inventory at any point in the production pipeline. In software, this is excess tasks in a state of partial completion.

Pretty much.

The product managers and architects have to show the discipline to prioritize the enhancements needed to complete a major theme or epic.

The reality of “projects” is that they are always interrupted by other high-priority items, and months later everyone asks why it’s late and over budget.

So just embrace the chaos and make continual prioritization your “project” discipline

The problem with that approach is that your product becomes cluttered and looks old as years go by with only small enchantments and fixes. Here is a middle ground: continuous improvement with yearly strategic planning. https://medium.com/swlh/how-we-develop-products-for-3-2m-use...
>The problem with that approach is that your product becomes cluttered and looks old as years go by with only small enchantments and fixes

That's why you have to throw down a Tranquility/Jokulhaups combo every few years; get a fresh start.

Totally untrue, we actually rebuilt several complex services this way, and did a front-end refresh as well.

So long as you prioritize the starting “enhancements” of a theme or epic it can work. These early tasks usually produce architecture diagrams, API signatures, wire frames, or demo code.

Looks old?

It's called MATURE SOFTWARE.

The BEST kind of code is the kind that IS JUST FINE by itself.

Today it's more about looking busy.

You can't build something from scratch that way especially if there is a lot of research and unknowns involved.
> You can't build something from scratch that way

Yes, you can. Especially a from scratch automated system to enhance an existing business process, but also a from-scratch process and system together.

> especially if there is a lot of research and unknowns involved.

The research part is distinct, but as it produces results and those are feed into a “what do we want to do” decision making process, it absolutely can feed exactly the kind of incremental development process described, which can even operate in parallel with much of the research.

"The research part is distinct, but as it produces results and those are feed into a “what do we want to do” decision making process, it absolutely can feed exactly the kind of incremental development process described, which can even operate in parallel with much of the research."

I work on stuff where you often have to scrap three months of work and try something else. You can't do this incrementally. But I agree, once you have a rough idea where things are going you can switch to incremental mode.

How do you manage not having multiple people working on the same thing ? Do you have some way of distributing work ? Just talking informally without a central written document often ended up with people starting working on the same thing simultaneously in my company. Kanban did solved this for us.
Agile and Scrum (big A/S) have faded into agile and scrum (little a/s). The 'One True and Holy Process' has faded into a set of processes that organization iterates on. The process should be fit to the team/organization. The team/organization should not be fit to the process. Personally, I have had good luck with a mix of kanban, with multipart estimation and Monte-Carlo simulations for projecting completion dates. So far its worked well and managing change while being able to predict completion times.
Kanban.

Done correctly, it allows the product owner or manager, to rearrange priorities dynamically as long as they aren't in progress, it surfaces where resource or process issues are causing a bottleneck and there isn't as much ceremony.

Kanban is definitely much better than Scrum.
My assumption is that Kanban has ongoing demos to the product owner as work is completed. In that case, the consolidated demos in Scrum may work better when you need to gather extended stakeholders (legal, compliance, design, etc).
One of the steps in the Kanban process, before It goes to Production is UAT. If the UAT WIP Limit gets above a defined threshold it's time to do a demo and bug the people who have to do the final approval.
The primary purpose of Agile ceremonies (if done correctly) is to provide a structured way to surface and resolve resource and process issues (as well as prioritize) in a way that allows team-members to otherwise get on with their work as they see fit - without the constant threat of distraction by product/delivery managers' concerns about resources, processes and ever-shifting priorities.

If Agile ceremonies don't achieve this or otherwise excessively waste time, they're just a form of cargo-culting.

The original agile manifesto is still the best thing to go by, IMO
The original manifesto is a litany of aphorisms and position statements with little or no practical utility, and what to me appears to be a bias for what is essentially spec work at an agency.
I am glad we are on the same page.

The problem is that these don't translate well when we turn them into practical frameworks.

So how do we teach mindset?

The original manifesto makes the correct mindset super-obvious. It's very succinct and still relevant to today.

Just take the first line, "Individuals and interactions over processes and tools." Interesting how most "Agile (tm)" is just selling processes and tools and pushing people into cookie-cutter roles.

Even better is what I consider "line zero": "We are uncovering better ways of developing software by doing it and helping others do it," (emphasis mine). The lesson there being that the best people to teach you how to develop software are, in fact, developers (not managers, execs, consultants...).

Track what you have to do such as keeping a TODO list or a list of tickets or a Kanban.

Communicate well and with others.

Write down things that you forget. Keep notes and keep a physical notebook.

Don't come into a discussion mad.

Treat people with respect.

> "Agile" and "scrum" were the hotness a few years back, but now it seems that the hype mostly subsided. It's reasonable to assume that the Agile practices are put in context and incorporated into the mainstream now.

Well, “reasonable” perhaps, but AFAICT still wrong. Agile was defeated by the same kind of cargo-cult, one-size-fits-all, consultant -pushed practices that the Agile manifesto railed against.

Elements of Scrum, deployed in a decidedly non-Agile way, have become part of the mainstream, though.

I couldn't help thinking of Jesus and Christianity here—although the analogy has some ludicrous aspects. I guess this is a universal (anti-)pattern in human affairs.

Christianity became at every point a near-opposite of anything Jesus stood for - later Christianity has meant the 'gospel of success' and wordly prosperity, priests in gold-encrusted palaces, polytheistic worship of Mary and the saints, Greek-derived theology (heaven and eternal life is straight out of Plato), angels etc.

H.L. Mencken on the subject:

Treatise on Right and Wrong, 1934, p254-5:

The mob, having heard Christ, turned against him, and applauded his crucifixion. His theological ideas were too logical and too plausible for it, and his ethical ideas were enormously too austere. What it yearned for was the old comfortable balderdash under a new and gaudy name, and that is precisely what Paul offered it.

Notes on Democracy, 1926, p66-7:

Christ, we are told, preached no complicated mysteries and demanded no pedantic allegiance. He knew nothing of transubstantiation, or of reserved sacraments, or of the adoration of the saints, or of the vestments controversy. He was even somewhat vague about original sin. Alive today, could He qualify as a bishop? He could not. Even the Salvation Army would put Him on probation, at least until He had mastered the cornet. Even the Christian Scientists would bar Him from their auctionblock, at least until He had got a morning coat and paid cash for a copy of “Science and Health.” What would the Congregatio Sancti Officii say of His theology? What would the Methodist Board of Temperance, Prohibition and Public Morals say of His ethics? What would Monsignor Manning say of His patriotism, or of His economic views, or of His probable opinion of the great spiritual filling-station on Morningside Heights? What these high authorities would say, I venture, would be a plenty.

I think the Agile Manifesto is still valid and a great guidance. Also, the principle that between features, delivery date and staffing you can plan for two ahead only, but but not all three.

Unfortunately "Agile" as practiced is almost the opposite in most cases. With traditional waterfall at least people thought about things upfront. With the way a lot of companies do Agile there is no place left for thinking, it's more like mini-step waterfall without upfront design.

Simple rearrangeable list with a completion status per task. That seems to work for us at https://usebx.com , as long as we get the granularity right (i.e. each task is assigned to exactly one person).
I think the best project management practice is: "Don't adopt entirely new project management practices every year." The caveat being: do what works for your organization. Iteration on process seems to be a good idea all the time.
I'd go for a Kanban-like approach augmented by a tool that isn't as bare-bones as Trello. Clubhouse is my personal favorite.

Also, a trend/mindset that should have taken over (but hasn't) is http://asyncmanifesto.org/ . Generally it is a must if any % of your dev team is remote-based. Else at least one part will suffer.

> It's reasonable to assume that the Agile practices are put in context and incorporated into the mainstream now.

Not in the slightest. The ceremonies are widespread, but the principles you need for them to be effective are not. Read the Agile Manifesto[0] and compare that with, say, the horrors of SAFe[1] that "Agile" consultants tend to inflict on organisations. They are essentially the opposite of one another.

[0] http://agilemanifesto.org/ [1] http://www.scaledagileframework.com/

Can you elaborate on why you don't like SAFe? I'm really curious to hear your thoughts.
I'm interested as well. 2012/2013ish I was a consultant at Org A that deemed themselves "agile" - in reality a very highly functional agile organization. I've yet to see anything quite like what that org had going for them.

Current company, we literally just implemented SAFe and now that I'm learning the ins and outs of that ... Org A was either SAFe before SAFe was cool or even existed or they are the Satoshi for SAFe. The similarities between what I see preached in SAFe versus Org A are scarily similar and when implemented - highly successful.

It's difficult to explain succinctly. SAFe is the embodiment of the kind of enterprise bureaucracy that agile was rejecting. Take a look at the principles espoused by the Agile Manifesto:

* Individuals and interactions over processes and tools

* Working software over comprehensive documentation

* Customer collaboration over contract negotiation

* Responding to change over following a plan

Now imagine what the exact opposite of this would look like, and then take a look at SAFe.

SAFe both directly incorporated process evaluation and improvement and recognizes that the process starting point appropriate to different orgs in different tasks is different, and even in its framework doesn't dictate low-level team process though it describes what process combinations are common, so it seems to, as much as a canned starting-point process can be, be a fairly robust concrete implementation of Agile Manifesto values (it's arguably, though, more Lean than Agile, though I'd argue Lean’s focus on well-defined processes with continuous, team-involved evaluation and improvement is the best operationalization of the Agile Manifesto’s “individual and interactions over processes and tools” (remembering that the Manifesto’s “over” statements are explicitly about priority, not one thing instead of the other.)
Most of the concepts in that diagram are in direct contradiction of the agile manifesto.

For example, a scrum master is supposed to ensure a team follows agreed processes, in direct contradiction with one of the four values of the agile manifesto:

Individuals and interactions over processes and tools

A scrum master is someone running around dictating that everyone stick to processes. Usually that were "agreed" by management (i.e. dictated)[1]. This is also in direct contradiction to several of the principles.

I also love how the customer is shoved in the top right of the diagram, as far, far, far away from the developers as possible. Agile value 3:

Customer collaboration over contract negotiation

[1] Scrum itself is so far from agile and in direct contradiction of the principles I have no idea how they managed to convince everyone it's an agile methodology.

> For example, a scrum master is supposed to ensure a team follows agreed processes

Ok.

> in direct contradiction with one of the four values of the agile manifesto:

> Individuals and interactions over processes and tools

But its not in contradiction. Agreed processes are the outcome of individuals and interactions, not dictates from authority external to the team. The individuals and interactions are superior to, and directing, the processes and tools; that is consistent with the line quoted from the Agile Manifesto, especially when considered with the line everyone forgets that immediately follows the "X over Y" statements: "That is, while there is value in the items on the right, we value the items on the left more."

The Manifesto is not calling for rejecting clear, well-defined processes in favor of chaos. Its calling for making process serve the team rather than vice versa.

Well, that's an impressively convoluted way of justifying doing the exact opposite of what the phrase says.

The principles make it even clearer.

What's especially damning about Scrum is that there's courses, and prescribed tools, and prescribed processes. Exactly the opposite of what the values and the principles argue for.

The hype has subsided because so many organizations adopted the shell of an agile methodology (oftentimes scrum, having meetings called standups and things called stories), paid lip service to its tenets, but never actually incorporated the core concepts in how they work.

So that said, I'd say modern best practices are still agile. The trick is recognizing and convincing an organization they aren't actually practicing agile, they're practicing cargo cult agile, and to get them on board with the necessary changes.

That said, if anyone has any good resources on how to explain and affect that change, convincing higher ups who believe that they're already agile that in fact they're just cargo culting it, and to instead implement the scary changes that are required to truly be agile, I'd be interested.

Right now I'm at a place where agile is done well. But over the years as I've seen management consultants come through different organizations, I've learned how it's done: Rather than convince people that they never understood and practiced the old concepts, you instead give the old concepts new names. Then they don't have to say "we're finally doing what we talked about years ago", and instead "we're adopting this exciting new thing!"
That's brilliant. Sadly, in some sense, but the logic checks out. It highlights how multi-dimensional the problem of persuasion can be.
I've tried similar things, but any time it's been communicated upwards the response has been (essentially) "That sounds scary. Where's the research that says that'll improve things over this awesome agile thing we've been doing and that all the marketing buzz says is awesome?"

I totally am in agreement that you have to treat it as some new thing (rather than them just doing the old thing correctly, instead of incorrectly as they have been), but even assuming they were on board to consider it, it gets tricky. Do you just rebrand agile? Then they're going to screw it up the same way. Do you take a more prescriptive approach, that this new 'eliga' (agile spelled backwards) process means we do it -this- way? Because then you're not really doing agile, and teams that need to operate differently are not going to be as productive. Etc

I think Agile and Scrum (and Kanban) are still in ascendance and I think that as it percolates throughout enterpises, businesses are actually starting to understand that going through the motions of Scrums doesn't make you agile.

I still push Scrum on new teams and I think it works well, but you can't just push it down (on dev teams) and not also push it up (on stakeholders). They need to understand the value of the iterative, quality-first approach and having to accept some uncertainty on delivery timing. That's not even an agile thing, that was made clear with the Project Management Triangle decades ago. You want quality, you have to flex on scope or timing. Either set that expectation first or your execution team is doomed. If you push a quality-first approach but still have a fixed scope and timeline, you are now in death march.

I'd say for starters, Scrum because it gives you a framework. After you get used to the Agile methods, just tailor it or switch to Kanban.

I jumped on the Scrum bandwagon in 2008. It was refreshing after so many years of waterfall! I have introduced it in 3-5 companies during the years, but sometimes it just feels rather restricting (after you get used to it) in recent years we started leaning towards Kanban-style, but we are still using methods like planning poker, checking velocity, and doing standups. And of course if you're not remote, you still need a taskboard - shameless plug, we're selling reusable storycards for this!

http://www.storycards.co

for projects as service ( like consulting ) use kanban but incorporate epics and sprints where epics are communicated to the client as just "phases" and sprints are internal to the developer team.

your PM should also be able to do at least some solutioning. The best projects i've worked on where ones where the PM was also the Solution Architect.

Every projects gets a TL ( tech lead ). This is the PM/SAs right hand goto person. The TL handles the design and implementation of the SAs vision. They also manage task delegation to the dev team, and acts as their escalation point. The TL must be able to get up in front of the client and explain technical jargon in a way the client understands it.

process = Kanban + epics/sprints Staff = 1 PM/SA, 1 TL, Dev Team

I've seen the above work very well in consulting for projects in the $2-3M budget range.

Over years, I have been on both the sides, management, and development, in software companies. These methodologies are guidelines, and to be tweaked based on the company culture, team dynamics etc. For me, successful implementation of the methodology is when I looked beyond the planning & reporting aspect of teams. Important questions are, Do you have distributed teams vs collocated teams? The maturity of the team members, years of experiences in IT, working together? current collaboration and communication challenges between team members, intra teams and teams and management? If you spend time in analyzing these questions, you have good chance of success.
tl;dr Agile is still becoming the "hotness", it just takes time.

In the enterprise space Agile is still going through it's growing pains. I was in an org a few years ago which was technically implementing Agile, but what they were really doing was what I would call "micro-waterfalls". It will probably be 10-20 years until enterprises have something that resembles what was normal in smaller organizations in 2015. The real challenge will be the lack of formality around documentation and decision making. That is not natural for large organizations.

Can anybody suggest any management practises for single person projects? While you could do Agile / Scrum, elements of them (the meetings) are certainly not applicable. I've heard of Getting Things Done, which seems to have parallels with agile.
I have started practising GTD and have found it great so far. I recommend you pick up David Allen's two books. Takes a weekend to cover them properly and another few days to shift approaches.
I really like the theory of constraints, as espoused in books like The Goal by Eliyahu Goldratt.

It's more of a philosophy than a set of tactics, but I've found that it applies quite well to any process that involves projects having to pass through multiple teams in order to become something valuable to the customer; which includes most software.