Pandamonial – Amanda Laucher

Insights into software development, functional programming, and F#

  • Sep
    15

    Today I had a conversation with a female developer in the US who wanted to talk about the difficulties with sexism. The conversation went a completely different direction than I had assumed it might. She wasn’t complaining about male coworkers treating her differently than they would the guys. She was discussing how she feels discriminated against by other females in the field (esp her boss). She felt as though she wasn’t treated equally by the women because she didn’t fit the female developer stereotype.

    Does the fact that she pays attention to hair, designer bags, her figure, and shoes make her any less of a developer? I was appalled to hear her say that she was told by a Microsoft Employee that they do not hire “pretty” developers! Is it possible to be “pretty” and smart? I have to believe that this was the opinion of a limited group within Microsoft as I know plenty of attractive women who work there! Do we think that attractive women get enough of an edge that we shouldn’t trust their skills even after they are proven? (To be fair, I’ve not seen her handed anything without merit)

    After mentioning this to one of the guys at the office he replied by saying “cat-fight!” Do we have to get along with every other female developer just because we’re the minority? I know that I don’t. Do you think that all Caucasian people in India are friends? This is sort of the same things. If two women don’t become best friends is it possibly a personality conflict (or something more serious) or must it be a jealous cat fight? Are women so inherently catty that they can’t work well with other female devs? Is the fight for more female devs actually a bad thing for many women? I don’t think that this is always the case as I know many women who work very well together.

    After discussing for a little while it came up that this isn’t the first time she has felt this way so it isn’t specific to her current work situation. She has also talked with a couple of other female devs and they agreed to seeing the same problem! Is this a common occurrence for other female devs? I’m really sorry to hear that my friend is going through this but I’d be interested to hear if anyone else is facing the same difficulties. I’m wondering if this is a serious issue or just a problem for a few.

    On a positive note she has never felt at all discriminated against by the guys! Good stuff.

    1 Comment
  • Sep
    9

    Recently Ive spent quite a bit of time at conferences and developer events of all different kinds including many different technologies. Ive started to notice patterns – some things I like and some things I don’t. I’ll throw out some of my current ideas.

    I don’t like all of the ego stroking. Some people who do great technical things are looked at as gods. Many of them seem to hate this worship and you can see that they are uncomfortable. I once saw a guy follow one such person into the bathroom! Come on people, let’s hold it together around the technically gifted so that they feel more comfortable coming to these events.

    We all have those people in our lives that can seemingly do no wrong. This is never the case. We all make mistakes and come up with ideas that are not the best. Please do not be afraid to tell people that you think their idea isn’t the best or ask questions to help them make their idea better. People are not gods. Stop letting people get away with terrible code just because they have a name in the industry. Make them live up to their name.

    I love the healthy criticisms of everything tech! Some people are doing great jobs of asking questions and making comments that are valuable in a way that helps future versions of the product/tool/language/idea become better.  You are asking how and why and is it the best possible way. This is a fabulous way to gain understanding for yourself and anyone else who hears or sees. Another important reason that this is good is because it forces the developer to think as well. Perhaps it will help them to flesh out some idea that they weren’t quite sure about.

    I like that people seem to genuinely enjoy the company of other smart people. This is fantastic. We like being around people who make us feel that we can be ourselves. This might mean talking nerdy at a conference or a bar. Many of us go to conferences and code camps quite frequently. What we need to make sure that we are still getting something out of these events. If we are constantly talking about the same things and attending sessions on the same topics, we probably wont get anything out of it. We should encourage everyone to keep attending the events and going to new types of sessions. That being said, we need to keep our speakers discussing fresh topics. The same “Welcome to Topic X” conversation is boring to give and boring to attend. If you feel that you wont get anything out of the session, attend something different. Expand your horizon.

    I don’t like that we use this time to talk negatively about other people in the field. Many of us meet people at technical functions and make judgements. Sometimes those judgements are completely unfounded. Answering a question incorrectly or not being interested in the same things that you are does not mean that the person is incompetent. Please consider what you really know about the person prior to engaging in gossip around their technical abilities. It is a very small world and you saying something negative about someone else could seriously hurt their chances at a position that they are qualified for. Remember when your mother said to not say anything if you can’t say something nice? This rule applies, especially if you have never worked on a team with that person! If you have worked with the person and feel that you need to speak up in order to save another team from the same types of problems that you have faced, only voice your concerns in private and with context.

    I like that we all feel that we can be more open and honest when online. Many of us have anonymous online identities which can add to our courage. This is fantastic as long as you are using it in a good and not evil way. You must remember however that in person your anonymity may be compromised and you may be expected to match your online persona.

    I don’t like unreasonable criticism. Consider what you are saying or typing in that blog comment. In what way will it help you, the audience, or the person or group that you are criticizing? Is it constructive? Are you providing any possible solutions? Are you suggesting something is wrong that is impossible to fix? Are you asking a question that you know the person has no answer to just to make yourself look smarter? Are you saying something that is important to more than just yourself? Take a look online for ways to provide constructive criticism or in fact do not!

    I like that it seems that everyone wants to encourage new speakers. This is extremely necessary if we wish for the community to keep growing. So what if someone has never spoke in front of people before. We should help them to become great speakers so that they can pass on their valuable advice to others. I learn something new from somebody new at almost every event I attend!

    Just a few thoughts. Take from them what you will. This was spur of the moment so I’ll post more when I get my ideas together.

    No Comments
  • Sep
    8

    For those of you who didn’t already know, my husband and I decided a while back that we should go to India.  We were very lucky in that his company, ThoughtWorks was happy to see him visit the Indian offices for a few months to do some project work and mentor less experiences ThoughtWorkers. I decided to leave my job with The Sophic Group in order to travel and concentrate on writing for a little while. The experience has been quite interesting!

    I have gotten much writing done in the little time that we’ve been here. I’m well on the way to fleshing out content and ideas to make for a high quality book on F#. Hopefully you will see how much my knowledge of functional programming and F# has grown over that least 2 years when you read it. It’s on Manning’s site now available in Early Access Edition. I really have to say that being isolated without a vehicle (not that I would drive here anyway) has really helped me to concentrate on what I’m supposed to be doing. Without the distraction of running here and there (Starbucks) I have been able to focus on getting things done. I have also learned that Twitter really does lower my productivity. If I force myself to stop going to that site and uninstall my tweet client, I have a better chance of finishing my work.

    Besides that I have gotten to spend quite a bit of time at the ThoughtWorks office working with their teams. Those guys are great! They immedietely accepted me into their office and allowed me to do some F# geek talks and even get some writing done in their space. If I were going to offshore a project, I’d certainly look to TW for help.

    I have to say this is a much different experience than I would have thought. Prior to this trip,  I had worked on a couple of projects that had been off-shored from the states, but never did I reallize the cultural differences that could become issues. It’s interesting to see the other side of the equation and be made aware of what actually occurs when a project is sent off to another country. The companies that I had worked with in the past had no idea what they were getting into. They didn’t know how to work with distributed teams very well at all, let alone off-shored projects. So many times I’ve wondered what would have been different if I had this experience prior to those projects. If you are currently on a team that is working with another project team in another country do youself a favor – get some face time! I don’t mean that you should send someone from the offshore team to your office. This is not going to be nearly as beneficial to you. Send someone to their environment and get to know what drives them. Its very important to know what sort of barriers can stand in their way of progress as they may be very different than the barriers your home team is facing! Get to know the team and what they are all about and how they like to work. Communication is key. This is true in any team of course but esspecially those that are distributed overseas. If you don’t understand them and their ways, they don’t understand why you are always upset about the way things aren’t working! If you are interested in my experiences here with Indian culture as compared to my American upbringing, drop me a note and I’d be happy to discuss.

    I’ll be coming back to the states in October. I look forward to seeing all of you very soon!

    No Comments
  • Sep
    8

    Last week I attended ICFP in Edinburgh. This is a week of many conferences all related to functional programming. I decided to check out DEFUN and CUFP as they seemed most appropriate for what I hoped to achieve which was a deeper understanding of FP languages as well as more information for the book. An entire week surrounded by PHD’s, PHD candidates even real world FP devs put me outside of my comfort zone which was a great way to meet people and be surrounded with new ideas.  Here are just a few of my notes.

    DEFUN Day One:

    Scala tutorial given by Martin Odersky
    This was a great talk that actually changed my opinions a bit about Scala. Not that I didn’t have a healthy respect for the language, but I wasn’t seeing much appeal in the java-like syntax. Martin did a good job of catering the talk for FP developers with Java knowledge. Some of the things I wasn’t already familiar with and I think are worth looking at include:

    Extractors – Sort of like active patterns in F# using apply and unapply methods. The syntax isn’t quite as pretty and they aren’t quite as powerful.

    Implicit conversions -  Martin called them a poor man’s type class

    Case Classes – Sort of like algebraic data types. I used to think these were just ugly but Martin described the why behind them. I still prefer F#’s syntax but I’m less annoyed by them now.

    Martin also described a study about code comprehension suggesting that concise syntax in FP makes code easier to understand regardless of the length of local variable names. This might suggest that x::xs might not be so hard for new fp devs to understand and maintain.

    Erlang in 10 examples by Simon Thompson:
    This was an interesting talk describing how to think and develop in an Erlang style.  He showed some cool slides with benefits of Erlang and describing the linking of processes. More importantly at the beginning of the session he gave a thumbdrive with the Erland installer and slides as well as all of the code examples. This is obviously the best way to do a tutorial. Although with all of the questions we had less time to code than Simon would have liked, we have everything we need to take home. Some great questions form Yaron Minsky (A Jane Street OCaml guy) led to interesting conversations comparing Erlang to ML. This helped to make some correlations to something most of us were more familiar with. I know more about Erlang now than I thought I could after 3 hrs.

    Alt.net:
    There happened to be a meeting for Scotland Alt.net where  Colin Gemmell talked about Castle Windsor and IOC. It was a really good walk through of using Castle Windsor and IOC with everything .NET. He had an example of using dependency injection in just about every way possible so any of the group members could walk away with a basic knowledge. This group seems to have all sorts of events going on! If you are in the area and using .NET, go check them out and join their forward thinking with the MS platform. Afterwards we grabbed a couple of beers at a local pub and discussed a bit of everything. Michael Feathers was also there and he is always good from some great pragmatic tech conversation. He often is able to help me flesh out some idea, sometimes even days after hearing something he’s said.

    CUFP:
    An entire day dedicated to discussions around FP in the commercial world. Francesco Cesarini discussed some numbers around FP development. He suggested that according to Tiobe FP requisitions have seen about a 1000% growth since last year! This became more apparent when speaking to many of the attendees whose companies are hiring!

    Bryan O’Sullivan gave a great speech about his book, Real World Haskell and how it came about. He also suggested that we need to evangelize FP in the commercial world by writing books and giving talks at conferences that include developers from outside the FP world. His slides can be found here. This guy knows how to motivate!

    Adam Granicz did a talk about using F# at TFC. He discussed some of the basic stuff that he likes about F# including discriminated unions and pattern matching. Obviously good stuff!  He also mentioned that he might be working on the second edition of Expert F#. I somehow lost him before a large group of us went to  dinner that evening so we didn’t get to chat very long.

    Christopher Piro and Eugene Letuchy talked about functional programming at Facebook. They are using Erlang as well as some Haskell. They are the main guys at Facebook doing FP because it is in fact the best tool for the job. They didn’t seem to worry that there weren’t others there who could maintain their work and in fact have to spend their own time maintaining the code instead of moving on to new projects. It sounded as though there were some people becoming more interested in learning FP concepts through lunch-n-learns and geek speaks. Good luck to those guys! They have some awesome tasks. The main thing I liked from their talk was hearing about Thrift which allows for true polyglot development.

    Spreadsheets are the most common functional development tool of the non-developer. Gordon Guthrie introduced a spreadsheet programming tool for the web development and Lee Benfield showed FP in Excel and VBA as well as Functional Model Deployment which is a way of writing FP with higher order functions in Excel spreadsheets. These things bring FP to people who are not necessarily devs.

    Lee Momtahan talked about a DSL he built using Scala. He discussed all of the benefits of FP as they apply to scala including removing the need for boiler plate code and a closer match to the domain.

    One thing all of these talks had in common was discussing FP in the real world. Many seemed to be preaching to the choir by saying “yes, FP works” at a functional programmers conference. We know it works. I’d like to see more code from some instead of just telling what they did and that it worked. Some really cool things have been developed using FP and I think those guys should really get to more mainstream conferences and discuss.

    DEFUN Day 2:
    Don Stewart gave a great talk on multicore programming with Haskell. Check out the content here. He did an amazing job of explaining it so that any developer could understand even if they didn’t know Haskell. Sparks, Haskell threads and OS threads were all covered. I found it interesting that Haskell threads share a heap and so they are in fact lighter weight than Erlangs! This is really a must see presentation.

    Kim-Ee Yeoh did a session on developing a twitter game with Haskell. This was one of my favorite sessions. He held it like a design meeting where we sat around writing type signatures and discussing the different ways we could go about designing the application. Very interesting. I may borrow this session idea in the future if he doesn’t mind.

    Anil Madhavapeddy showed an ORM for OCaml. Although I missed part, this is a really cool open source idea. I intend to look at how it can be extended for F#. You can check it out here on github.

    Finally Adam Chlipala presented the Ur web programming language. You can find the content here. This is a work in progress language to add static typing to web programming. Interesting stuff. Go see.

    The sessions were great but the hallway discussions were even better. I don’t have the time to type them all out and you wont get as much out of it anyway. What you will get a lot out of is your trip next year to Baltimore for ICFP/CUFP/DEFUN/Haskell/Erlang/etc conferences. You’ll get so much for so little effort and money on your part. There is no reason not to go!  I’ll certainly be back.

    2 Comments