044 – Effective Java for Android Developers – Item #10

In this mini-Fragment, Donn talks about Item #10 of the Effective Java series – Always Override toString. You’ll learn why it’s important for your own sanity, future developers, and overall developer happiness.

This episode is sponsored by Hired.com.

Download directly

Show Notes

Sponsor

Contact

041: YAGNI

In this mini Fragment, Donn talks about one of his favorite topics, YAGNI. YAGNI is an acronym that stands for “You Aren’t Gonna Need It”. Donn explains what it is, why its useful and shares a personal story of how he was introduced to the YAGNI concept back in 2008.

Direct Download

Show Notes

Sponsor

  • Caster.IO Use the coupon code “fragmented” to receive 15% off any monthly subscription.

Contact

036: Working Remotely

In this mini Fragment we touch on a highly requested topic – working remotely. Donn talks about how to ease into remote working, tools for working remotely, tips and tricks for staying sane and productive while remote and he wraps it up by discussing the benefits employers have when hiring a remote workforce.

Download Directly

Show Notes

  • Remote work is best suited for information workers (programmers, designers, engineers, etc)
  • Read Remote by DHH and Jason Fried
    • Great book that echoes what I feel about working remote.
    • Tip: Listen to it on Audible, it’s faster to consume.
  • How to ease into remote work at your current job
    • Convince manager to allow a 1 day trial for one – three months.
    • Remote day should be on Friday (fewer critical things happen on Friday, on average)
    • After trial, if success, aim for 2-3 days of remote work. (Again, do this at the end of the week. Wed,Thu, Fri)
    • Once successful, rally for full week of remote with an occasional in office visit (a day every week work two)

Staying sane while working remote

  • Donn’s blog post on this topic
  • Create a work day schedule (5am-2pm, 8am-5pm, 10am-7pm, etc)
    • When you’re done, you’re done. Leave work (your office/etc).
  • Schedule. Schedule. Schedule. Stick to a schedule.
    • Get up at the same time
    • Get dressed for work (no PJ’s etc)
    • Do your hair.
    • Be presentable
    • This is all mental
  • Prepare for the day
    • Get coffee/tea/water and snacks
    • Try to limit the opportunity of distractions
  • During the day
    • Take a lunch, away from your desk.
    • Go out for lunch with someone (significant other, friend, etc) at one to two times a week.
    • Work out of the house a couple times a week, this increases our creativity.
  • Outside of Work
    • You need social interaction, Cabin Fever is a real thing.
    • Exercise 3-4 times a week if possible.
    • Group classes are perfect for this.
      • CrossFit
      • Martial Arts
      • Yoga
      • Pilates
      • etc
  • Communication When Remote
    • Put 3x-4x more effort into communicating than previous. You’re not visible seen so you need to be more vocal.
      • Call
      • SMS
      • Blow up the Slack/Hipchat channel/etc
      • Objective – Clear your own path

Tools

  • For remote to work effectively, everything should be considered remote. If one employee is remote, then all meetings should occur as if the team is remote. This ensures that everyone can work effectively without missing anything.
  • Communication

Remote for Employers

  • Benefits from Remote workforce
    • Much larger talent pool than the exhausted pool (or non-existent one that local). Higher quality employees/contractors/consultants for the same overhead.
    • Remote creates much more loyal employees. You’re giving them their life back and this is reciprocated.
    • Your company becomes anti-fragile as you’re able to adapt with the industry faster. You can hire in areas others cannot.
    • On average, remote employees work harder and are more productive than their office counterparts.
    • Less overhead! No need to pay for additional office space.

Sponsor

Contact

031: Effective Java for Android Developers – Item #8

In this mini Fragment, we introduce Joshua’s eighth Item. This one is a doozy, probably one of the longest items in the group of the effective Java series, but most definitely quite important.

This episode is brought to you by Rollbar. Go to rollbar.com/fragmented to get their Bootstrap plan for free for 90 days.

Download directly

Stay tuned for more items from our “Effective Java for Android developers” Fragment series.

Show Notes

Obey the general contract when overriding equals

When to not override equals:

  • Each instance of the class is inherently unique.
  • You don’t care whether the class provides a “logical equality” test.
  • A superclass has already overridden equals, and the superclass behavior is appropriate for this class.

The equals method implement an equivalence relation which states it must be:

  • Reflexive
  • Symmetric
  • Transitive
  • Consistent
  • For any non-null reference x, x.equals(null) must return false.

A recipe for a high-quality equals method is as such:

  • Use the == operator to check for references to this object.
  • Use the instanceof operator to check if the argument has the correct type 
  • Cast to the correct type.
  • Check all field types and corresponding field types.
  • Finally, when done, ask yourself – is this method symmetric, transitive and consistent?

Caveats

  • Always override hashcode when you override equals
  • Don’t be too clever!
  • Don’t substitute another type for Object in the equals declaration.

Contact

Fragmented Podcast Update – Sol 1

Heya Folks,

We wanted to let you know what we’ve been up to with the Fragmented podcast lately. Don’t worry, all things below are good for you as the listener.

You may or may not have noticed that the episode length has been getting gradually shorter. We’re trying to get it under 40 minutes.

Why under 40 minutes?

Well, simply because we’ve heard nothing but good things about all of our shorter episodes. Plus, research shows that the optimal length of a podcast is somewhere in the realm of 22 minutes.

Ha. 22 minutes. That’s funny.

Have you ever tried explaining a complex topic like dependency injection in 22 minutes, with an intro and outro? Yeah, probably not going to happen … and if we did try to do it … well … the show would be as dry as scarfing down an entire bag of saltines without a gulp of water … #knowwhatwemean? For us, we’re finding that an action packed episode comes somewhere between 30-40 minutes (sometimes over – it is what it is).

Secondly, the shorter fragment episodes are coming back. We’ve taken a short break from fragments to re-identify our strategy with them. We’re still going to cover the Effective Java series, but we’re going to sprinkle those in with other Fragments we want to do. We learned that the listeners really loved the super actionable content like we had in episode 12 (Continuous Integration and Collective Code Ownership). Therefore we’re going to do more of those kind of fragment episodes with Effective Java fragments episodes sprinkled in here and there – think of them like cute little surprise Android cupcakes that you occasionally run into <– See what we did there? Cupcake, Android, get it? .. Ok, stop throwing tomatoes – we get it, we admit … it was a bad joke… :)

Lastly, we’ve decided to join the Spec.FM network. This is the same network that is the home to many other great podcasts, such as – Developer Tea, Design Details, Immutable, Does Not Compute and more.

Why are we joining a network? Simply put – they help us get content out faster and handle a bunch of the administrative workload that we have to deal with. With this extra help we can focus more on the show, the content and getting more episodes out to you folks much faster and efficiently.

What does that mean for you as a listener?

More awesome of course! Hopefully, you notice anything but better content and more frequent releases. That said, we’ve already started moving our feeds over to our new podcast media host at Spec.FM. Hopefully, your podcatcher realizes this and does not double up episodes for you. If it does, let us know so we can try to remedy the situation for others.

Joining a network also helps us out on the admin side too, especially in an area we’re not too versed in … let us explain. There’s an old saying that we’re all familiar with – Time is money. This is also the case with the podcast.

We LOVE doing the podcast, so much in fact that we’d probably both do it full time if we could.

Unfortunately, that’s not possible as we don’t make anything off of the show. It’s actually the opposite – it costs us a bit of cash to keep this thing going. Not that we’re going broke, but it definitely does make the “time is money” adage ring true. That said, we have had quite a bit of interest from companies who have offered to sponsored the show. We tried to figure out how that would look and how it would work and how to set that up. Long story short – we’re not good ad salesmen. We’re good developers (we think … err … we hope we are … Kaushik … we’re good dev’s right ?? … man … I hope so … anyway …).

Spec.FM will help us with some advertising spots on the show. Here’s the thing though, we will only be advertising things we feel our listeners can get value out of. Therefore, you won’t see us advertising used cars, enhancement pills or mortgage deals (wow, that combo of keywords should put us on some spam lists….). The only time an ad will be on our show is when we approve it and feel that listeners could possibly benefit from the product in the ad.

We hope these small, incremental changes help improve the podcast in the long run. <– See what we did there again? Small. Incremental. Just like software! Iterative … releases … Ugh… yeah … bad joke again. Hey, we tried. :)

As always, if you have any questions, let us know, we’d love to hear from you.

Hugs and bunnies and robots and stuff, your Android ear-bud buddies (say that 10 times fast) –

Donn & Kaushik