As if building software wasn’t hard enough… This week at Dev Bootcamp, we’ve been split up into teams of four to work on a week-long project. Our team is building a Craigslist Crawler, which crawls Craigslist posts based on specified criteria and automatically emails the post owners from the user to show interest (this is super useful if you’ve ever tried finding an apartment in San Francisco!).
This layer of building something in a team, which I haven’t done very much of, is turning out to be the hardest part of software development for me. Here are some of the complexities our team is facing:
The more obvious challenge when working in a team comes from figuring out how to commit code to Github. While before I would just commit whenever I was done with a feature, now, every time we make a change, we have to figure out whether anyone else made changes on the same file, and if so, we need to figure out how to merge these. I can’t even imagine what this process is like on a much bigger software development team in a corporation.
Listening To All Opinions
When working alone, when I had an idea, I would just go ahead and make it happen. Now, before I do anything, I have to talk to either my pair (our team of four split up into two pairs) or everyone for big decisions. I have to be honest, and say that I don’t always agree with how others choose to do things, but it’s a whole new skill-set to figure out how to effectively be open minded about other people’s ideas and when to know that your ideas are better and how to push them.
Productivity VS Teaching
I have to be honest, my goal yesterday was to be productive and complete as much of our app as possible so we can be finished on time. After all, in a real corporation, we will have very tight deadlines. Unfortunately, productivity often comes at the expense of not taking the time to teach my pair or other team members about some of the concepts they’re confused about.
I’ve also noticed this trade-off made me a worse team member, as I sometimes didn’t take the time needed to explore other people’s ideas or explain to them why I was doing what I was doing. Today, my goal is to not care as much about productivity (after all, we don’t have a “real” deadline), and instead take my time leaning to be a much better team member.
Team Work + Software = HARD WORK
I guess I’ve never really had a problem working on a team. In my other jobs, there was usually a pretty obvious way to split assignments so that each team member would go off, do the work on their own, and we’d all meet up every day to check in and figure out how to split up the work tomorrow.
With software, every part built is very integrated with the other parts, so team work is a lot more work than in other professions. I didn’t expect it to be that hard, but as with other challenges, I will take this one and make sure I master it.
Earlier in Dev Bootcamp, Shereef Bishay told us that most software projects fail because of people, not code, and that’s why they take so much time to teach us about communication, empathy, and other “soft” skills. I didn’t understand the implications of this until now. Becoming a good team member is my new top priority at Dev Bootcamp.