Meet devChix member Susan Potter


IntroductionsPeople

Susan Potter is a wearer of many hats, but mostly software engineer and practicing applications architect (based in Chicago, IL).

Employer: Finsignia

Extras: Last month, Susan presented at WindyCityDB conference in Chicago, IL on Link-walking with Riak. She was a speaker at Code PaLOUsa 2011 in June. Talk: Deploying distributed software services to the cloud without breaking a sweat. She is very active in the open source community with GitHub personal repositoriesTwitter4R and collection of Gists.


Our short Q&A with Susan Potter:

What is your technical background?

At university I studied Mathematics, but audited Computer Science courses while writing an experimental parallel and distributed PDE solver first in C, then in C++ and finally in Java, which didn’t have much utility other than to teach me how not to write multi-threaded or distributed software.After graduating I worked for investment banks in London before skipping off to a San Francisco startup building a B2B trading platform and have since been working as a senior software consultant for hedge funds, investment banks and technology startups all over the US.

What industry sites or blogs do you read regularly?

To be honest, I use my Twitter timeline and some private lists as a fairly reliable source of interesting, relevant and/or thought-provoking technical resources from all over the internet. However, the following links have been fonts of recent software engineering wisdom or great resources in the areas I currently practice within:

What are a few of your favorite development tools and why?

I recently wrote a blog post on the (types of) tools that have made me a better software engineer. In short these are: emacs, vi(m), make, gdb, UNIX commands / utilities, UNIX shells, LaTeX, Git. The blog post explains why.

What tip or advice would you like to impart to women interested in programming?

If you enjoy software development, always learning new things and are excited about the possibilities in this field, then do not let anyone discourage you from persuing it further. There will always be a job market for self-starters that can teach themselves even if they don’t have the right educational background. Make sure to back up what you have learned on your own. Open source projects, blog posts or screencasts that demonstrate your skills in the areas you are looking to get into help much more nowadays than simply having a CS degree with no public portfolio IMHO.

If you were a computer part, what would you be?

A CPU socket comes close. It provides multiple connections (mechanical and electrical) between the microprocessor and circuit board. In the technology community it seems I am always connecting people based on their interests and needs such as connecting business founders with technical founders or hiring managers with skilled developers (mechanical connections). Other times I am suggesting new architectures, software stacks, tools, etc. to solve the problems people I talk to are currently encountering (electrical connections).

About Carmelyne Thompson

With 14 years experience in web development consistently learning new technologies; Loves: user interface design, programming & being an entrepreneur

More Posts by Carmelyne Thompson - Author Website

Meet devChix member Aimee Daniells


IntroductionsPeople

aimee daniells (lowercase as requested) is a self-employed software crafter from Winchester, UK.

Her twitter handle: @sermoa and thoughts: http://sermoasquared.co.uk/


Our short Q&A with aimee daniells:

What is your technical background?

I was sponsored through university by IBM. I had an integrated degree where I worked at IBM 3 days a week and studied Computer Science at university 2 days a week. After I graduated I worked for IBM for a few years. Although I began as a developer, they decided to retrain me as a tester. I didn’t like the way IBM made decisions for me.

Now a tester, I looked for a job where I could begin as a tester but progress back into development. This didn’t really work. Fortunately I was learning in my spare time. I learned Ruby on Rails and made the application mychores.co.uk – a team based tracking system for recurring tasks. On the strength of that I got a job with Eden Development, an agile web development and consultancy company.

I worked at Eden for 3 years and took an apprenticeship under Enrique Comba Riepenhausen. I learned an incredible amount about good quality, reliable, well tested software and user experience design. Towards the end I took on two apprentices, one of whom I am still in regular contact with.

I am now an independent software crafter, doing freelance work and visiting companies to work as a contractor. I love what I do, I love meeting people and I love learning and sharing. At the last company I’ve just finished working at, I was approached by somebody who wanted to be mentored by me, who has now become my newest apprentice.

What industry sites or blogs do you read regularly?

I do not read RSS. I used to be subscribed to hundreds but I couldn’t read them all. These days I get all the news I need through twitter.

What are a few of your favorite development tools and why?

I love my macbook. It just does exactly what I want it to do, feels reliable and very rarely annoys me. I prefer to develop using Vim because I feel it is very powerful and I can express my intentions using intuitive combinations of keystrokes. I typed on the Dvorak keyboard layout for years, but I’ve recently changed to Colemak. I find it very comfortable and efficient to type on.

What tip or advice would you like to impart to women interested in programming?

Ask questions. Better to ask a silly question one day than give a silly answer another day. There is no such thing as silly questions, only silly answers. Listen a lot and ponder. Think carefully about what you believe. Share your opinions when asked. Share whatever you know. Be generous. Blog about things you find interesting: somebody else will do too. Ask for things you need. If you want to learn more, find a mentor. Don’t wait for people to do things for you. Make your own luck. Be extremely proud of who you are. Look yourself in the mirror every day and tell yourself how wonderful you are. Be humble. Don’t brag, but let your skills speak for themselves.

Last question on our q&a, if you were a computer part, what would you be?

I would be the Any key! :)

About Carmelyne Thompson

With 14 years experience in web development consistently learning new technologies; Loves: user interface design, programming & being an entrepreneur

More Posts by Carmelyne Thompson - Author Website

Meet devChix member Nola Stowe


IntroductionsPeople

Nola Stowe is a co-founder of devChix from the Texas, USA.
You can reach her at @rubygeekdotcom on twitter.
She is currently a web developer at Game Salad.
Game Salad is a free tool that creates games for the iPhone, iPad, Mac
& Web with no coding required.

Her linkedin: http://www.linkedin.com/in/nolastowe &
She blogs at RubyGeek.


Our short Q&A with Nola Stowe:

What is your technical background?

I started programming the summer I turned 13. I had a TRS-80 and read the BASIC programming book that came with it, along with another programming book I bought at Radio Shack. I had a cassette tape drive to save my files and a 5inc thermal printer. I programmed math games for my siblings. I distinctly remember making a program that would roll five dice and using ascii characters to draw  a box around the number. You could then choose which dice to re-roll. Ahh, sometimes I long for those summer days and also think: “…. boy, how much better I could have been if I had the internet like now!”

In college, I discovered the fun of web development so I majored in Computer Information System and Design Studio minor. I actually petitioned to have my water color class count towards my CIS degree, arguing that since my chosen field was web programming with a design minor, it is good to have the training and understanding of color principles from my water color class. They accepted my petition

What industry sites or blogs do you read regularly?

I check:

rubyinside.com – ruby is my favorite language; this is a great site to keep up with the ever-changing landscape

techcrunch.com – to keep up with what’s new with facebook, google, etc

railscasts.com – weekly screencasts, they are super informative

teachmetocode.com – screencasts on web development, very helpful

peepcode.com – screencasts at affordable prices, and great supporters of devChix.com

What are a few of your favorite development tools and why?

I use vim and textmate. It depends on the environment. For home development, I am on Ubuntu so I use Vim. For work, I use a Mac so I use both Vim and Textmate , but lately I’ve been using Textmate a lot.

What tip or advice would you like to impart to women interested in programming?

It’s a mans world for sure. Do not take it personally when someone gives you slack. Focus on doing the best work you can so people cannot tell the difference between your work and that of any other. Do not assume every issue you come across is “because you are a  girl” … just focus on what is needed to get the job done.

If you were a computer part, what would you be?

I would be a keyboard because I am always focusing on what is needed to get the job done. If we did not have keyboards, we would not be able to get much done. :)

 

About Carmelyne Thompson

With 14 years experience in web development consistently learning new technologies; Loves: user interface design, programming & being an entrepreneur

More Posts by Carmelyne Thompson - Author Website

What makes the best workplace atmosphere and culture?


People

The DevChix community recently attacked the issue of what to do about a “blah” workplace environment. If you’ve done development for any length of time, or for more than a few companies, you’ve probably experienced the same thing somewhere along the way. Your coworkers are nice folks and everyone gets along, but there’s no real camaraderie. People work hard and produce good code, but no one seems too terribly excited about it. Sound familiar?

Lots of companies try to guard against this with perks meant to be fun and make work feel less formal. But sometimes all the kegerators in the world don’t make a difference. One of the DevChix described her experience in an office that sounds on paper like the Disneyland of workplaces:

“There are foosball tables, pool tables, air hockey tables and a beer keg in the kitchen. We work in quad-pods where there are 4 people in each large sized pod. The idea was to create a space open to collaboration. Nobody really talks much though. Things like the gaming tables are nice but I don’t see them having much impact. Some people grab a pint [from the keg] after 5pm and work at their desk, again not talking much. “

A “neutral” company culture, it seems, is not a problem you can just throw a couple foosball tables at. The DevChix suggested the problem is rooted in how a company treats its devs.

Where does uninspiring culture begin?

If you guessed “management”, the list agrees with you (at least partially). Developer empowerment was highlighted as one of the biggest things that make a difference in developers’ passion at work. Without realizing it, managers may be making their developers feel isolated or ignored:

“Management might be thinking that what they’re working on isn’t that relevant to their staff, or is relevant but they haven’t made significant enough progress to share – but communicating the use of your time, however vaguely, on a regular basis has a way of clearing the air.  It says, “I’m not forgetting about you” and also promotes open communication (when I’m not hearing anything from a manager, I don’t feel as comfortable going to him or her with my problems).  I’ve been surprised at how strong of a reaction seeing upper management going in and out of meetings without sharing any details whatsoever has had on me, and it’s not even that I want to have a lot of data.”

Another problem can be the ways in which developers are encouraged to interact. If collaboration is rare, developers have less to talk about as developers. The extroverted ones will probably find other things to discuss around the water cooler, but if they aren’t working together, it’s likely that company culture is repressing the urge to share ideas over the cubicle wall. It’s important to consider how many developers are likely to be introverts – development, after all, isn’t sales – and leave a space for interaction at work that isn’t so unstructured that it exhausts anyone or excludes them. In short, aimless chatter can be tiring or distracting, but active teamwork is inspiring.

What can companies do differently?

One of the more unanimous suggestions was to offer developers the opportunity to do non-business-driven projects. Giving teams the opportunity to use new technologies, proof of concept the things they think are important, and generally develop something to their own standards gives developers a voice in what they’re doing. Google’s 20% time was offered as an example of this. Having a policy like this and promoting it as aggressively as Google does creates an impression of a place where developers’ ideas are sought out and supported, even in outsiders. And supporting developer-driven projects doesn’t mean simply tolerating them. The DevChix who gave examples of similar projects they’d worked on mentioned that these – in whole or in part – had eventually been used by their employers in “normal” projects.

Something that was new to me was the idea of project leads bidding on resources to give developers more control over what they’re working on (a project owner could say, “I need this done but it’s the only thing I need done this sprint,” if I understand correctly). At a busy agency or a start-up just getting its feet under it, committing 20% of each developer’s time to projects that might turn out to be technically infeasible might be too expensive. Letting developers choose their projects would be a great alternative.

Toward the end of promoting camaraderie and sharing knowledge, something developers might be able to do without having to get management approval is peer code reviews. This is certainly more challenging when everyone is working on a separate project, but consider that not everyone has to share all their code all the time. The woman who suggested this mentioned that her team had one or two people presenting once a week, something that should be manageable no matter how many different projects a dev team was working on.

A simple but important suggestion that was brought up by different people with different examples was offering developers the chance to “learn something cool”. This could be done by in-office trainings, brown bag lunches, or sending developers to conferences, but the DevChix who mentioned it seemed to agree that it’s a big part of getting developers excited. These can range in cost to the company all the way up to (and occasionally past) $2k, but consider what the employer gets in return:

“It was amazing how [attending a conference turned] jaded, tired corporate workers into ra-ra cheerleaders like overnight. The amount of info you can get at these things – along with connections of course – is intense. And it’s great to show that the corporation is willing to invest in the employee.”

If a company can’t spend the money on conference registration, air travel, and a hotel stay for an employee, they could also try to bring the expertise to the developers. It was pointed out that many technical leaders are happy to share an hour of their time, and this gives everyone on the team the chance to learn together instead of one or two people getting to go to a conference while the rest of the team is back at the office park slaving away. If a company is so isolated that the only way to boost developer knowledge is through sending employees out of town for conferences, one suggestion was to give the rest of the dev team the same time off their peer attending the conference was getting to read, learn, and work on exciting proofs of concept.

In summary, the DevChix who participated in this thread emphasized the need to treat smart, valuable people like smart, valuable people, whether you manage them or sit next to them. One nice thing about developers is that you don’t really need a foosball table to get them excited about coming into the office – generally you just need to give them the freedom to do what they love: write good code.

About garann

Front-end developer, former back-end developer, resident of Austin, TX.

More Posts by garann - Author Website

Book Review: "Refactoring in Ruby"


BookDesign processEventsIntroductionsRubyTestingTips and Tricks

“Refactoring in Ruby” written by William C. Wake and Kevin Rutherford.
Published by Addison-Wesley

This is more like a “workbook” then a “how to write awesome code” book. You can download the code from github http://github.com/kevinrutherford/rrwb-code and you will find tests/specs for the exercises.

The book is arranged in three parts, The Art of Refactoring, Code Smells, and Programs to Refactor.

There are explanations of “code smells” which are one characteristic of code that could be improved. Some of them are long parameter lists, unnecessarily complex, global variable, feature envy sections, etc. One thing I find interesting is the “How did it get this way?” section. It gives some insight into the thought process and reasoning behind the smell. I think this is good, as programmers our ego may be rather miffed to hear “This code stinks” but with some reasoning, it makes the pain less and I think firms up in our minds when this happens again, to do it this other way. I always want to know why when someone says I could do such and such thing better.

In addition to the code smell examples there are three programs to refactor in the end of the book. In a conversational tone, it walks through and gives some hints on what needs refactoring. Its almost as if you had a pair programming buddy working with you and identifying in small chunks what can be improved. This is definitely something I want to work through more carefully.

What I find odd, is that not all the code smells have code examples. The inspiration for the book I think is the Martin Fowler book “Refactoring Improving the design of Existing Code” which has examples for every code smell. Maybe Ruby smells less than Java? Or those fixes are really trivial? I don’t know. Overall, this is a great book and is certainly worth the price and investment and you will be a better programmer because of it!