So You Want to Code a Thing for Money – Careers in Software Engineering



So You Want to Code a Thing for Money – Careers in Software Engineering

0 3


careerdayslides


On Github llkats / careerdayslides

So You Want to Code a Thing for Money

Careers in Software Engineering

By Lydia Katsamberis / @llkats

who am I?

senior front-end engineer for AOL

work closely with the >Engadget team

choosing software engineering

Bachelor's in Computer ScienceEnglish??!!!!

Master's in Software Technology

Settled on web development

I thought that I would be a writer or get into publishing, some sort of literature-related thing. So I got a bachelor’s in English, but when I graduated was right at the start of the recession, and there weren’t any jobs in southeast Michigan. I didn’t really know what to do with myself. I’d always liked computers, so I started exploring CS degrees in Chicago, which was where my parents were moving. The grad program at Loyola was pretty lenient on prerequisites, and I planned on going into IT. But then I took a couple required programming courses and found out I was pretty good at it. Eventually I was able to narrow that down into a love for web programming, because I like making things that people see and use. Web programming has a creative element to it that I didn’t find with enterprise or server-side programming. You get to create visual elements that people can interact with, and I really liked creating that stuff.

educational requirements

  • Different paths: some people have degrees, and some do not
  • Easiest road is to get a BS in CS
  • skills you need
    • a capacity for critical, logical thought
    • detail-oriented, because spelling and punctuation really matters
    • a capacity for being really, really frustrated and ability to hunt down bugs
    • good writing skills for documenting your code
  • skills you don't
    • advanced calculus/algebra skills!!!
People come to programming through many different avenues. Some have been programming since they were kids, others start in graduate school. Having a high school diploma and a bachelor’s degree is definitely the best and easiest avenue to getting a job as a developer. If you already have a body of work online, or have started freelancing or interning before college, it’s possible to get a job without a BS, but this is much more difficult and people will be a lot more critical of your work. Things you don’t need calculus skills! unless you’re doing crazy 3D animation, you don’t really need to be fantastic at math. Programming is all about logic, so discrete mathematics come more into play -- sets, Boolean logic, etc.

finding a job

  • having an online portfolio (like github) is super helpful
  • social networking: Twitter, meetups, word-of-mouth
I got my job through Twitter! I also got my internship through Twitter, because that company valued having employees that they could relate to and they liked the stuff I tweeted about. Many developers love to network, and the more people you know and meet through meetups, conferences, and online, the better. There are also tons of job boards, LinkedIn, Stack Overflow, Dice, Github, and recruiters.

typical day

mornings: usually emails, meetings, planning

afternoons: programming hours

evenings: more programming

During a typical day, I’ll do some coding. I try to carve out a few consecutive hours for actual concentrated programming work. The rest of the time, I’m documenting or writing tests for coding, emailing, collaborating with others to organize how we’ll build features, or, like right now, interviewing candidates to join my team.

hours

10am-6:30pm

pros: pretty flexible w/r/t working from home, taking time off

cons: working nights? weekends? holidays? sometimes! ಠ_ಠ

not to mention meetups, classes, conferences

side projects!

I work a lot. Not gonna lie. When I was with my startup, I would work late, through weekends. Especially at startups, the expectation is that you’re going to put in a lot of hours, while established companies have more regular hours. I take my work home a lot. I’ll work on the weekends when necessary, and it’s a pretty normal habit. When I’m not working, I’m also often coding my own projects or contributing to my friends’. It’s a great way to learn new skills, programming languages, and technologies. And if you make something cool enough, you can put it on your online portfolio and use it to get a job!

advancement

  • management
  • architecture
  • entrepreneurship
  • research
There seem to be two tracks for advancement: one is to go into management, where you deal with more administrative tasks, or else to go into architecture, where you are in charge of the overall design of an application, managing the features and responsibilities of both ends. Some people stay engineers though, because they like to build. Some people found startups or go into research.

skills

contrary to popular belief, people skills are super important

software is written collaboratively and teamwork is essential

contribution, tutoring, and mentoring are also very important

Skills! Yes, you need to have good people skills. The stereotype of a software engineer is that they are nerdy social outcasts, but software depends on people. It isn’t written in a vacuum, you need to write it collaboratively, and so you need to be able to work with people. Things do get stressful, especially close to deadlines, but you have to keep your cool and get stuff done. You depend on your team and your team depends on you. The most successful engineers are also ones with good social skills -- which you can totally learn. Also, you learn the most by working with others; you teach and learn from each other.

uniform

lol

more casual than traditional workplaces

I wear what I want! I have my hair ridiculous and can have visible tattoos and piercings. Most of the time, I wear jeans and a hoodie. Sometimes it’s heels and a dress when I feel like being pretty. You might have heard that programmers are a pretty casual bunch. This is pretty typical on the West Coast, though the Midwest and East Coast are a little more uptime. YMMV.

employment outlook and competition

competitive, but plenty of jobs to fill too

ways to enter: internships, freelance, building a portfolio

The programming field is fairly competitive, especially when it comes to working at super-desirable companies like Google and Apple. However, there’s also huge demand for programmers, especially here in the Bay Area. It’s also competitive to work at startups, but in a different sense: what you’re competing for is the survival of your company, so you might compete against other companies for market share, and the best customer experience that you can deliver as a programmer might make all the difference. You get into programming by getting a CS degree or by teaching yourself how to code, making some cool things, and showing it to people. And so far, so good on the employment outlook!

not-so-awesome things

(i.e., challenges)

  • staying current
  • work/life balance
  • managing deadlines
  • doing my own projects
  • focusing interests in a broad field
There are a lot of challenges. Staying current on technology. Balancing life and work in a healthy manner. Dealing with expectations and ship dates. Fighting burnout. Trying to make time to work on my own ideas that I want to work on. Trying to focus my interests since software is a really broad field (server-side, browser-side, enterprise, networking, etc.)

awesome things

  • creating new things
  • puzzle solving
  • always learning
  • exciting to be in a growing, evolving industry
  • flexible work schedule
  • good perks
  • can work remotely and live almost anywhere
  • YOU CAN START RIGHT NOW OMG
I love creating things that have never existed before, things that real people use and interact with. I love problem-solving and the mental challenge of my profession. I love that I will never stop learning however long I stick with it.

would I do it again?

If I could do it over again, I would start programming in undergrad, make English my minor, and graduate with a CS degree.

to learn more

these slides: my career day slides!

learn javascript!: JS the Right Way!

learn node: Node School

learn HTML: Dive Into HTML5