Tech- Where Do I Fit In? – So What Exactly Is Programming?



Tech- Where Do I Fit In? – So What Exactly Is Programming?

0 0


tech-where-do-i-fit-in

"Tech- Where Do I Fit In?" presentation for Girl Develop It Central VA

On Github mathemagica / tech-where-do-i-fit-in

Tech- Where Do I Fit In?

What is Girl Develop It?

  • A 501c3 non-profit organization dedicated to making learning software development affordable and accessible to all women
  • Founded in NYC in 2010 by Sara Chipps, CTO of the Flatiron School and Vanessa Hurst, founder of CodeMontage
  • Now 36 chapters in cities around the US and growing.
  • Thanks for supporting the Central VA chapter!

Who am I?

  • Computer science grad, Carnegie Mellon 2003
  • Software Engineer for last 12 years
  • Currently CTO of MoveOn.org
  • Previously at Amazon.com, Rosetta Stone, various consulting and startup companies
  • Chapter Leader of Girl Develop It Central VA!

What we'll cover

  • What are the different roles commonly available in technical teams?
  • What are the rewards and benefits of careers in technical roles?
  • What skills do each of these roles require?
  • How do you acquire the skills to transition into these roles?

Types of Tech Jobs

  • Software Engineer
  • QA Engineer
  • Project Manager
  • Product Manager
  • Software Team Manager
  • Database administrator
  • System administrator
  • DevOps
  • Data scientist
  • User Experience (UX) Designers
  • Graphic Designers
  • ... and more

At a glance, what exactly do these people do?

  • Software Engineer- writes code
  • QA Engineer - make sure the code works by testing it
  • Project Manager - make sure everyone is working on the right tasks at the right times
  • Product Manager - makes sure the company is building the right things that their customers actually want
  • Software Team Manager - care and feeding of software engineers
  • Database administrator - Make sure all the company's data is secure and accessible to the right software components at the right times in the right ways

At a glance, what exactly do these people do?

  • System administrator / devops - Care and feeding of the physical computers that run the code.
  • Data scientist- understanding a company's data, asking good questions of the data, making the answers to these questions accessible to others
  • User Experience (UX) Designers - the art and science of structuring apps and webpages to make them intuitive to use
  • Graphic Designers - the art and science of look & feel: color schemes, graphics, fonts, buttons, styles

What do all these roles have in common?

  • Collaboration!
  • Despite what you might think from media representations of software jobs, most (or all, in my experience) software projects require working in teams.
  • Also, building.
  • Everyone is always building- either you're building the code, the place the code lives, the way the code makes something look, the strategy around what to build, the team that builds the code, etc.

Quick Poll: which one has the most job openings right now?

Software Engineer!

which one has the most remote options?

Software Engineer!

Why are there so many job openings?

Smaller companies that need software built, generally *only* need software engineers. Software engineers write code but also act as jills-of-all-trades.
As teams scale up in size, roles get more specialized.
A startup company that may have started out with just a software engineer may start to hire Project Managers, Product Managers, and QA Engineers after.
Of course, what a company needs also depends on what it does. But most software companies no matter what they do always need software engineers to do programming.

So What Exactly Is Programming?

Programming: computers are fast but not very smart, people are smart but not very fast. Programming languages are a set of conventions and instructions that allow people to translate their ideas into instructions a computer can execute.

There are many programming languages, each with their own tools and tricks that make certain human ideas easier to describe to a computer.

A typical software engineer uses 2 or more different languages in each job, and learns new languages every few years.

Examples

HTML: Hyper Text Markup Language - The code structure used to convey the content of a web site

CSS: Cascading Style Sheets - A language used to describe the presentation of the content

Ruby on Rails: A language and framework for building your own customized websites, from the database to the HTML

Pro Tip

  • If you aren't sure which field you're most interested in, go general first
  • First become a software engineer, and then later specialize in one of these sub-fields (if you want to).
  • It's possible and often easy to transfer from a software engineer position to any of these other position, but very hard to transfer the other direction

Tech Roles- let's get into the details!

  • What do these people do all day?
  • What skills are important?
  • Common ways of getting into this field.

Software Engineer

  • Writes code all day.
  • Ex. Changing how web pages look, adding interactivity to websites, making mobile apps, writing code that stores data or processes data from a database- very wide range of applications.
  • Important Skills: being organized! (Can't stress this enough) Also, being willing to be constantly learning- the programming languages and frameworks you use change every few years

Software Engineer - how to get into it?

  • I've personally seen a very wide variety of ways, all of which are valid:
  • Majoring in computer science in college
  • Lateral job changes- getting assigned technical projects from a previously non-technical job (like getting put in charge of the website)
  • Going through coding schools or bootcamps
  • Teaching yourself to code and building a portfolio of projects (a full 50% of engineers I've worked with have taken this route)

Software Engineer - what are the benefits?

  • Generous pay - check salaries on glassdoor.com
  • Flexible working environments
  • Very transferable skills
  • Many remote opportunities
  • Many consulting opporunities
  • Computers always do what you tell them to do.

QA Engineer

  • What: gets paid to breaks things, and tell the software engineers when things are broken
  • Important skills: attention to detail, ability to communicate steps to reproduce problems
  • Benefits: job opportunities at most large software companies, transferrable skills, ability to grow into software engineer or management roles
  • How to get into it: tech background helps but many job opportunities are beginner friendly.

Project Manager

  • What: makes lists, make sure everyone knows what they should be working on, checks whether anyone is blocked, gets people the information they need to do their work
  • Important skills: being a generalist, strong written communication skills, being a "people person"
  • Benefits: job opportunities at most large companies (not just software companies), exposure to many sides of the business / organization
  • How to get into it: certification programs can help but many job opportunities are beginner friendly.

Product Manager

  • What: does strategic research on what the company should be building and why; works with software teams and project managers to get things built
  • Important skills: good at research, able to compose analytics and metrics with strategic ideas, interested in "what's coming up next" in their field
  • Benefits: significant promotion opportunities, exposure to key strategic info, lots of visibility from people "in charge"
  • How to get into it: just apply; many job opportunities are beginner friendly.

Software Team Manager

  • What: people management, technical decision making
  • Important skills: understands and can gain rapport with engineers, organized, able to balance strategy with technical details
  • Benefits: significant promotion opportunities, multiplier effect for making 10 or 20 people more productive
  • How to get into it: transfer laterally from project or product management, or start as a software engineer.

Database administrator

  • What: care and feeding of large, complicated database systems
  • Important skills: risk-aversion, careful research and planning
  • Benefits: well paid, considered to be mission-critical (but generally this job category only exists at very large companies)
  • How to get into it: starting with some technical background helps, usually specific database certification is necessary.

System administrator

  • What: care and feeding of the physical computers that run the code the software engineers write
  • Important skills: being a tinkerer, being comfortable holding the "keys to the castle" for an organization, holding lots of details in your head at one time: being comfortable going more broad than deep
  • Benefits: transferable skills, ability to move into software engineer, VERY remote / flextime friendly
  • How to get into it: bootcamps, internships and apprenticeships really help since the work done varies so much from company to company.

Data Scientist

  • What: playing with, understanding, and making decisions with data
  • Important skills: being an experimentor, some math, staying up to date with new techniques and rools
  • Benefits: very well paid, generally most comfortable / lowest stress of the tech jobs
  • How to get into it: math & science background is a plus, but bootcamps and self-taught + demo projects works well too.

User Experience (UX) Designer

  • What: the art and science of structuring apps and webpages to make them intuitive to use
  • Important skills: strategic thinking, empathy for users, ability to blend technical and artistic skillsets
  • Benefits: almost as many job opportunities as software engineers, very well paid, many remote friendly jobs, many consulting opportunities
  • How to get into it: bootcamps seem to be best, close second: degree with portfolio or self-taught with portfolio. The portfolio is very important here.

Graphic Designer

  • What: the art and science of look & feel: color schemes, graphics, fonts, buttons, styles
  • Important skills: artistic eye, ability to use an ever changing set of tools, a "consulting" mindset when figuring out what companies and teams want
  • Benefits: very creative, many consulting opportunities (though tend to be less well paid than UX), opportunities to transfer laterally into marketing and advertising
  • How to get into it: portfolios are key

Putting it all together into a typical web team:

  • Front end
    • User Experience Designer
    • Graphic Designer
    • Web Developer
  • Back end
    • Server Admin
    • Database Admin
    • Software Engineer
  • Overall
    • QA Engineer
    • Project Manager
    • Product Manager

Which Work Environment is Right For You?

  • When figuring out where you fit in, it's important to consider both the job type and the work environment
  • There are many, many different kinds of work environments
  • If you find yourself in an environment that doesn't fit you, you can easily change it. It's important to be aware of your options, and understand whether it's the job type or the company that is affecting the fit.

Big vs Small Companies

  • Big companies = more name recognition / resume boost, greater variety of career specialization and management options, exposure to business and software processes that support reveue streams of millions and even billions of dollars
  • But in big companies you often work on a smaller piece of the pie, and it can feel like you have less personal impact.
  • Small companies = more total responsibility, you can build a broader technical skillset, and be instrumental in making a company succeed
  • But most of the time nobody will have heard of where you work, and small companies can be more susceptible to financial problems or economic downturns
  • It's worth trying out both at some point in your career

Consulting vs Product Companies

  • Consulting companies work for other companies and charge by the project or hour. Example: Accenture.
  • At a consulting company, the projects you work on change regularly, you meet lots of people and learn more about other companies' businesses
  • Product companies build a product they montetize. They charge for their product, not their time. Example: Rosetta Stone
  • At a product company, generally you work on fewer projects for a longer time, but can see these products grow over time.

Startups

  • A startup builds something new to the marketplace that they hope to monetize before running out of funding
  • Everyone generally works on everything- great for broadening your experience
  • Startups have to deal with constant change: their business plan, staff, funding, market opportunity could change at any moment. It can be both exciting and stressful.
  • As an engineer at a startup, you'll work on everything too, and be able to watch the company evolve and change.

Which type of job is Right For You?

  • There is no right answer. I wholeheartedly encourage you to try different options and see what fits you best
  • Check out some of our upcoming GDI "Day in the Life Of" events for more in-depth info on specific jobs
  • Check out upcoming GDI classes focusing on skills employers are hiring for right now
  • Get yourself a mentor and ask questions! Email the.annlewis@gmail.com for details on how to be connected with a mentor.

Questions?

?