Can agile help a lone developer who codes as a hobby? [closed] - agile

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
Agile development is a very useful methodology. Is it realistic to apply this to a lone developer who codes as a hobby (I also code for a living in a team where I have learnt agile from)? Things like stories, scheduled retrospectives, etc, can be useful (Even if I am asking myself things)?
Thanks

Yes, Agile is a lot about Getting Things Done (the real meaning, not the book, see below). It's about getting trough procrastination too. I've found that Agile methodologies tend to solve mostly psychological problems. In fact, most problems we encounter in software development are not technical, but psychological.
I have many projects where I'm the only one involved, and yet I've my own backlog, sprint backlog, my own information radiator, I apply the same "done" definition rules, reviews, retrospectives, ...
But no, I'm not doing standups meeting alone or with my cat :)
I've read many books about productivity improvements before I discovered agile methodologies. And what I've observed is that agile is very similar to them.
For exemple, Scrum is a lot about Getting Things Done, and others well known books on the subject.
That book certainly saved my life at a certain point. So get it and read it. It will helps you "get it", I mean, understanding what Agile means. Trying to do Agile not understanding it will leads you to failure.

Certainly, though some of the practices may not apply or may feel a bit silly.
Breaking your work into stories and timeboxing your development can definitely help even if your all alone.
Test-Driven-Development is really an individual process anyway, and certainly is useful as a solo developer.
Pair-programming would require schizophrenia however. Daily standup meetings would probably go much more quickly...
There was some talk of this on Ward's Wiki years ago, which might be worth a look.

Is it realistic to apply this to a lone developer who codes as a hobby (I also code for a living in a team where I have learnt agile from)? Things like stories, scheduled retrospectives, etc, can be useful (Even if I am asking myself things)?
Definitely yes and it worked for me. I have tried doing it myself and it definitely makes me more productive. A good way to try it without the need of buying a whole lot of office supplies is using ScrumWorks (google danube) which is freeware for the basic version. You can add products, releases, user stories. tasks, and see burn down charts etc.
Doing a retrospective by yourself would be a little weird and it may make people in your house think you are losing your marbles while you talk to yourself out loud but that is just my opinion. What I do is I write down the Retrospective notes on a soft document and attach it to the Sprint or a Backlog in ScrumWorks.
Hoping this will help you.

Related

What good practices, if any, has the agile movement lost? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I am a long time agile advocated but one of the things that bothers me about Agile is that a lot of agile practitioners, especially the younger ones, have thrown out or are missing a whole lot of good (non Scrum, non XP) practices. Alistair Cockburn's style of writing Use Cases springs to mind; orthogonal arrays (pairwise testing) is another.
I read mostly Agile related books and articles and work with mostly Agile folk ... is there anything I'm missing?
It might be interesting in 5-10 years time to see how maintainable these systems are when nobody wrote down why a particular decision was made and all the people involved have left.
is there anything I'm missing?
Yes, I think a lot, but only if you are interested in Softawre Development Processes.
I like this paraphrase:
Each project should be as agile as possible but not more agile.
Not every project can be agile... but I think 80%+ can.
I see Agile as "car of the year". It is very well suited for most of the people, but if you need/want something special, for example car able to speed 300KM/H or car able to carry 20 tons of goods you need something else.
There is also so many cases when one may want something else than "car of the year" that requires a book to write them down :-) I recommend you Agility and Discipline Made Easy: Practices from OpenUP and RUP. In this book you'll find many "missing parts" very well illustrated. The key to understanding is that Agility is only a (requested) property of software development process which sometimes cannot be achieved. The book describes several Key Development Principles (which are basis for RUP) and explains which level of "ceremony" and "iterativeness" follows from using them on different levels of adoption.
An example
Practice: Automate change management and change propagation
In your project you may require very advanced and strict change management and decide to "Automate change management and change propagation" by implementing custom or re-configuring existing tools and by using Change and Control Board.
Effect: This most probably increase level of "ceremony" in your project.
(...) have thrown out or are missing a whole lot of good (non Scrum, non XP) practices.
Scrum is not prescriptive, it's up to you to choose how to do things. In other words, nothing forces you to use User Stories for example (even if User Stories work for lots of teams, there is no consensus) so feel free to use (light) use-cases if you think they are more appropriate in your context. To illustrate this, Jeff Sutherland reported he would never use User Stories again for PDA device projects (they use some kind of "light specifications" in his current company). And the same applies for testing, use whatever works for you. To summarize, if you find XP not flexible enough, use something else... and inspect and adapt.
Iterative development.
In practice, agile teams may do iterations (or anything for that matter, agile is a kind of "true scotsman"), but agile processes don't require or define iterative development sufficiently.
Take RUP, for example - clumsy and bloated, it does compile a few good methods for long-term development that agile misses.
On a general note, agile is a way to steer clear of problems: how to avoid long term planning, how to keep teams small, tasks short, customers involved, etc. It works more often than not, but sometimes you have to face and solve problems: how to reach strict deadline, make big team work, achieve distant and complex goals, make customer refine requirements. That's when one needs to look beyond agile.

Where's the definitive resource online about how to carry out Agile development? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I want to start Agile practices in a team. I'm assuming the information is available for free online about how to specifically carry it out.
Online I can locate the manifesto, the alliances and corporations involved but where is the actual central guide or root instruction set about how to do it? (Maybe the practices themselves are more ethereal or subjective than I expect and it's found in multiple places?)
Edit to summarize solutions:
Agile is a concept so that's what's to be found online about it. However specific processes or methods of Agile development have been created like Scrum and Extreme programming to provide concrete solutions to teams who want to adopt Agile and reap its proposed benefits. Find the shoe (or method) that fits best. Maybe create it.
If looking for solutions online to implement Agile development in your organization or for your project, seek out the specific methods too and decide among them.
There are numerous Agile methods.
Not one. And nothing definitive on something like "Agile". That's like a definitive guide to "Honesty".
Read this for one Agile method that some folks like: http://www.controlchaos.com/old-site/Scrumo.htm
Alos, there are numerous non-Agile methods. They'll all have a form similar to this: http://en.wikipedia.org/wiki/Waterfall_model
I agree with S.Lott. There are lots of Agile methods, not the one Agile method per se. Likewise I wouldn't know any central guide which covers All You Ever Wanted to Know About Agile.
I would actually recommend a book here. The one I found gave a pretty good introduction into how to go agile was O'Reilly's "The Art of Agile Development". Mind you, yeah, it is a book and therefore costs money, but not so much that it wouldn't be worth it if you really want to learn something.
There's nothing like specifically carrying out Agile. It's a bunch of methods and ways that you can adapt (or choose not to adapt). Some of them are more important than others, specific methods (like Scrum) define a couple of must-follow rules, whereas you can just as well pick what you think works best for you and see how it turns out.
I would actually recommend starting at one point with a good definition of Agile (the one at Wikipedia seems fine, along with a list of Agile methods and practices) and reading up on all the methods and practices from there. There will be googling involved.
Here is a good resource to learn about Extreme Programming which is another agile methodology.
Here's a downloadable book by Henrik Kniberg on Scrum and XP from the Trenches which describes in detail how his team did Scrum. When we implemented Scrum it was useful to have an in-depth look at what another team had found effective.
There is no definitive resource for all agile methods - as there is so much diversity in the methods.
The people that came up with the word "agile" didn't actually have that much in common - so it's not as though there's an "international headquarters of agile"... ;-)
It depends which one you want to know about: Scrum or XP or Crystal or one of the other methods... some of them are quite different from each other...
For Extreme Programming - the original XP material (and many of the experts) wrote it up at http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap
Scrum: The Scrum Alliance is pretty much the definitive place for Scrum http://www.scrumalliance.org/
Crystal is by Alistair Cockburn so look for stuff by him. I don't know much about how to do crystal, but Google likes this: http://alistair.cockburn.us/Crystal+methodologies+main+foyer
Don't start out by reading a bunch of different methods you haven't tried out and mixing together the bits you like - a mistake that's far too common. That results in random chaos.
Best way to start:
Look at some agile methods
Pick the one you think is most practical to adopt in your circumstances.
Try doing it by the book for a while - say for at least a month.
After you've been doing it for a while, you can get the team together to run a retrospective to decide what to improve - or what to try instead.
Recommendation (assuming you don't have experienced help on hand)
Scrum is pretty easy to get going. You can set it up in about 2 days if you're familiar with the basics.
Maybe after you've done scrum for a while you can start phasing in more of the XP practices. In any case, scrum doesn't have anything to say about technical things like the code, testing or refactoring - so once you've got the scrum basics down, you could start rolling in some XP practices. I think Test-Driven Development is the first one to start with.

Is Scrum effective on a team where all of its members are amateurs? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
We have proposed to use Scrum in our IT Project and our Adviser asks us if it is appropriate to us because we are still amateurs.
Is it appropriate to us Scrum even if we are amateurs?
The discussion is usually agile vs. waterfall, right? I am linking an article, but it is in Portuguese, so I'll try to transmit some of its ideas:
Waterfall is like chess. You think and plan a lot, try to foresee every possible issue as soon as possible. There's a lot of planning, but makes sense only on stable and well-known domains, where change isn't much expected.
Agile is like soccer (or many collective sports): decisions are made in-game and should be done fast. There's no much time to analyze every consequence. It is "ideal" for dynamic and unstable domains, where change is always expected (web applications, for instance, tend to fall in this category). Another point to note is: even if you have the best players, if they don't do well as a team, you won't be the winner.
IMHO, Scrum would be useful, because:
Once every two weeks (or every month, depending on iteration time) you'll be able to see what's working or not. And this is very valuable, specially as an "amateur" team, which is expected to be learning and finding things out much more constantly.
As amateurs, you probably won't be able to foresee everything (and that's something agile embraces)
There's more space for sharing experience (stand-up meeting, retrospective, and even planning meeting). And you share REAL experience (you must write code every week rather than just plan)
Here's the rub. I think Scrum is going to be tricky not because your team is a bunch of amateur developers but because your team is a bunch of Scrum amateurs. If you have an experienced Scrum Master, your team may reap the benefits of Scrum. Without a point person with Scrum experience, however, there's going to be overhead in learning as you go and more than likely you will get off the Scrum path quickly. At best, you will exercise a modified-Scrum approach (which isn't necessarily a bad thing.) I don't mean to sound negative or doubt your team's ability to practice Scrum, it's just best to have someone with prior Scrum experience before your team dives in. Best of luck.
Scrum, along with other agile methodologies, is not appropriate for a team that consists of students or otherwise inexperienced people.
Wikipedia has a good section on the suitability of agile software development. Barry Bohem and Richard Turner, leading software engineers, wrote a book that includes factors that can help determine if a plan-driven or agile methodology is better on a given project. One of the cases where plan-driven methodologies stands out is with junior developers, which includes students and amateurs.
Now, this doesn't mean that you need to use only a plan-driven approach. I personally think that the most important thing you can do is to find a process that works for your team. You can probably incorporate agile approaches - test driven development, continuous integration, pair programming - into a plan-driven environment that visits each lifecycle stage once.
I disagree. Scrum is better in a situation where
you can depend on the "players"; and,
the requirements might very well be changing underneath you.
A college type project generally has pretty good requirements AND the potential of flaky team members.
Further, you have to think about the purpose of even doing the project in that setting. The students need to think, plan, and discuss how things are going to work before they start diving in. Finally, scrum works best in a close knit, fast paced environment with constant communication. Which is unlikely to happen on a school assignment.
Scrum encourages a "let's just start" programming attitude which, again, is fine when you have experienced professionals working on it that through experience know the pitfalls to avoid up front.
No one says you have to fully implement SCRUM.
I can say from personal experience that SCRUM is great for 'amateurs' :) . At my 4th semester, we had to make a project in the scope of 4 months. Our group of 4 managed "semi-SCRUM" like this:
Sprints were of 2 weeks
No daily stand-up meetings (We were physically close, so we took everything on the fly)
All sprints had a headline from the start of the project. These were our milestones.
We had 2 weeks of buffer time, since we expected to delay :)
SCRUM itself is rather complex, but the ideas of sprints, part-deleverances, leadership and the likes are great. It doesn't really take more than a day for everyone to understand these concepts. For us, SCRUM made sure we had a top-notch project ready by the deadline, with tons of feedback during the development. Top grade too :)
There will always be some team dynamics to get worked out for how things like the daily stand-ups, storyboard and other Agile practices mature in a group. The big question to my mind is whether or not you have enough time to reap some of the benefits that comes after a few sprints and some rhythms have formed within a group. I would suggest at some point calling in someone more experienced with Scrum to give feedback about how to improve what you have as part of the methodology is to grow and evolve over time, IMO.
So, it is fine for you to use Scrum and see how it goes. After all, everyone has to get started somewhere and various modifications on the methodology are common to my mind. There is something to be said for how you'll walk the walk which may be easier or harder than you imagine. Good luck and I do realize this is echoing a lot of Ben's excellent answer.
I think your main problem is going to be in the estimation and tracking to the planned sprint duration. In the past, I’ve found that when resources are not intimately familiar with the coding environment they’ll be working in (this can happen with professionals adopting a new technology), it’s very easy for sprints to go off the rails. Task breakout estimation becomes guesswork and consequently it becomes very difficult to run sprints to plan.
Having said that, there are elements of Scrum which would be very useful in this environment; daily standup meetings and iterative releases are the ones that come immediately to mind. Personally, I don’t subscribe to the “do all of Scrum or you’re not doing Scrum” mantra. Be pragmatic in your approach and pick elements of the methodology which will work for you. Make sure you incorporate the continuous improvement component of doing sprint retrospectives so you can proceed with the assumption of refining and enhancing and you’ll be heading in the right direction.

What can a single developer learn from Scrum? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
Let's say that a developer is interested in learning Scrum, but nobody else on the team is interested. I realize that Scrum is made for teams, and the process would have to be modified to fit a single person.
Is there any benefit to be gained by the developer trying Scrum, even if the team doesn't? If so, how would the process be modified to suit the situation?
I think there's benefit to be gained by any method that helps you develop goals, tasks, keep on top of work and deliver something often.
Your individual work-products would gain the same advantages that teams gain with scrum:
You'd get something done every {Sprint Iteration Period Here}, something you can hand off and say "This is now ready".
Your estimation technique will start to improve with reflection and retrospectives
You'll start to plan your day and make commitments to yourself about getting things done, so again your estimation of your capacity will increase
Retrospectives will formalize improvement of your personal work process. You'll start actively improving, removing and adapting to suit you and your individual needs.
You wouldn't be able to rely on other team members to help out, which is a bit annoying, and you wouldn't have a product owner, Scrum master or a backlog to pick tasks from. You may not even be in a position to make decisions on what to work on next. But I think the formal discipline and reflection is helpful for all craft practitioners, at all levels, alone or in groups.
And who knows, you might even inspire your team to Scrum it up once they see what great results you're getting.
I would suggest that you use Extreme Programming instead, as that works better for one programming than a decidely team-based process.
Then you can get the benefits of being more agile, but if your team is not agile then you will have some issues due to the use of a different paradigm.
For me, the biggest key was getting buy-in from my supervisor. It can be tough to try and have some sort of Sprint only to have it interupted multiple times (Supposedly XP teams handle this better, but I don't think any developer does.). Also, don't forget to include either power users (they could be testers) or members of other departments that could be used as Product Owners. I like to sit with other users and do a type of paired programming (OK they don't code) where I can ask questions while coding and do quick demos to get feedback. This helps when I'm struggling to create specs because those requesting the app are having a hard time telling me what they want.
Even if it's just you in the daily stand-up, it can be scrum.
If you compare yesterday's planned with actual and define today's plans -- without talking to other people -- that's still a kind of daily stand-up.
I'd say that what you're doing probably is scrum if you're following the daily-sprint-release cycles; even if there aren't a any other people to talk to each morning.
G'day,
For the best thing to come out of learning Scrum is the concept of involving the customer early and often. That way there are no nasty "that's actually not what we wanted" moments when you deliver to the customer after six months hard work.
HTH
cheers,

Please define the agile concept of core hours [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I'm in a new contract where they seem to have gone overboard with Agile, including hiring a consultant merely for facilitating Agile processes. Something he is instituting is a notion of "core hours" where we will all actually be in the same room together. Is this really what "core hours" constitutes? I ask because it's highly inconvenient to pick up my laptop and go to this shared location for half the day; I always thought "core hours" meant you were available, not necessarily in the same room, from 9:30 to 4, for instance.
Yes and no.
Core hours are the period(s) when all team members commit to working on the project (and not doing administrative stuff or other projects). For many teams, this will imply being in the same room, but with proper planning and the necessary infrastructure, the team can work well from different locations.
I think what you have is an extension of the "core hours" where you are. The idea of being in the shared location is that ad-hoc meetings could occur as well as possibly being within earshot of various discussions so that you can jump in if it is something where you think your opinion or knowledge would be useful, e.g. why was this coded like that? or why do we have this requirement? kind of thing.
I'd like to think that I'm up to date on the Agile world. In reality I am not. With that being said, I'm not so sure this is an agile concept but rather a convenient way for the team to collaborate. It sounds more like something out of Peopleware.
As goes with any team and trying something new, one, there will be resistance to change and two, the team should really have buy in to the new process and working methodology. The Agile consultant shouldn't just be barking orders of what you need to do. He should also be explaining and convincing you why this is a good thing. If you already think the company has gone "overboard" then I think something is wrong. Agile is a great way to work for a many (but not all) teams and shouldn't evoke a reaction like that
Having core hours makes sense so that there is an overlap for collaboration. Having people work in a more open space, maybe 4 people per large cube instead of 1 per small cube, also helps foster collaboration. At work I can just spin my chair around and there are 2 people right there who can help me out or answer questions. However, trying to force something that is uncomfortable and inconvenient defeats the purpose.
I think it would be better to tear down the cubicle walls and rearrange the cubes to make the evirnonment more collaborative.
Slightly off topic but won't fit in a comment:
Agile is extremely disruptive of a programmers "Normal Practices". The word Agile means you are going to have to adapt to changes, I recommend you try to accept them and not fight, because one of adaptations is to cut out team members that cause disruptions in the team.
A consultant is virtually required for a smooth, quick transition.
If your consultant is doing it right, you should be much more unhappy than you seem. During those core hours, none of you should have your own computer--you should be sharing a group. If things are done right, you should be coding in a "Bullpen" without cube walls (facilitates pairing and general communication).
But there are various levels to Agile, and it's intended to be adaptable. Many programmers have a problem with pairing, so often it isn't forced, or is just recommended.
At any rate, it sounds like your consultant is taking it pretty easy on you guys. Try to drink the cool-aid and relax, it'll all be over soon.

Resources