Monday, November 21, 2016

#NewToMe Series


Lately, I've been tinkering around with some new and old concepts in Android. Which got me thinking about creating a "#NewToMe" Series where I write about things I've learned while working on something new to me. 

Some of the lessons learned are probably not new to someone who's already worked on it before but it's definitely new to someone who's just getting started in Android or to someone whose focus was on other concepts in Android. Remember this XKCD comic?



"Saying 'what kind of an idiot doesn't know about the Yellowstone supervolcano' is so much more boring than telling someone about the Yellowstone supervolcano for the first time" - Randall Munroe, XKCD

More to come in the #NewToMe series. Keep an eye out for it!



Saturday, November 19, 2016

Leadership and Management Panel - ElaConf 2016


Recently I was a panelist on ElaConf's Leadership and Management Panel along with awesome tech bosses Alison Rowland, Caro Griffin and Alisha Miranda. The panel was moderated by Alisha who had crowd-sourced a great list of questions.


The panel was for women interested in pursuing a management career path. Alisha started off the panel with a round of introductions from each of us on our manager-origin story. I moved into the tech team lead role after being an individual contributor (IC) for 3 years. Since two years, I've been leading a team of 4 Android developers.





Below are my (paraphrased) answers on some of the panel questions.

What does success look like as a manager? How do you as a manager showcase the intangible impact you’re contributing?


As a team lead, you need to make sure your team is happy, that everyone communicates with each other and ships products on time. A lot of times what a manager does is not visible because a manager is responsible for all the things that make a team work together. If you catch up every morning for team check-ins or stand-ups, spend some time on what you did as a manager to help make your team mates' lives better. If you had a tough discussion with someone on another team, if you resolved some issues that makes it faster for the team to get its work done, mention this to your team. As a working manager (one who codes and manages people), it is important to show the impact you have because it gets the noise out of the way and your team can focus on their work. As a manager, a lot of context switching is involved so keeping a running list/journal of what you do everyday is helpful in understanding where your efforts are going.



As a manager, feedback is an important part of the job. Any core values you strive to emulate as a leader? Can you talk a little about how you communicate to junior team members or colleagues?


Give feedback fast and often even if it's criticism. Junior team members need more face time and check-ins because they need to be molded into effective communicators and contributors. The first 30 days are crucial for check-ins so you can help your team member grow. Have public channels in slack and create a safe space for your team to ask questions. Listen to your team and channel their thoughts and needs up the management chain. Have regular 1:1s with each of your team members frequently. Always keep the channel of communication open between you and your team.




How do you engage in healthy conflict resolution and build bridges?


Conflicts cannot be avoided. Write down your thoughts to process them before talking to someone you have a conflict with. Find a common ground and figure out a solution that works for both sides. Ultimately, you have a goal, for example: ship a product on time. So make sure you work towards that goal.

Who taught you to be a manager? How do you recommend finding a mentor to help you take that leap?


I learned from the people around me - my peers as well as my bosses. I had a really awesome project manager who listened to my pain points and helped me figure out what worked best for me and my team. Asking for a mentor helps. If you feel the need to grow, ask for it directly. 

I also follow Lara Hogan's and Cate Huston's blogs on being a manager, learning to be a better manager and doing effective 1:1s. I read a lot of books on behavioral psychology and professional development.


Self-care is something we talk about frequently at my job. Any tips on being emotionally resilient?

Turn off work notifications before 9 and after 5 if you have a 9-to-5 job. Lead by example. Tell your team not to work after hours. Plan ahead so your team doesn't end up working over the weekend. Keep a journal to write down thoughts or blog about things you have learned while leading a team.  



Thanks @elaconf for putting this panel together. I have a new squad now! 



Here's Alison's take on her panel experience and below are some wonderful sketch-notes of the panel by Alex and Eileen.







Thursday, November 17, 2016

Technical Blogging session at ElaConf 2016

This is probably going to be one of several blog posts related to ElaConf. It's a wonderful conference for empowering women in tech that took place in Philly for the second time recently. One of the breakout sessions at ElaConf was on Technical Blogging which was run by Vaidehi Joshi (@vaidehijoshi). Here are my takeaways from that session.


We started off by reading Julia Evans' blog post on processes. Vaidehi asked us to take a few minutes to read it and discuss with a partner. Here are some things that stood out to us in the blog post:

  • Conversational
  • Matter of fact
  • Formatted Code snippets
  • Author's personality shows in the code comments
  • Condensed scope, author links to external content for more research
  • Good introduction to the topic even for a newbie

We also took some time doing a fun exercise, with one of us pretending to be a student and the other a teacher. The teacher had to describe "opening a Facebook account to someone who has not used a computer before". This was fun. As a student, I pretended to not know what a computer or Facebook was which made it harder for my partner to describe the solution.

The point of both the exercises was to figure out how to teach others a new technical concept effectively. This is where storytelling comes in. An effective technical blog post hooks the reader by getting them invested in the problem and then interested in how a solution was figured out.




So where do you get started with technical blogging?

  • Start with things you want to learn
  • Things that you've already learned
  • Side Projects
  • Features you built or designed
  • What's new in technology
  • Weird bugs and how you solved them



How do you make it a habit?


Vaidehi suggests coming up with a goal. Her goal was to blog once a week every year. She picked Tuesday as her day to blog and called it Technical Tuesdays so that she produced a blog post every week on that day.



Wait, why should you blog?


For various reasons. A lot of times, documentation is lacking in tech. Blogging helps you communicate your ideas, helps you grow as programmer and makes you a better teacher. It is also an awesome resume and has a great impact on your career. It does not matter who is reading as long as you write for yourself. People will stumble upon it when searching for something and might find the solution they are looking for, and could end up reaching out to you with questions.

Looking forward to writing more technical posts!

Slides from Vaidehi's breakout session are available here.


Sunday, July 10, 2016

Moderating my first panel - Ask an Android Developer



Every month at Android Alliance which I help organize, we have a monthly speaker and a few lightning talks. Someone in the Phillydev Slack group's android-philly channel 
suggested doing a panel for the June meetup.

I have been a panelist before but this time I wanted to try moderating. To prepare for that, I googled how to be a moderator and found Cate Huston's blog on moderating as well as this book - The Eloquent Woman's Guide to Moderating Panels recommended by Cate. The book is a quick read on moderating panels and has several pointers on how to moderate effectively.  

Of course, a panel is only as good as its panelists and moderator. For the panelists, I reached out to Corey, Travis, Nick & Arpit.  

Here are some things I set out to do as a moderator:

Set the tone

When we start an event at Android Alliance, we go around and ask everyone to say their name, what they do and a fun fact about themselves. This usually makes it an informal atmosphere and lbreaks the ice quickly. After we did the intros, it was the panel's turn. I introduced myself and then let the panelists introduce themselves but with an extra question added to it - How did they get started in Android? By asking this, every one on the panel was able to state their expertise and how long they had worked in the field.

Stick to a theme

Another suggestion from Denise's book was to use a theme on the panel. In  my early draft of possible questions to ask, I touched on comparisons between Android, iOS & Hybrid and several other cross platform topics. Ultimately, I had to pare it down to a simple theme - Android only since this was an Android meetup and most people attending were interested in knowing more about that field.


Listen to the audience

One of the first questions I asked at the panel were how many people were new to Android versus how many had been working on it for a while either professionally or on the side. Since the split was 50/50, I asked questions that made sense to beginners as well as experts.

As a moderator, I also tried to recap as much a possible after a question was asked and before we moved on to a new one. I also asked the panelists to explain acronyms and concepts(MVVM, RxJava, Retrofit) as quickly as possible.  By doing this, everyone in the audience had a basic understanding of what we were talking about.


Be prepared

I always like to be preparedAs Denise mentions in her book, a moderator controls the flow of the panel and has a tougher job than a keynote speaker.

Keeping time is very important for a moderator. Sometimes panelists or audience members would speak too long while answering a question. To make them move on, I used some suggestions from the book which were to interject politely by saying "Let's take this offline", "Let's move on" and by leading the applause to end the panel. By doing this, I was able to ask most of the questions in my list and keep it within an hour. (Shoutout to Corey for suggesting paring down questions to 10 so that we could get through them in an hour)

I also shared questions with the panelists before hand so that they knew what was coming and also added a few hot button topics like "Why fragments?" knowing very well that there were panelists with opposing views.

For those interested, the list of questions I asked are at the end of this post*

Have a Code of Conduct

As with any event I organize, I always announce our Code of Conduct and always ask permission before recording or photographing anyone.


Pics or it didn't happen!


Picture credit: Jibreel Powell
Picture credit: Jibreel Powell


---

Would I do this again?


Absolutely! Overall, the turnout was great (2x more than when we have regular speakers) so I hope to organize another one soon. Also shoutout to all the panelists who agreed to do this at such a short notice.

As with anything new I try, there's always something new to learn. 


Some things that could have been better:

  1. Microphones: I had thought of this earlier but did not have the time or resources to get together in a short period of time. Some people at the back had a hard time hearing the panel. 
  2. Higher chairs or a platform: So that people could see us from where they were sitting.
  3. Live tweeters: Both of us organizers were busy being part of the panel so we didn't have time to be more active on social media.
  4. Better lighting: As you can see from the second picture, it was hard for people to take clear pictures of the panel with the sun setting behind us.

Some things that went well:
  1. Q&A: The audience was very involved in the panel and asked some great questions. Many of them stuck around to ask questions after the panel.
  2. Opposing views: I'd asked panelists to hold on to their thoughts by sharing questions beforehand so that their true feelings about a polarizing topic would come forth at the panel.

* Questions

Biography

  1. Everyone has a “how I got started in Android” story. What is yours?
Tools
  1. What are your frequently used tools and how do you use them?
  2. A lot of us on this panel have dealt with architecting an app from scratch. Where do you start and what processes, frameworks and libraries do you use?
  3. What libraries do you use most often?
Beginner
  1. What should a beginner Android dev learn in your opinion?
Community
  1. In your opinion, is there a barrier to entry for Android especially for newcomers? How can we be more inclusive as a community?
  2. How do you as an Android developer contribute to the community?
What’s new
  1. How do you stay up-to-date with the latest in Android development?
Hot button topics
  1. Why fragments?
  2. Some of us on the panel are proponents of Test Driven Development. What is your favorite testing framework and why do you love it?
  3. Android as we all know is available on several screen sizes. What do you say to people who say Android is fragmented?
  4. What is your least favorite thing to do in Android?




Tuesday, May 31, 2016

AnDevCon Boston Ask Me Anything


Recently, I was interviewed in a Hangout on Air for promoting my upcoming talk on Material Design implementation at AnDevCon Boston. You can find the entire interview along with some of my answers on their site.





Prior to going live, I asked my friend @chiuki on tips for doing Hangouts on Air. You can read her suggestions on her blog. Some of the things I learned from my experience were:
  1. Make sure you have a non-distracting background.
  2. Post on social media about the hangout before you go live.
  3. Get on the hangout at least 15 minutes early to deal with technical difficulties if any. Our hangout on air was very smooth because I got on about 20 minutes early and we made sure the audio and video were fine.
  4. Get to know your interviewer: Mike from AnDevCon Boston and I talked to each other about our recent Google I/O experience before going live.
  5. Have some talking points written down ahead of your interview so you don't blank out when you are asked questions.
  6. Thank everyone for being there and listening to you.

Things I should have done:

  1. Positioned the camera at a better angle so that I would look at the laptop camera directly instead of looking down at my screen
  2. Used pauses instead of saying umms and you knows. That will hopefully come with more practice :)

Thursday, May 26, 2016

GDG Summit and Google I/O 2016 Recap

Last week I was in San Francisco and Mountain View for two conferences - Global Google Developer Groups(GDG) Summit & Google I/O 2016. 

Day 0: GDG Summit

The annual global GDG Summit is held every year before Google I/O. GDG is a community run group for Google technology enthusiasts. You can learn more about the Philly group here. The global summit  is where GDG organizers from all over the world who are attending Google I/O gather and catch up with other organizers. Some of the fun things we did were the sharing table before the summit and a Firebase, lego and Arduino workshop at the summit.



Night 0: Women Techmakers Dinner


The day before Google I/O, we had a dinner hosted by Women Techmakers which helps women in tech become more visible. 






Day 1 to 3: Google I/O

Google I/O is an annual developer conference that celebrates Google technologies. This year, it was held in Shoreline Amphitheater in Mountain View for 3 days.


This was the first time I tried sketch-noting at a conference which is a great way to retain information instead of writing notes.

A lot of the talks and content are already available online on YouTube so I'm going to focus on the things that stood out to me in the keynote and sessions:

Google


  • Assistant - a conversational assistant that is available across all Google products like Hangouts, Home etc
  • Home - a device that recognizes your voice and is powered by Google Assistant
  • Allo - a messaging app with smart replies
  • Duo - a video conferencing app with live video of the other caller before you pick up

Android


  • Instant Apps - lets a user open up a part of your app without installing it from the Play Store
  • ConstraintLayouts - a new Android layout still in preview
  • Improvements to Material Design
  • Improvements to Google Play Store Beta testing
  • Wear 2.0 which brings other app functions on your watch face
  • Tons of improvements in Android Studio Preview 2.2
  • More features in Android N including VR

Firebase

Mobile-backend expansion to support notifications, analytics, crash reporting etc all under one roof.

Virtual Reality 

Daydream - a mobile virtual reality platform with headsets and controllers coming to Android N.

Fun fact I learned in a VR controller session: Do you know why Google Cardboard has no head straps? Because your head moves faster on its own and holding Cardboard up with your hands makes sure you move your head slowly to experience VR better.


Nights 1 and 2

Google had some fun after hours concerts featuring Charlie XCX and Kygo on Night 1. They also had Arcades, Concerts and other fun stuff on Night 2.


And to end it all, here's something I always look forward to at I/O: Code Labs!





















Wednesday, April 6, 2016

RecyclerView on Android

Recently I gave a 10 minute lightning talk at the Android Alliance meetup about RecyclerViews on Android. The talk was aimed at Android developers at all levels. I decided to talk about this since the recent Android Study Jam for beginners that I helped run did not touch upon this topic and almost all Android developers have to make use of this ViewGroup sooner or later.

Since the Recycler View offers 3 built in-layout managers, I built a sample that showed how to lay out views either using a LinearLayoutManager, GridLayoutManager and a StaggeredGridLayoutManager.


I also talked about how it makes sense to only use a RecyclerView if you have a large dataset of items. If you just want to show a grid of say 5 items, maybe a GridLayout is a much better option.

Code sample is available at RecyclerViewExample.

Slides are available at RecyclerViewSlides.

More information about RecyclerViews is available in the Android documentation.