Wednesday, 10 October 2018

10 Questions with Julie Torres - Software Developer


What is the best part about being a software developer?

I love writing code. It feels like playing a logic puzzle game, but the rules are always changing so it never gets boring.

I also love the autonomy and flexibility. This is something that doesn't come automatically with every development job, but if you build a reputation for delivering without being micromanaged, a good manager will leave you alone and let you do your thing.

Thoughts on the Low Code Development trend?

Right now software development is a pain point for businesses. Humans are expensive and unpredictable. Businesses would like to reduce costs and get the messy humans out of the way so they can make more money. Low code development is the seed of the slow process to replace developers.

I have no doubt that most developers will eventually, over several decades, be replaced by low and no-code visual development tools. They aren't advanced enough to replace us now, but they will be.

When banks first started installing ATMs in the 1960's, I imagine bankers didn't take them very seriously. ATMs were dumb, clunky machines that customers didn't understand and didn't want to use. It took about 50 years, but ATMs have nearly replaced tellers. They can do almost everything a teller can, only faster and without the awkward small talk.

We're deceiving ourselves if we think software development is different. The tools will start with routine tasks, like building relational databases and RESTful APIs, and grow from there. Eventually, the average business person will be able to build tools that now take a team of developers, testers and product managers.

The good news is that we don't need to panic about our job security. It will take decades for the tools to advance enough, and the businesses to adapt enough to replace developers. By then, many of us will be nearing retirement, and there will still be room for us to work on legacy projects.

The bad news is that demand for developers will stop growing long before we can actually be replaced. To keep our wages from flattening out, we'll need to continuously refresh our skill set and stay out of areas that are being automated.

As a society, we also need to build a safety net for people whose jobs are automated away. Whether it's through job retraining programs or something like a universal basic income, we have to find some solution to the fact that jobs are changing too fast for most humans to keep up. And we have to stop telling ourselves that this could never happen to us.

Your Twitter bio says "Success is getting a different error message." Explain.

The most important thing that software development has taught me is that failure is a necessary step on the path to success. If you keep making the same mistake and getting the same error message, you're not learning and you'll never succeed. On the other hand, if you're not getting any error messages, it's NOT because you're awesome--it's because you're too afraid to build anything!

If your code, your career, your life is breaking in NEW ways, you're doing it right.

Your Github page says "One day there was a girl with a dream to build." Tell us about this.

I put that up there because it sounded good and went well with the design of the site. Honestly, though, I recoil a bit when I read it. It strikes me as fake and "canned". I didn't really have a dream to build. I had a dream to get the hell out of banking, and to find a job that felt meaningful and put more than just a few crumbs on the table for my kids.

Luckily it turned out that being a developer was much more than that for me. Code is this beautiful link between the logical and creative sides of my brain. It's something I would do for fun if I didn't do it for work. I count myself very, very lucky to have a job like that.

Tell us about your ebook "How to Become a Web Developer".

Changing careers and teaching myself to code was difficult and confusing. I wished I'd had a guide book that would tell me what to focus on learning, what to expect in interviews, and how to get my first job. I also wanted to be reassured that it was possible--that I could actually be successful jumping into a completely different career without getting a new degree.

How to Become a Web Developer is the book I wish I'd had. If you're looking to become a software developer, you can find it on Amazon.com. You also might be interested in the blog post I wrote for FreeCodeCamp: How to Become a Web Developer Without Losing Your Mind.

What dev tools do you use?

My preferred tools are: a Mac or Linux machine, Vim text editor, and Tmux session manager. Tmux makes it feel like you have an unlimited number of monitors, because you can flip back and forth between sections of code, Bash sessions, etc. You can also have other developers SSH into your Tmux session so you can code together.

I like these tools because, even though they're hard to master, they give you an incredible amount of power. On Unix-based systems (Mac and Linux), you're only limited by your own knowledge (and possibly your user permissions). The downside is that you can also get yourself into a lot of trouble if you're not careful.

At work I currently use a Windows laptop and Intellij IDE. I absolutely hate working on Windows because it's very inflexible and too much of the functionality is hidden. I find Intellij decent to work in, but it's very memory-hungry and can crash if you don't have enough available memory.

To beginners, I recommend using a Mac if you can afford one, since it's the most user-friendly platform for developers. Installing Ubuntu or Fedora on a PC is a good alternative if you don't want to drop $800 on a laptop. I'd recommend Atom for a text editor since it's free and very simple to use, but also has plenty of plugins that can make life easier once you've gotten the basics down.

Thoughts on open source software?

It's like a Utopian fantasy. The idea that software developers across the world work together to solve common problems, and then freely give away those solutions so others can expand and improve them--I wouldn't believe it if I didn't know it was real.

Imagine what we could accomplish as a species if other fields, like medical research, open-sourced some of their best tools and techniques. What if, instead of trying to patent every newly discovered gene, scientists shared the information openly so others could use it to create gene therapies, trace a person's heredity, or whatever else they could think of?

Pick one online service where you would want to get a first hand and behind the scenes look at how the developers work.

I would love to see inside Atlassian. Their tools--Confluence, Bitbucket, HipChat--are so beautifully designed and virtually bug-free.

State a challenging question you would pose to a developer interviewee.

When interviewing candidates for a developer apprenticeship program, I got very enlightening responses from the following question:

"Imagine I'm a robot that knows nothing about laundry. Explain to me how to wash a load of laundry."

I asked this question because I wasn't trying to assess their knowledge of a particular language. I wanted to know how well they could break down the problem in a familiar domain (most people have done laundry at some point) and transform it into a step-by-step process. There was no way they could have anticipated the question, so I got a unique opportunity to watch their thought process.

One candidate was especially detailed. "This is clothing. First, we need to sort the clothing into dark and light piles. Anything darker than this item should go in the dark pile..."

I also remember a candidate who had trouble breaking the process down into an ordered list of steps. He ping-ponged back and forth from washing, to drying, to sorting, back to washing. He got sidetracked and talked about why a robot would do laundry, but he never gave me a real list of steps.

I wouldn't have hired or disqualified a candidate solely based on their response to a question like that, but it did help me get a sense of how each candidate thought.

Anything else you would like to add?

To the aspiring developers:

Pay attention to both your technical skills and your job search skills. If you're having trouble getting interviews, you need to work on networking with other humans. If you're having trouble passing technical interviews, you should focus on your technical skills.

To the employed developers:

Your skills and experience are the assets that keep you employed. Don't let them decay. Fight to get onto projects that will teach you something new. Fight for the opportunity to go to conferences, or just spend work hours taking an online course. If your employer doesn't value continuous learning, find one that does.

No comments: