Showing posts tagged software

The Glamourous Life of… Software Developers!

That’s right. I just used the word “glamorous” to describe software development. Not the word you were anticipating? Let me tell you – software development is where it’s at! Here are some of the perks: 

- Create your own hours, work from the beach, work in your pajamas, work from a swanky coffee shop, work wherever you want!

- Amazing benefits. As far as health and overall benefits go these days, tech companies cannot be beat!

- Networking parties and gatherings galour. There’s something for everyone.

- The pay is pretty great.

- We work on some of the most interesting problems for some of the world’s most innovative companies. Or we create our own awesome little companies and work on whatever we damn well please. So fun!

- You can get as creative as you like. You can get involved with the business side of things. You can work on a new and interesting problem every day. It keeps you on your toes!

- You can wear high heels or jeans and sneakers. You can be yourself!

- There are SO. MANY. OPPORTUNITIES.

- You feel amazing when someone says “oh you worked on that app? I love it!”

Shhhh. Don’t tell anyone. The fewer people we let in on this little secret, the better. Let those TV/media tycoons keep turning people away from computer science. More for us!

I’m KIDDING. Spread the word!

Celebrating Women in Technology!

It’s International Women’s Day today, and on my walk to work I thought, “wow, I am feeling so optimistic!” Optimistic, because in the last year, I have gone from fearing that in my career I might never see an improvement in the ratio of women in technology (particularly software) fields, to feeling positive change everywhere.

I wrote an open letter after an upsetting experience at a conference. The responses I got were so overwhelmingly positive and supportive. I received messages and emails from guys I didn’t even know, telling me how important it was to them that their daughters, wives, friends, could feel comfortable being a part of the computer industry. I learned something really important. If people don’t speak up about the things that they feel aren’t right, nothing will change! But if we have productive, open, and honest conversation, amazing things happen. Perspectives are changed. Understanding is achieved. Empathy is developed. And everyone works better together!

So to my fellow women in technology, let me tell you that we have a lot of support out there. We have to keep an open dialog in order to realize change, but it is happening. It is more than possible… it is all around us.

I am so grateful to have a supportive network of women in technology who take care of each other. I am also beyond thrilled to have met such amazing men in the Mac/iOS developer community who have showed their willingness to listen, try and understand, be the change we want to see, stand up for women everywhere, and most importantly, to be wonderful co-workers and friends.

Some things I’d still like to see improve about the women/minority experience in software:

- Toning down the inapproriate/raunchy content that can make people feel uncomfortable at conferences or events while STILL having fun with each other!

- More people taking a step back to try and objectively look at what they can do differently to make women feel more included. Maybe that means helping to steer the conversation away from a constant stream of “guy jokes” at a networking party, introducing yourself to every woman you don’t know in the room at a party or event and thanking them for coming, or just making a solid effort to get more female speakers at your event.

- More reaching out to the women you know in your tech community to ask what you can do to help, or to invite them to a tech get together you attend.

- Being great listeners, having open minds, and putting differences aside to realize that what this is really about is improving the entire community and making the future even better than today.

As of right now, the number of women studying computer science is still in decline and under 10% at most universities. It’s due to so many factors but sometimes I don’t think that we realize how little things like the suggestions I made above can really make an impact.

Let’s break stereotypes. The future of programming is people of all types. And that can only be a good thing!

A special thanks to the guys who I have the fortune of knowing personally and are always there for support! You guys rock. And please take a moment to appreciate the amazing women in your life today!

A Letter to the Developer Community

Dear Mac/iOS Developer Community,

Empathy is the ability to put yourself in someone else’s shoes who may be different from yourself and attempt to understand/have compassion towards that person’s feelings, especially if their feelings are different from your own. If you do not consider yourself to be a particularly empathetic person, there’s no need to read any further.

I attended a Mac developer conference recently and overall had a great experience. I had the opportunity to meet and get to know many great developers while learning a few things too. Unfortunately, I left with a bit of a bad taste in my mouth. This feeling I attribute to a lack of conduct standards, and a failure by many of us to understand the changes in the industry that have been occurring, like it or not, over the years.

Here is what happened. I sat down to listen to a talk that I could tell by the title of the talk, was going to be inappropriate. I thought to myself, I’m at a respectful Mac conference, the organizer is walking around in a suit and conducting himself very professionally, I’m sure it will be ok. This was, in fact, a poor assumption. The speaker prefaced his talk by basically stating there was a little substance, but that most of the topics were being presented simply because of the sexual or otherwise inappropriate jokes that could be formed from the topics. For instance, jokes that can be made about “autoreleasing”. I’ll let you think about that for a second and you basically understand how this went. About ten minutes in, I was thoroughly disappointed in the immaturity and inappropriateness and walked out of the room. As others informed me later, it did not get any better. There were tidbits of information weaved in, but the overarching theme remained the same.

Sadly, this was not the only offensive point in the week. The highly respected keynote speaker managed to weave in a reference to a female celebrity’s “tits and ass” in his discussion, which I found awfully distasteful.

Now, I know that being one of the handful of women in attendance at the conference, I am in a serious minority in terms of the way I experience and react to things such as this. I also know that it’s quite possible that others would not be offended as they may have the same, in my opinion immature, sense of humor. Yet, in discussing with others, including members of my team, I found that I was not alone in finding these references uncomfortable.

Why is it that an inappropriate talk would even be permitted on a stage at any respectable conference? How does this in any way further the advancement of the software industry at large, and the Mac community especially? In my opinion, it sets us back quite a bit. During one of the much more informative and respectable talks of the week, the topic of diversity was brought up. The speaker pointed out the fact that the Mac community is full of mostly men from an educated and higher income background. The context was in discussion of how we tend to gravitate towards like minded people. And in fact, it’s impossible to argue that this is a truly diverse field by any means because women and minorities are grossly underrepresented as I’m sure you know.

However, what this experience and other similar encounters I have had in the last three years as a Mac developer have started to suggest is, maybe the Mac community doesn’t want people like me to be comfortable? Perhaps they would rather keep this a boy’s club forever, and it’s simply irritating when people like me disrupt that.

Wow, does that thought scare me. Coming from a different industry where diversity is praised and encouraged, could it be that software developers want the exact opposite? Clearly not all of us. But, perhaps some of the organizers of this particular conference gravitate toward that mindset.

The Mac development community has changed a lot over the years. There are new iOS consulting companies popping up all the time. Macs are in more homes than ever before in history. Mac developers are hiring business partners, even donning suits sometimes, and prancing into major corporations to work on exciting applications. It’s a new world, folks. And as a result, there will likely be growing pains.

All I ask is this…

First, if you are in a position where you can control the conduct and standards at a software event that is intended to be in any way professional, you are therefore obligated to do so. Or at least warn people who may be attending otherwise, so we may steer clear.

Second, before you start to defend this kind of inappropriate behavior in a professional setting, think about how you would feel if I were your daughter or your sister. I’m not against inappropriate humor by any means, I just think there’s a time and a place. This was not it.

Do we want the Mac community to be a place where anyone, regardless of gender, race, religion, etc. feels uncomfortable?

Diversity is great. It shows that our field is growing up. But diversity can only happen with acceptance, tolerance, and the ability to empathize with those who may feel uncomfortable, even if you yourself do not. I sincerely hope that at future Mac community events, I will not be similarly offended.

Thank you to the wonderful guys who provided support and feedback in preparation for this article. It’s nice to know we have some gentlemen out there in the Mac community!

Sincerely,

Brit

Update: After getting in touch with the conference organizers, I have a lot of hope regarding this issue. They were very concerned, apologetic, and acknowledged that this should not happen at a professional event. Thank you!

Software should be more like Cirque du Soleil

I recently attended a traveling Cirque du Soleil performance called “OVO” which was an insect themed performance. If you haven’t seen a Cirque du Soleil performance before, you must go because they are fantastic! When you arrive, you enter a humongous tent and are immediately transported to this bizarre kind of circus that’s all grown up. The costumes are incredible, the music is live and fantastic, the sets are extravagant and capturing, and the performers are amazingly talented. It’s a great experience. But the thing that really sets a performance like that apart are the details. Nothing was overlooked! From the elaborate costumes to the scenery, to the pre and post show entertainment, you could tell that someone had been over everything with a fine tooth comb. Naturally, I related this to software.

Great software is all about the details too. It’s the little things that picky development teams refuse to overlook, that really make a user’s experience with software exceptional as opposed to just fine or average. Certain personalities tend to be more detail-oriented than others, but I find that developers seem to be more often than not, concerned about the details.

With so many apps out there these days, it takes more than just functionality to make your products stand out. I think the details take you that extra mile. You don’t just throw fields onto an editing screen and call it a day. Even if it’s just simple text input, you really have to think about the layout, the appropriate width and height, is this blue the right blue, how strong should the font be, etc. We can’t afford to forget the user’s interaction at every level. If you’re writing low-level code, think about performance considerations. Could the user experience a slow down with a large data set? Think about your team as well. Who may have to work in this code file in the future? Is your code clear, organized, and concise? The more details you take the time to really consider, the better!

Ok, wait. By now, you must be thinking in the back of your head, “That’s great and all, but then I would never ship! Who has the time to leave no stone unturned in their app?” Yeah, I don’t either. And I certainly have not mastered this balance yet.

Here are some of the ways my team currently manages this dilemma:

- Make small adjustments/improvements in incremental releases (the first release cannot be perfect, but over time will get better)

- Prioritize tickets regularly to sort out the most important issues to the user, and which tickets can wait a little longer (we think about a ticket as must-have/nice-to-have/ or should consider)

- Never create a new UI without showing at least one other person, preferably several, for critiques and improvements

- Capture all ideas for improvements so that they are not overlooked or forgotten

- Use mockups! Even if it’s just a piece of paper or scribbles on a chalkboard. It’s amazing what you can eliminate before you even begin coding if you do this often.

- Test! This is one area that we are trying to improve on my team. It’s so critical to have others test out your changes before you send them out to the world. Catch as much as you can before it gets out there.

If you’ve never looked back at a feature you did and said… “Wow, was I drunk when I did that?!” then you deserve an award. For everyone else, I think it’s important that you’re willing to go back and re-work a feature (even if it seems minor) when it’s just not right. If you’re satisfied with mediocrity, then by all means leave it. But you are taking a big risk that users will overlook the details too. My guess is they won’t.

Right now, I have so many things I want to improve about the product I work on that it can seem overwhelming at times. The steps above seem to help break it down into manageable pieces. Just saying it’s good enough, though, will not allow any product to stand out. Details, details, details.

 

 

Mise en place for coding

Chefs employ mise en place (“everything in place”) as an initial step before beginning to cook a meal. It involves gathering all the ingredients, measuring out or weighing each to the quantity required, and then laying everything out along with any pots/pans, or other tools required for the recipe. This serves a couple different purposes. It makes certain that you have everything you need so you don’t get halfway through a recipe and say, realize you’re out of butter or need to hunt down a pan that is dirty. It also makes the actual cooking process much more organized and therefore smooth and enjoyable. I’m no professional chef, but whenever I take the time to implement mise en place at home before starting to cook, I find it to be a much more relaxing process.

This technique is not just useful for chefs, I’ve found that it is powerful when applied to coding as well. I used to have this bad habit of diving into a problem head first and trying to code my way out of it. Sometimes it worked, but I more often would end up needing to take a step back and come up with a better, more thought out solution. As my coding skills improved, I have learned that when solving a new problem, I first need to do some setup before writing a single line of code. I needed a mise en place process.

Here is my mise en place for coding:

  1. Brainstorm possible solutions to the problem (roping in someone else to help if it’s a particularly tricky issue)

  2. Go to the whiteboard (or grab some paper) and jot down any algorithms required either as steps or in a flow chart diagram

  3. Make an outline of all classes including possible names, instance variables, and methods with arguments

  4. Review documentation for any classes/methods/frameworks I will need to use that are not familiar

  5. Write unit tests - determine how I want the new code to be used and the edge cases, beforehand

Once I have completed my mise en place, I feel much more confident in the approach I am taking to a solution and it is much more likely to be successful. The goal is not to completely eliminate refactoring. Refactoring is needed to polish up code or just because you learn things during the implementation process that may change your algorithms a bit. The goal is simply to start off on the right foot, with a well thought out solution. Overall, the mise en place process is significantly improving my code.

Bonne Programmation!