mestizo.monster/content/posts/old/9-agile-techniques-that-will-change-your-life/index.md
2024-03-02 17:44:53 -05:00

9.6 KiB
Raw Blame History

title date tags
[old] 9 agile techniques that will change your life 2016-09-07
agile
english
productivity
programming
tech

disclaimer: this post is really old, from when i first started writing technical articles. it's from 2016.

Learn about TDD, OKRs, CI, CD and more!

Youve probably heard of Agile development somewhere. Its one of the most popular ways of making software these days. With Agile development, you can pump out functioning software within a few weeks and make both your developers and your clients happy.

Here are nine Agile techniques that have helped us here at devAcademy, and that can help you, too.


1. Test Driven Development

TDD is one of the most popular development processes today, encouraging a sense of confidence in ones code and helping you provide simpler answers to problems. With the wide variety of testing frameworks available for every programming language out there, theres no excuse not to implement TDD in your project.

TDD is a way to define requirements needed to be met through detailed and specific test cases. Afterwards, software is improved to only pass the new tests. Simply put:

  • Find out what you want to add.

  • Write tests for what you want.

  • Write enough code to make your tests pass.

  • ???

  • Profit!

You see that right there? Thats TDD in action.

Obviously, your tests should include some sort of system of verification that the desired result is achieved correctly. Your test code should also have the same upkeep and maintenance as your production codeits important! Your tests shouldnt depend on states of the machine youre testing on, and tests shouldnt depend on each other. They should be fast to execute and easy to integrate on any machine.

On our Ruby projects, we use a combination of RSpec and Shoulda to write awesome, transparent tests for our code. Find a testing framework thats right for you and go wild with it.

2. Continuous Integration

When we make things, we normally make a branch for each feature that were making, then merge it back into the master branch after were done modifying our own code. This makes sure that everyone always has the most updated version of our code.

Go with the flow~

Keep your branch updated and make sure your code is available to everyone when youre done with it. We use platforms like Travis CI to make sure that our code is fully functioning with tests and code quality checks when we merge something to master so that our modifications to the master branch dont affect everyone else negatively.

3. Continuous Deployment

When I make something new, I always get antsy. I want my new code to be out there as fast as possible, and here at dev we feel like its a crucial part of developmentnew issues get found faster and more efficiently, and features are pushed out rapidly.

There are a few drawbacks to Continuous Deployment, just like there are in Continuous Integration, but the benefits vastly outweigh the consequences. Your users can experience your latest features within moments of you pushing your code to your repos and can give you feedback in real time. There are no wait times to let your users get that fresh code smell; they get the latest code, all the time.

[embed]https://stories.devacademy.la/this-is-what-youre-missing-out-on-with-continuous-deployment-afa6b49c4c8c[/embed]

4. Daily stand-ups

The best teams make sure that theyre all on the same page. You cant work on a project together unless you know what everyone is doing. Daily stand-ups help teams work in synergy, letting others know whats on your plate and your daily progress.

A normal stand-up consists of three questions presented to all team members:

  • What did you do yesterday?

This question lets your team members know what progress you made on the things you were going to do yesterday, and if you completed them or not. It also makes sure that your other teammates are informed on activities that happened yesterday so they dont repeat objectives in their work today.

  • What did you do today?

This questions lets your team members know what youre going to do today. It also informs your teammates on things that they should try to work on with you and collaborate with so you can achieve your objectives faster.

  • Is anything hindering your progress?

This is probably the most important question in a stand-up. Being open and honest about our faults helps us grow as people in general. If something was blocking your progress, it doesnt make you a worse person, it just means you need to improve in that area. Thats the whole point of being agileidentifying obstacles quickly and resolving them quicker.

5. Pair programming

The best ideas and the best projects have been made by working together. In our personal experience, weve found that tacking two people onto one objective helps a lotyou have someone else to bounce ideas off of and it distributes some of the load that comes with each objective.

Another person can also help remind you of what goals you need to reach together. With someone else on your team, you can reach objectives faster since theres someone to corroborate your work.

6. Retrospectives

Here at devAcademy, we have a weekly meeting to review what we did last week, how we did it, how/if we failed at doing something, and how we contributed to our Objectives and Key Results this week.

Coding isnt just a way to make computers do thingsits a personal journey of finding a digital solution to a problem.

Coding isnt just a way to make computers do thingsits a personal journey of finding a digital solution to a problem. Retrospectives let us help others provide input on everyones progress so we dont feel alone on our programming expedition.

What a retrospective looks like at devHouse

In Agile development, one of the most essential parts is communication. This helps us achieve just that. We have a meeting every Friday morning to socialize and check on our progress as a team. You should, too.

7. Planning

This is really a no-brainer. You should always make sure that your activities are planned out with some tool that fits in with Agile methods. We use Basecamp, but you can use tools like Trello, Asana, or even plain old Google Calendar for planning out things with your team.

Making sure you have a set timeline makes sure that you can verify that youre getting work done efficiently. If you can meet your goals before the allotted time frame, youre probably doing way better than you planned, which is great! Having something to refer to in terms of your progress helps you easily and transparently analyze what you need to improve on, and how to pace yourself.

8. Code reviews

Your code isnt always going to be the best. Sometimes you think your code is awesome, but you havent seen the glaring security error or possible cases that could creep up on you in production. Thats why we review each others code here at devAcademy. By implementing pair programming, this should be really easy. Your partner and/or supervisors should be able to check your code easily and transparently.

In Agile development, transparency and communication is essential.

We use GitHub for our code, so we normally comment on our pull requests so we can scrutinize the code were working on! That way our entire team is on the same page and we can see why we did/didnt merge something to the master branch. In Agile development, transparency and communication is essential, and this helps us achieve just that.

9. Objectives and Key Results

Have you ever had a big project that you really want to finish, but dont know where to start? OKRs can help you out with that. This technique of planning out progress and key points in your project came to be in 1999 at Google, and since then theyve dominated the market by using this technique. Maybe theyre onto something, eh?

A good objective encompasses a big goal, answering what your final ambition is. It can be something like “Adopt Agile development techniques”. The point is to have something to work up to.

Good key results show you the details of the journey youre about to take. Theyre small steps towards your goal, and they dont always have to be linear! Things like “Educate team members about Agile techniques”, “Improve productivity using Pair Programming” and “Use OKRs to plan out our next project” are all awesome Key Results because they talk about steps to reach your objective.

Once you have some OKRs planned out, youll start to notice that youre going to be more organized and get more stuff done as a team. Youll also feel awesome when you cross one of those Objectives off! Its a great experience.