We Will Not Be Complicit

By

Black life and Black lives matter. Silence and idleness in the face of systemic oppression are complicities, and we are not complicit. General Assembly stands with those across the U.S. and around the world1 fighting against racism, police brutality, and the widespread, systemic violence against Black people that has taken place throughout our global history. We know that the lives we lost can never be replaced, and we stand with the anger and bravery of protestors and activists risking their lives in the pursuit of justice.

The murders of Ahmaud Arbery, Sandra Bland, Rayshard Brooks, Michael Brown, Philando Castile, Michelle Cusseaux, Dominique Fells, George Floyd, Eric Garner, Trayvon Martin, Tony McDade, Riah Milton, Nina Pop, Breonna Taylor — and countless others whose many names we may never know — continue to shake us to our cores. 

Over the past few weeks, we have taken important internal steps to accelerate the work we need to do as a company to truly create a diverse, inclusive, and equitable GA environment for our employees, students, clients, and alumni. We have a lot of work to do. Still, as a company, we are committed to educating ourselves, supporting racial justice organizations, and engaging in activism and the political process. We have also pushed ourselves to ask: “How can we take more responsibility as a GA community to build a just and equitable world?” 

GA helps people find meaningful work by training them with digital, technological skills, but most importantly, we view our work and advocacy within a broader movement towards social justice. That said, we know that we are also a part of an education and workforce ecosystem that often perpetuates the systemic racism that exists in every facet of American — and global — societies. 

This work begins at home. We commit to increasing the diversity of our leadership and executive teams and developing professional growth pathways for our Black staff. We are also making a company-wide commitment to hiring more Black talent, and to using our platform to educate employers and other training providers on building inclusive talent pipelines. 

In the weeks and months to come, we will speak up and take action to elevate ideas, norms, and values that can dismantle white supremacy2 and move the needle towards justice. Below are three spaces that we believe GA can work within to drive change. 

1. Increase access to high-quality education and training for Black students in underserved communities.

  • The U.S. education system is set up to offer nearly limitless opportunity to those in positions of privilege and far less to those without any. Our responsibility as an education provider is to create pathways to social and economic mobility for communities who have been historically locked out.
  • We need to be intentional and proactive about building partnerships with community organizations to support students from underserved communities and those who have been incarcerated. This will require further investment in financing alternatives that can reduce the cost of education, and shift the risk away from learners by holding providers accountable for ensuring successful job outcomes. GA must expand comprehensive support for students with wraparound services (such as childcare, transportation, and mental health) that help remove the roadblocks that often prevent people from pursuing or completing their education.
  • GA’s commitment: We will seek out employers to partner with on the expansion of our impactful Digital Academy and Managed Service Provider Partner Models to attract, nurture, and actively promote Black talent. We will donate our educational products to nonprofit organizations focused on fostering Black talent. We will deepen the support we offer students, such as emergency funds, case management, referrals, and tech equipment. We will formalize the work we are doing to leverage our students’ talents and alumni to support nonprofits and small businesses, focusing on racial justice organizations and Black-owned businesses.

2. Work with hiring partners to end biased hiring and enable new practices that get more Black talent into jobs.

  • For most people, getting a good job is the ultimate goal of their education and training experience. That makes it easy for employers to blame labor market inequality on the mythical “pipeline problem” and shift responsibility onto education providers, rather than making investments in existing talent or new pipelines of talent. 
  • Employers must do better. To start, that means concrete actions such as removing college degree requirements from job postings and implementing skills-based hiring practices that recognize performance rather than pedigree. It includes practices like “Banning the Box” to open doors for formerly incarcerated job seekers, and eliminating unpaid internships that favor those with the means to support themselves to work without pay. Employers must recognize the incredible potential of their people already employed and create talent pivots and pathways for new roles and functions. 
  • GA’s commitment: We will urge our hiring partners and clients to make public commitments to hiring Black talent and to make investments in upskilling or reskilling existing talent. We will direct Talent Acquisition, Career Coaches, and Local Campus Partnerships to use our voice and position to publicly call attention to biased hiring practices that disproportionately affect Black applicants. We will hold partners who want to hire our students accountable for making these changes. 

3. Advocate for policies that boost access and affordability of high-quality education and training for Black people, and mobilize our community to participate in the political process. 

  • From the U.S. Department of Education’s revocation of nondiscrimination guidelines to the outright provocations of violence from the President and his surrogates, it’s clear that we cannot rely on federal policymakers to make meaningful advancements when it comes to equity and racial justice.
  • Policies can be a lever for change in an election year — they’re more important than ever. We know there’s bipartisan support for ideas at the federal level such as job training tax credits or apprenticeships that can expand access to education. There’s momentum at the state and local level for ideas such as portable benefits that can better protect workers in a changing labor market. It’s also encouraging to see signs of collaboration and movement over the past weeks on urgent issues that aren’t directly related to education, like reinvesting police funding. 
  • As 2020 candidates’ platforms evolve in the coming months, we all have an opportunity to raise our voices to advocate for federal, state, and local policies that can begin to chip away at America’s legacy of systemic racism. We can ensure that incoming elected officials make good on their responsibility to implement those necessary policies.
  • GA’s commitment: We will increase our efforts to advocate for legislation at the federal, state, and local levels to create pathways into high-skill, high-wage jobs for members of underserved communities. We will amplify amicus briefs in support of social justice issues, and take on external pro bono legal work. We will continue to push for a new social contract to strengthen the social safety net. We will educate our community on ways to get more involved in the political process while boosting voter registration deadlines, and local and federal election dates. We will close our U.S. offices on November 3, 2020, to allow our entire community to vote.

We take our commitments seriously, and understand that sincere and meaningful allyship is an ongoing journey. The truth is, we have many things to learn, so we will continue educating ourselves, speaking up, and embracing challenges to continue our growth process. We also appreciate ideas we may not have thought of that can help us create a more just and equitable world.


1General Assembly is a global education company with campuses in seven countries. We know that the current measures to dismantle systemic racism in the United States are not the same measures to address injustices in other parts of the world. The above statement focuses on the language, context, and our actions in the United States, and we look forward to sharing additional commitments across our other locations that are aligned with their regional political, social, and cultural realities.

2The term “White supremacy” has different nuances in other countries and cultures. This article, “White Nationalism is an International Threat” provides a high-level view on how it shows up internationally.

Remembering Why We Celebrate Pride

By

“As long as gay people don’t have their rights all across
America, there’s no reason for celebration.”

— Marsha P. Johnson, gay liberation activist and central figure in the Stonewall riots

LGBTQ+ Community:

With its iconic marches and vibrant colors, Pride is both a time of celebration, as well as a recognition of the Stonewall Rebellion’s anniversary, which birthed the modern LGBTQ+ rights movement. Today — a world of unrest that echoes the very Stonewall riots that gave us the Pride we know — is the time to focus on the spirit of that uprising and save the celebrations for another day. 

Marsha P. Johnson, the Black trans woman who catalyzed the Stonewall Rebellion, said it best: “As long as gay people don’t have their rights all across America, there’s no reason for celebration.” As protests across the nation respond to systemic police brutality against the Black community, there is a bright, necessary light on violence against People of Color — including LGBTQ+ People of Color, who experience these injustices differently. 

Today, in the United States: 

  • Data shows that Black people who identify as LGBTQ+ have the highest rates of unemployment, lack of insurance coverage, food insecurity, and income below the poverty level than both non-Black LGBTQ+ people and non-LGBTQ+ Black people.
  • Young LGBT People of Color are at higher risk of homelessness. An estimated 20–40% of homeless youth in the U.S. identify as LGBT or believe they may be LGBTQ+. One study found that among homeless youth who identify as gay or lesbian, 44% identified as Black and 26% as Latino. 
  • Black transgender women are disproportionately victims of harassment and violence; last year, there were 26 reported deaths of transgender and gender non-conforming people in the United States caused by acts of violence. Black trans women accounted for the majority of these losses.

The path forward is paved with solidarity. We hope these injustices are rectified soon so that all of us can celebrate and heal — not just a privileged few. In the meantime, we’re here to support you with resources and workshops focused on LGBTQ+ topics. For more information on how you can stand with People of Color, read our post, Why We Should All Be Angry, by our very own Vice President for Diversity, Equity, and Inclusion, James Page.

Stay safe. Stay strong. Don’t stay silent.

Events:

Have You Considered Exploring a Marketing Career?

By

You may also enjoy product management or data.

You appear to be a strategic thinker with a knack for balancing vision, intuition, adaptability, and logic to achieve aspirational goals. You’re energized by people and care about what’s best for your teams, users, and ultimately, the big picture strategy. You might find it rewarding to work with cross-functional stakeholders and data to guide campaigns and product launches toward long-term success.

Relevant job titles

Marketing Manager

Content Strategist

SEO Specialist

Product Marketing Manager

Brand Manager

Marketing Operations Manager

Business Intelligence Analyst

Product Manager

Data Analyst

Technical Project Manager

YOUR IDEAL COLLABORATORS

Your ideal collaborators may include like-minded strategists with interests that span business, design, and tech, as well as strong verbal communicators and visual problem solvers. These above-mentioned roles allow you to collaborate with an assortment of teams — marketing, finance, sales, product, and design — while utilizing an array of crossover skill sets.

CURIOUS TO EXPLORE?

Here are some great starting places to inspire you:

Have You Considered Exploring a Product Management Career?

By

You may also enjoy data or coding.

You appear to be a big picture thinker with a knack for balancing vision, intuition, adaptability, and logic to achieve clear goals. You thrive around other people and care about what’s best for the team and your users. You might find it rewarding to work with cross-functional stakeholders and data to guide complex projects toward long-term success.

Relevant job titles

Product Manager

Technical Project Manager

Product Analyst

Product Owner

Operations Manager

Web Developer

Technical Support Engineer

Business Intelligence Analyst

Data Engineer

Solutions Engineer

YOUR IDEAL COLLABORATORS

Your ideal collaborators may include like-minded strategists with interests that span business, design, and tech, as well as strong visual communicators. These above-mentioned roles will allow you to collaborate with an assortment of teams — marketing, finance, sales, product, and design — while utilizing an array of crossover skill sets.

CURIOUS TO EXPLORE?

Here are some great starting places to inspire you:

Why We Should All Be Angry

By and

General Assembly (GA) is a community committed to diversity, equity, and inclusion. We aim to provide a welcoming environment for everyone at GA: students, staff, instructors, clients, and anyone who walks through our doors, physical or virtual. No matter what, we strive to uphold our work value to “Keep Getting Better” in our diversity journey.

In the United States, where many in our community are located, there is a long history of violence and harassment against People of Color. Now that many people carry cameras with them and have instant access to social media, these acts of violence and harassment are more likely to be swiftly and readily exposed. In recent weeks, we have experienced a shared sense of grief and horror over the untimely deaths of Ahmaud Arbery, Breonna Taylor, George Floyd, and the harassment of Christian Cooper.

We stand with Black and Brown People and are fully committed to creating physically and emotionally safe spaces for our entire GA community. Black lives matter. We do not tolerate racism or racial harassment of any kind — and we never will. In that spirit, we share this reflection by James Page, General Assembly’s Vice President for Diversity, Equity, and Inclusion:

As a Black man in America, I’ve been aware since my teen years that others’ fears are closely linked to my skin color. While I found some humor when a White woman would clutch her purse as I walked by, there was also significant frustration. I was a nerdy Catholic school kid who liked to crack a joke. However, my identity as a Black man was perceived as dangerous and threatening in a way that superseded anything else about me.

In 2016, I took a trip to the Smithsonian National Museum of African American History & Culture with my 13-year-old son. I will never forget the Emmett Till exhibit, where an open casket holds a photo of Emmett’s beaten and deformed face. I was frozen. I held my son’s hand, and without any real awareness, tears began to roll down my face. 

My son asked me what was wrong. I explained that Emmett was a 14-year-old African-American boy who was visiting family in Mississippi in 1955. A White woman accused him of whistling at her, and he was brutally beaten and murdered by two White men. The killers were found not guilty, even though they admitted to killing him one year later. They were confident that the American legal system would protect them. Sixty-two years later, Emmett’s accuser admitted she lied — he never whistled at her. Her false accusation was enough to end that young man’s life with no recourse to his accuser or his murderers. 

Fair-minded people can agree that taking another human life is wrong, and share the sense of outrage at the senseless, recent deaths of Ahmaud Arbery, Breonna Taylor, and George Floyd. However, the story of Emmett Till and its connection to the story of Amy Cooper speaks to a much deeper pattern of racism, exploitation, and injustice that is pervasive and prevalent in our society. 

Why am I angry at the justice system and our police force? Why am I angry at Amy Cooper? Why should we all be angry? Because she shared the same sense of privilege and entitlement as Emmett’s accuser when she called the police on Christian Cooper. She knew that if she called 911 and expressed fear as a White woman threatened by a Black man, she would be believed, and a Black man would be punished, regardless of what actually happened. She weaponized her racial advantage and it could have been lethal to Christian Cooper: just as it was when Carolyn Bryant lied about Emmett Till, when Eleanor Strubing accused Joseph Spell of rape, and when Tom Robinson was accused of raping Mayella Ewell in To Kill a Mockingbird.

Black men have been conditioned to fear the police, the U.S. justice system, and White women. It is well known that when the cops, or “the posse” show up, the Black man — a 14-year-old Black boy visiting family, a Black man in a consensual relationship with a White woman, a Black character in one of the greatest novels of all time, or a Black Harvard grad birdwatching in a park — can be arrested, beaten, jailed, abused, and subjected to extreme acts of violence. His Black body can be deemed disposable, be made an example of, and deemed unimportant, a piece of property for the public; another piece of “strange fruit – blood on the leaves, blood at the root.” 

While fear is closely linked to my identity, passed on from generation to generation, it is a fear that I must submit to — unbelievable in 2020. I must learn and follow the unspoken rules. I must fear the police, the justice system, bank lenders, the President of the United States, and the White woman clutching her purse — innocuous people or protectors under any other circumstance. As Ta-Nehisi Coates wrote, “It is not necessary that you believe that the officer who choked Eric Garner set out that day to destroy a body. All you need to understand is that the officer carries with him the power of the American state and the weight of an American legacy, and they necessitate that of the bodies destroyed every year, some wild and disproportionate number of them will be Black.”

The only way to end this ongoing cycle is to educate ourselves, show up for People of Color, and get involved in the political process. This is not a new moment in our nation’s history, but part of the ongoing suffering, injustice, and inhumane treatment of minorities; these acts of aggression, violence, and unequal rights we are experiencing right now create real trauma for communities of color who have to live every day in fear. All of us have a role to play in dismantling institutional racism in this country; all of us must help address — and heal — that trauma. Now is the time to stand together and say, “No. More.” 

If you are looking for ways to show up as an ally in this time, here are some places to get started — we share a handful of resources and it is by no means exhaustive: 

  • Spend time reading and learning. Read the work of James Baldwin, Ta-Nahesi Coates, Angela Davis, bell hooks, Audre Lorde, Richard Wright, and Malcolm X. More recent books like How to be Antiracist, White Fragility, Why Are All the Black Kids Sitting Together in the Cafeteria?, and White Rage provide contemporary insight on how to show up for communities of color. Purchase them from your local bookstore, and check out more resources here. They are truly eye-opening.
  • Support organizations that are moving the needle on racial justice. Color of Change, Campaign Zero, the Anti-Racism Project, the NAACP, UnidosUS, and the ACLU are but a handful of the organizations working nationally and locally for social justice issues facing communities of color. Sign up for their mailing lists, donate, respond to their calls to action, and find other ways to get involved. 
  • Stand up for People of Color. When you see wrong, stand up for what is right. Call out racist actions — explicit or implicit — when you see them. When justice is compromised, protest, and challenge it until it creates change. You can learn more about how to be an ally here and here.
  • Get involved in the political process. No matter where you fall on the political spectrum, demand accountability from your elected officials and advocate and support candidates who share your values. Most importantly, vote (register here) – and encourage others in your community to do the same. 

At General Assembly, we will never compromise on ensuring that everyone within our community gets treated with dignity and respect. In the spirit of our shared commitment to learning, we urge all of you to engage on these issues with curiosity, humility, empathy, and self-awareness in service of active dialogue, brave allyship, and the human goodness that can be brought out by all of us. 

How to Find a Job—And Change Careers—During COVID-19

By

Over the years, GA’s career coaches have helped thousands of students from our full-time immersive programs land jobs with our A-list hiring partners. Now, with a transformed hiring climate, many career changers are faced with more uncertainty than ever about the likelihood of getting a new role, let alone navigating a job search remotely.

The good news is that there are reasons to be hopeful. In this recorded session, get expert advice from GA’s U.S. career coaches on how job searching has been transformed by COVID-19. Whether you’re on an active job search or curious about what the U.S. job market is like right now, you’ll gain valuable insight about how job seeking has changed and how you can stand out amongst the competition—regardless of your work experience.

How to Run a Python Script

By

As a blooming Python developer who has just written some Python code, you’re immediately faced with the important question, “how do I run it?” Before answering that question, let’s back up a little to cover one of the fundamental elements of Python.

An Interpreted Language

Python is an interpreted programming language, meaning Python code must be run using the Python interpreter.

Traditional programming languages like C/C++ are compiled, meaning that before it can be run, the human-readable code is passed into a compiler (special program) to generate machine code – a series of bytes providing specific instructions to specific types of processors. However, Python is different. Since it’s an interpreted programming language, each line of human-readable code is passed to an interpreter that converts it to machine code at run time.

So to run Python code, all you have to do is point the interpreter at your code.

Different Versions of the Python Interpreter

It’s critical to point out that there are different versions of the Python interpreter. The major Python version you’ll likely see is Python 2 or Python 3, but there are sub-versions (i.e. Python 2.7, Python 3.5, Python 3.7, etc.). Sometimes these differences are subtle. Sometimes they’re dramatically different. It’s important to always know which Python version is compatible with your Python code.

Run a script using the Python interpreter

To run a script, we have to point the Python interpreter at our Python code…but how do we do that? There are a few different ways, and there are some differences between how Windows and Linux/Mac operating systems do things. For these examples, we’re assuming that both Python 2.7 and Python 3.5 are installed.

Our Test Script

For our examples, we’re going to start by using this simple script called test.py.

test.py
print(“Aw yeah!”)'

How to Run a Python Script on Windows

The py Command

The default Python interpreter is referenced on Windows using the command py. Using the Command Prompt, you can use the -V option to print out the version.

Command Prompt
> py -V
Python 3.5

You can also specify the version of Python you’d like to run. For Windows, you can just provide an option like -2.7 to run version 2.7.

Command Prompt
> py -2.7 -V
Python 2.7

On Windows, the .py extension is registered to run a script file with that extension using the Python interpreter. However, the version of the default Python interpreter isn’t always consistent, so it’s best to always run your scripts as explicitly as possible.

To run a script, use the py command to specify the Python interpreter followed by the name of the script you want to run with the interpreter. To avoid using the full file path to your script (i.e. X:\General Assembly\test.py), make sure your Command Prompt is in the same directory as your Python script file. For example, to run our script test.py, run the following command:

Command Prompt
> py -3.5 test.py
Aw yeah!

Using a Batch File

If you don’t want to have to remember which version to use every time you run your Python program, you can also create a batch file to specify the command. For instance, create a batch file called test.bat with the contents:

test.bat
@echo off
py -3.5 test.py

This file simply runs your py command with the desired options. It includes an optional line “@echo off” that prevents the py command from being echoed to the screen when it’s run. If you find the echo helpful, just remove that line.

Now, if you want to run your Python program test.py, all you have to do is run this batch file.

Command Prompt
> test.bat
Aw yeah!

How to Run a Python Script on Linux/Mac

The py Command

Linux/Mac references the Python interpreter using the command python. Similar to the Windows py command, you can print out the version using the -V option.

Terminal
$ python -V
Python 2.7

For Linux/Mac, specifying the version of Python is a bit more complicated than Windows because the python commands are typically a bunch of symbolic links (symlinks) or shortcuts to other commands. Typically, python is a symlink to the command python2, python2 is a symlink to a command like python2.7, and python3 is a symlink to a command like python3.5. One way to view the different python commands available to you is using the following command:

Terminal
$ ls -1 $(which python)* | egrep ‘python($|[0-9])’ | egrep -v config
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/bin/python3
/usr/bin/python3.5

To run our script, you can use the Python interpreter command and point it to the script.

Terminal
$ python3.5 test.py
Aw yeah!

However, there’s a better way of doing this.

Using a shebang

First, we’re going to modify the script so it has an additional line at the top starting with ‘#!’ and known as a shebang (shebangs, shebangs…).

test.py
#!/usr/bin/env python3.5
print(“Aw yeah!”)

This special shebang line tells the computer how to interpret the contents of the file. If you executed the file test.py without that line, it would look for special instruction bytes and be confused when all it finds is a text file. With that line, the computer knows that it should run the contents of the file as Python code using the Python interpreter.

You could also replace that line with the full file path to the interpreter:

#!/usr/bin/python3.5

However, different versions of Linux might install the Python interpreter in different locations, so this method can cause problems. For maximum portability, I always use the line with /usr/bin/env that looks for the python3.5 command by searching the PATH environment variable, but the choice is up to you.

Next, we’re going to set the permissions of this file to be Python executable with this command:

Terminal
$ chmod +x test.py

Now we can run the program using the command ./test.py!

Terminal
$ ./test.py
Aw yeah!

Pretty sweet, eh?

Run the Python Interpreter Interactively

One of the awesome things about Python is that you can run the interpreter in an interactive mode. Instead of using your py or python command pointing to a file, run it by itself, and you’ll get something that looks like this:

Command Prompt
> py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Now you get an interactive command prompt where you can type in individual lines of Python!

Command Prompt (Python Interpreter)
>>> print(“Aw yeah!”)
Aw yeah!

What’s great about using the interpreter in interactive mode is that you can test out individual lines of Python code without writing an entire program. It also remembers what you’ve done, just like in a script, so things like functions and variables work the exact same way.

Command Prompt (Python Interpreter)
>>> x = "Still got it."
>>> print(x)
Still got it.

How to Run a Python Script from a Text Editor

Depending on your workflow, you may prefer to run your Python program or Python script file directly from your text editor. Different text editors provide fancy ways of doing the same thing we’ve already done — pointing the Python interpreter at your Python code. To help you along, I’ve provided instructions on how to do this in four popular text editors.

  1. Notepad++
  2. VSCode
  3. Sublime Text
  4. Vim

1. Notepad++

Notepad++ is my favorite general purpose text editor to use on Windows. It’s also super easy to run a Python program from it.

Step 1: Press F5 to open up the Run… dialogue

Step 2: Enter the py command like you would on the command line, but instead of entering the name of your script, use the variable FULL_CURRENT_PATH like so:

py -3.5 -i "$(FULL_CURRENT_PATH)"

You’ll notice that I’ve also included a -i option to our py command to “inspect interactively after running the script”. All that means is it leaves the command prompt open after it’s finished, so instead of printing “Aw yeah!” and then immediately quitting, you get to see the Python program’s output.

Step 3: Click Run

2. VSCode

VSCode is a Windows text editor designed specifically to work with code, and I’ve recently become a big fan of it. Running a Python program from VSCode is a bit complicated to set it up, but once you’ve done that, it works quite nicely.

Step 1: Go to the Extensions section by clicking this symbol or pressing CTRL+SHIFT+X.

Step 2: Search and install the extensions named Python and Code Runner, then restart VSCode.

Step 3: Right click in the text area and click the Run Code option or press CTRL+ALT+N to run the code.

Note: Depending on how you installed Python, you might run into an error here that says ‘python’ is not recognized as an internal or external command. By default, Python only installs the py command, but VSCode is quite intent on using the python command which is not currently in your PATH. Don’t worry, we can easily fix that.

Step 3.1: Locate your Python installation binary or download another copy from www.python.org/downloads. Run it, then select Modify.

Step 3.2: Click next without modifying anything until you get to the Advanced Options, then check the box next to Add Python to environment variables. Then click Install, and let it do its thing.

Step 3.3: Go back to VSCode and try again. Hopefully, it should now look a bit more like this:

A screenshot of a code editor showing how to run a Python script.

3. Sublime Text

Sublime Text is a popular text editor to use on Mac, and setting it up to run a Python program is super simple.

Step 1: In the menu, go to Tools → Build System and select Python.

A screenshot of a code editor showing how to run a Python script.

Step 2: Press command +b or in the menu, go to Tools → Build.

4. Vim

Vim is my text editor of choice when it comes to developing on Linux/Mac operating systems, and it can also be used to easily run a Python program.

Step 1: Enter the command :w !python3 and hit enter.

A terminal window showing how to run a Python script.

Step 2: Profit.

A terminal window showing how to run a Python script.

Now that you can successfully run your Python code, you’re well on your way to speaking parseltongue!

– – – – –

7 Must-Read UX Design Books

By

If you search on Amazon for books using the key phrase “UX design”, more than 1,000 titles will appear. That’s a lot of titles to wade through if you’re looking to read about user experience! One of the most difficult parts of making a list of the best UX books is that there are so many awesome ones out there. I could write a must-read list that goes on forever.

I chose the following UX titles either because they have played a significant role in the way I view my place as a UX designer or because they address foundational design topics that every UX designer should understand. I’m leaving out a fair number that have been published in all aspects of design, from usability and research to interaction design and how to present and speak to your design decisions. This reading list is intended for you to use as a starting point.

1. Badass: Making Users Awesome by Kathy Sierra

Kathy Sierra’s book is all about the strategy for creating successful products and services. Badass: Making Users Awesome looks at how to look at a product or service from the user’s perspective.

So instead of relying on marketing tactics that might be unethical, we can create products that lead users to champion them with their friends and family. A win for everyone!

The design and layout of the book is unlike that of most — it lays out the argument with a lot of visuals. And it’s an easy read. This has led to some negative reviews complaining that the book is just a PowerPoint PDF. Lay that aside, and the message is strong. It’s a great look at the point-of-view statement and how a well-written one can be influential in creating awesome products that users love.

When you read this book, it will start to make sense why some products do really well in the market and why others don’t. It will help show you how to shift your design strategy so that it can be successful too.

2. Just Enough Research by Erika Hall

Erika Hall’s book on UX research is a joyful and informative read you could probably finish in a single day. 

This slim how-to manual, published by A Book Apart, walks the reader through the basics of user research, from talking to stakeholders in an organization through analysis and reporting. Hall’s writing style makes the topic — which can be dry in other books — fun and approachable. 

She’s also realistic in her advice to readers. She recognizes the constraints in time and budget that all UX designers face in their day to day jobs, so she proposes how best to navigate these situations and what alternative methods to employ.

Just Enough Research’s current edition was updated with a new chapter on surveys and why designers must be very careful about using these often-abused metrics in their research.

Even if you aren’t a UX researcher, this book explains how you can implement research in your process and spot your own biases so you can design a better user experience.

3. The Design of Everyday Things by Don Norman

The Design of Everyday Things is a standard on most design-reading lists for a reason. This book was originally published in 1988 with the title “The Psychology of Everyday Things”. It was revised in 2013 with a major update to some of the examples to make it more relevant to today. 

Norman’s book lays the landscape for usability in human-centered design. In it, Norman lays out how human psychology affects everyday actions, why it’s natural for humans to make mistakes, and how technology can help rather than cause errors. Norman also explains human-centered design and proposes principles for good design.

I listened to this book on Audible, and a PDF accompanied the audio book so I could view the examples, which are especially helpful in understanding affordances and signifiers.

Vox produced a great video about one of the examples in the book — how doors are designed well, and how they are designed badly. If you’ve ever struggled with figuring out a door, sink, stove, switches, or other interface — the problem isn’t you. It’s the design.

Norman’s classic book explains why bad design happens, what good design is, and the constraints designers face when designing.

4. Designing with the Mind in Mind by Jeff Johnson

Sometimes designers follow a set of rules for designing user interfaces without understanding why certain patterns and methods work. This book changes that.

Jeff Johnson’s Designing with the Mind in Mind lays out the perceptual and cognitive psychology that are the foundation for intuitive interfaces.

For example, how does human perception work? How is the eye structured and how do we read? What can we do as designers to ensure that people can see the information we design?

Johnson walks through an explanation of human vision, attention, memory, and decision-making for a deep-dive into why we perceive the way we perceive. After reading this book, UX designers will have a better idea of why we have design rules so they can make educated decisions about tradeoffs between budget, time, and competing design rules.

5. About Face: The Essentials of Interaction Design 4th Edition by Alan Cooper, Robert Reiman, David Cronin, and Christopher Noessel

About Face completely changed the way I think about interaction design. Admittedly, I’ve only read sections of the book, due to its length. Still, it’s a reference when I have questions about how to approach interaction design and UI design.

This book is broken into three parts. It starts with introducing goal-directed design and how to approach digital projects. Then it moves through designing for behavior and form. Lastly, it looks at the differences in designing for desktop, mobile, and web applications.

My read of the book focused on designing for behavior, and my biggest “ah-ha” moment came when reading about optimizing for intermediate users. Much of the struggle designers have is in how to manage the different needs between beginners and experts. This chapter explains that we should focus on intermediates. We should guide beginning users to become intermediates as soon as possible, and aim to provide opportunities for advanced users to use our products without holding them back.

This book includes a number of other useful concepts to consider when designing user interfaces. At 659 pages, it might be a little too much to read in one sitting, but it should be in the designer library.

6. Don’t Make Me Think by Steve Krug

Steve Krug’s classic book introduced me to usability and usability testing, and launched me into my current career as a UX designer. Don’t Make Me Think, Revisited: A Common Sense Approach to Web Usability is now in its third edition. 

It’s short, easy to read, and a great manual for designers just getting started in usability testing. Krug wrote it based on his 30 years as a usability consultant for organizations including Apple, NPR, and the International Monetary Fund. Even if you already understand why you should do usability testing, chances are you work with people who don’t understand. This book is a great gift for those people. It explains why you should test, how to keep it simple, and how to keep it from being a budget suck. The newest edition has a new chapter about usability for mobile websites and apps, and all of the examples are updated.

If you want to take it a step further, consider Krug’s second book, Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems. This book explains everything you need to know to get started with usability testing with little or no cost. It includes how to recruit, how to conduct a test session, and how to involve your team. 

7. Change by Design by Tim Brown

IDEO CEO Tim Brown explains design thinking and how it should be used at every level of a business. This isn’t a manual for designers. It’s geared towards people outside of the industry, but I included it on this list because of the examples.

IDEO is a well-known human-centered design firm, and the examples Brown provides are straight from IDEO’s project list. While sometimes it feels more like a sales pitch, the case studies are interesting examples of how design thinking is applied.

UX designers who read this book can look at design thinking from a perspective outside the industry and use the examples to explain how design thinking can be used in every industry and in every discipline — it’s not just for designers.

Advance your DESIGN career

I couldn’t include all of my favorite user experience books on this list. There are just too many amazing titles, and I already have about three times as many on my “to-read” list. These must-read UX design books are a great place to get started if you’re looking for some summer reading to help you advance your design career.

General Assembly offers a full time UX design bootcamp course with career coaching support to help you land a job, and free workshops. Kickstart your learning journey today!


5 Tips for Starting a Career in UX Design

By

Are you curious about how to get into UX design? With so many jargon-filled UX designer job descriptions, chatter about software tools, and contrasting perspectives on the future of UX, it can be challenging knowing where to start your career path in UX design

It may be helpful to understand that UX design is a vast field with many opportunities and ultimately benefits from your contributions. In the following article, we’ll help you navigate some of these uncertainties so that you can find your voice amid an ocean of options.

Identify Your Passion

Due to the scale and complexity of what it takes to create successful products and services, becoming a successful UX designer requires perspectives from all walks of life. From research to development to management, UX design is a multifaceted field. 

Because of this, it’s important to start with you and your passions versus responding to what’s outlined in a job description. It’s critical to self-reflect and ask yourself: What inspires me most? What are my strengths? Where would I like to grow?

Another reason you want to start with your passion is that achieving your goal is going to require sustained energy. For example, not everything you try is going to work as you expect. Nor are you going to get everything “right” the first time. This means you need to stay the course as you learn and that drive comes from within you, not from the outside. 

For example, I started in Industrial Design because I had experience making furniture and was passionate about design. I followed popular designers for the time such as Philipe Stark, Philip Johnson, and Jasper Morrison. I saw them as my mentors and did everything I could to emulate some of their thinking.

However, over time, I came to the realization that while I loved their work, they were able to work in a way that was impossible for me. And as I wrestled with this realization, I came to a deeper understanding about myself. What excited me most as a designer was thinking about how people interacted with the product or service. I wanted to understand what was driving people’s behaviors and expectations more than the object itself. The thought of influencing what’s in the world based on people’s feedback became my new interest and has been for the past 15 years. 

OK, so I’ve identified my passion but how do I know where it might fit with user experience design? We can learn a lot by breaking down some of the roles within a typical UX design engagement: 

  • User Research
    • Spends time understanding a product or service user, their needs, and expectations.
    • Creates a foundation of understanding for other teams (e.g. Interaction Design, Front-End Development) to build upon.
  • Interaction Design 
    • Spends time detailing the functionality of a product or service for every user scenario.
    • Creates site maps, user flows, wireframes, prototypes, and navigation paradigms to illustrate a potential solution.
  • UI Design and Visual Design 
    • Spends time organizing and creating visual elements for interfaces, considering the visual details of a UI design such as color, imagery, typography, brand guidelines, and visual hierarchy, similar to graphic design. 
    • Creates illustrations and UI design mockups to illustrate potential solutions.
  • Development 
    • Spends time understanding what it will take, front-end and back-end, to have a product or service built to function the way it’s intended.
    • Creates proof-of-concepts and functioning prototypes making ideas tangible.
  • Product Management 
    • Spends time understanding a specific product, its market, and ways to improve it.
    • Creates product portfolios, roadmaps, return on investment estimates, and continuous improvement plans.
  • Project Management 
    • Spends time aligning teams based on established goals, tracks time and budget.
    • Creates status reports for stakeholders, project timelines, and project wikis.

Stand on Shoulders 

“If I have seen further it is by standing on the shoulders of giants.”

– Sir Isaac Newton 

The phrase “standing on the shoulders of giants” originated from Sir Isaac Newton when asked how he had been so prolific in discovering a wealth of governing laws defining how physical objects interact. The same mentality applies to UX designers as well. You’ll want to soak up as much as you can about how others before you have dealt with and defined their challenges. 

In my case, this meant putting away the glossy design magazines and engrossing myself in the social sciences: sociology, psychology, behavioral economics, etc. Doing so has allowed me to build on the brilliance of many before me in an effort to stay relevant. 

“Stand on shoulders” means coming to the realization there have been many great minds that have impacted the way things are today and by understanding their contributions, you can be effective in how you spend your time building off of their work instead of repeating the same mistakes. 

Keep in mind, this does not relegate you to spending hours in a library. There’s a lot that can be learned from a mentor, for example — a UX designer who’s been working in UX design for some time and is willing to offer their insights based on your needs. This too will help you hit the ground running. 

Get to Know Your Toolbox

Now that you’ve identified your passion and a UX designer to be your mentor, it’s a good idea to begin experimenting with some of the tools you may have been hearing about. Remember, your goal is to become acquainted and perhaps proficient, but not a master. That will come later as you learn further, gain experience, and the tools of your discipline mature. 

When we say tools, that doesn’t necessarily mean software only. There will be many aspects of your practice you’ll need to learn in order to be an effective UX designer. For me, that meant learning different interviewing techniques, fundamentals of body language, practicing active listening, studying storytelling, and presenting to others — all of which have proven to be timeless and fundamental in my career. A short UX design course can provide a good introduction to essential tools, methods, and strategies.

Experiment and Reflect

“Everything is an experiment.” 

– Tibor Kalman

When it comes to creating impactful products and services, it’s critical to keep in mind that we learn by trying things out and reflecting on what happened. In fact, the process of experimentation and reflection is a core tenet of UX design

Remember: Words and actions are not the same. You need to put in the work. 

As a UX designer, the more you can demonstrate your thinking by creating concepts and putting them in front of others, the more you will capture the interest of a potential employer. Consider taking a UX design course that helps you create projects for a professional UX portfolio. Don’t worry about making it perfect. Seeing the evidence of your thought process not only helps them see your strengths, but also your potential. 

So, be bold! Try things out. Experiment.

Rinse and Repeat

As the saying goes, the more you learn, the more you realize how much you don’t. The same is true here. UX design is a vast field with many roads. The more you keep at it, the better you’ll get, and becoming an expert UX designer will take time. 

Stay curious, experiment, and have fun!

Remember: 

  • UX design is a vast and multi-faceted field, not to mention ever-changing.
  • Don’t let current titles, tools, and job descriptions intimidate you from taking the first step.
  • Careers require an internal commitment in order to hone your experience and perspective.
  • Embrace the soft skills of your practice because tools are not limited to screens. 
  • Demonstrating your thought process increases your chances of landing your first UX job, and a project-based UX design course can help.
  • Since it is impossible to know what’s going to happen, it’s important to take the first step.

A Beginner’s Guide to Learn Python Programming

By

Estimated reading time: 7 minutes

WHAT IS PYTHON?: AN INTRODUCTION

Python is one of the most popular and user-friendly programming languages out there. As a developer who’s learned a number of programming languages, Python is one of my favorites due to its simplicity and power. Whether I’m rapidly prototyping a new idea or developing a robust piece of software to run in production, Python is usually my language of choice.

The Python programming language is ideal for folks first learning to program. It abstracts away many of the more complicated elements of computer programming that can trip up beginners, and this simplicity gets you up-and-running much more quickly!

For instance, the classic “Hello world” program (it just prints out the words “Hello World!”) looks like this in C:

However, to understand everything that’s going on, you need to understand what #include means (am I excluding anyone?), how to declare a function, why there’s an “f” appended to the word “print,” etc., etc.

Not only is this an easier starting point, but as the complexity of your Python programming grows, this simplicity will make sure you’re spending more time writing awesome code and less time tracking down bugs! 

Since Python is popular and open-source, there’s a thriving community of Python application developers online with extensive forums and documentation for whenever you need help. No matter what your issue is, the answer is usually only a quick Google search away.

If you’re new to programming or just looking to add another language to your arsenal, I would highly encourage you to join our community.

What Type of Language is Python?

Named after the classic British comedy troupe Monty Python, Python is a general-purpose, interpreted, object-oriented, high-level programming language with dynamic semantics. That’s a bit of a mouthful, so let’s break it down.

General-Purpose

Python is a general-purpose language which means it can be used for a wide variety of development tasks. Unlike a domain-specific language that can only be used for specific types of applications (think JavaScript and HTML/CSS for web development), a general-purpose language like Python can be used for:

Web applications: Popular frameworks like the Django web application and Flask are written in Python.

Desktop applications: The Dropbox client is written in Python.

Scientific and numeric computing: Python is the top choice for data science and machine learning.

Cybersecurity: Python is excellent for data analysis, writing system scripts that interact with an operating system, and communicating over network sockets.

Interpreted

Python is an interpreted language, meaning Python program code must be run using the Python interpreter.

Traditional programming languages like C/C++ are compiled, meaning that before it can be run, the human-readable code is passed into a compiler (special program) to generate machine code — a series of bytes providing specific instructions to specific types of processors. However, Python is different. Since it’s an interpreted programming language, each line of human-readable code is passed to an interpreter that converts it to machine code at run time.

In other words, instead of having to go through the sometimes complicated and lengthy process of compiling your code before running it, you just point the Python interpreter at your code, and you’re off!

Part of what makes an interpreted language great is how portable it is. Compiled languages must be compiled for the specific type of computer they’re run on (i.e. think your phone vs. your laptop). For Python, as long as you’ve installed the interpreter for your computer, the exact same code will run almost anywhere!

Object-Oriented

Python is an Object-Oriented Programming (OOP) language which means that all of its elements are broken down into things called objects. A Python object is very useful for software architecture and often makes it simpler to write large, complicated applications. 

High-Level

Python is a high-level language which really just means that it’s simpler and more intuitive for a human to use. Low-level languages such as C/C++ require a much more detailed understanding of how a computer works. With a high-level language, many of these details are abstracted away to make your life easier.

For instance, say you have a list of three numbers — 1, 2, and 3 — and you want to append the number 4 to that list. In C, you have to worry about how the computer uses memory, understands different types of variables (i.e., an integer vs. a string), and keeps track of what you’re doing.

Implementing this in C code is rather complicated:

However, implementing this in Python code is much simpler:

Since a list in Python is an object, you don’t need to specifically define what the data structure looks like or explain to the computer what it means to append the number 4. You just say “list.append(4)”, and you’re good.

Under the hood, the computer is still doing all of those complicated things, but as a developer, you don’t have to worry about them! Not only does that make your code easier to read, understand, and debug, but it means you can develop more complicated programs much faster.

Dynamic Semantics

Python uses dynamic semantics, meaning that its variables are dynamic objects. Essentially, it’s just another aspect of Python being a high-level language.

In the list example above, a low-level language like C requires you to statically define the type of a variable. So if you defined an integer x, set x = 3, and then set x = “pants”, the computer will get very confused. However, if you use Python to set x = 3, Python knows x is an integer. If you then set x = “pants”, Python knows that x is now a string.

In other words, Python lets you assign variables in a way that makes more sense to you than it does to the computer. It’s just another way that Python programming is intuitive.

It also gives you the ability to do something like creating a list where different elements have different types like the list [1, 2, “three”, “four”]. Defining that in a language like C would be a nightmare, but in Python, that’s all there is to it.

Being so powerful, flexible, and user-friendly, the Python language has become incredibly popular. Python’s popularity is important for a few reasons.

Python Programming is in Demand

If you’re looking for a new skill to help you land your next job, learning Python is a great move. Because of its versatility, Python is used by many top tech companies. Netflix, Uber, Pinterest, Instagram, and Spotify all build their applications using Python. It’s also a favorite programming language of folks in data science and machine learning, so if you’re interested in going into those fields, learning Python is a good first step. With all of the folks using Python, it’s a programming language that will still be just as relevant years from now.

Dedicated Community

Python developers have tons of support online. It’s open-source with extensive documentation, and there are tons of articles and forum posts dedicated to it. As a professional Python developer, I rely on this community everyday to get my code up and running as quickly and easily as possible.

There are also numerous Python libraries readily available online! If you ever need more functionality, someone on the internet has likely already written a library to do just that. All you have to do is download it, write the line “import <library>”, and off you go. Part of Python’s popularity in data science and machine learning is the widespread use of its libraries such as NumPy, Pandas, SciPy, and TensorFlow.

Conclusion

Python is a great way to start programming and a great tool for experienced developers. It’s powerful, user-friendly, and enables you to spend more time writing badass code and less time debugging it. With all of the libraries available, it will do almost anything you want it to.

The final answer to the question “What is Python”? Awesome. Python is awesome.