How Bloomberg Exec Susan Kish Learned To Code

It was a normal Tuesday.

Susan Kish was sitting on the 29th floor of her building, looking over Manhattan, when she got mad. She was in a meeting with young man named Mattan Griffel (before he founded the company now called One Month), and they were talking about his experience in teaching himself how to code. He was building a class to teach other young entrepreneurs how to code, and something snapped.

“Why is it that everyone assumes young people are the only ones who want to learn to code?” she asked.

Kish is the Head of Cross Platform Initiatives at Bloomberg LP, and she manages a strategic portfolio of projects across new products, sales, finance, and media. Yet she found that she wasn’t able to have strategic conversations with the technology teams in terms of media and project scheduling. So, she challenged Mattan, our CEO, to teach her how to code.

“If you can teach me, you can teach anyone,” she explained in her 2013 TED main stage talk.

The last time she coded, however, it was in BASIC: with little green tapes, hand-held, when she was a young child. “I am the definition of a digital immigrant. I am also a mother, a super-commuter, a former banker, and an executive,” she said, “and my schedule does not allow me to sign up for biweekly classes downtown.”

So what did it take to get this busy executive to learn code?

She signed up for lessons with Mattan online, once a week. She said it was frustrating, at times — she threw her hands up in the air, sometimes stalled for a week or two.

After a few months, however, she started to get the hang of it. She learned that “coding” means having the command of at least 5 languages, no easy task. It also requires a problem-solving mentality, a keen sense of aesthetic, and a sharp eye for grammar and punctuation.

Taking coding classes improved her mental clarity, her ability to focus, and reminded her of just how precise and dedicated her technology teams are when designing new prototypes and building out projects.

She found that learning to code and the act of coding itself delivered an extreme joy of accomplishment. Coding is the future, and not learning to code was akin to taking a huge professional risk: “In the professional world of tomorrow,” she said, “you have to know two things: you have to know the basics of business, and the basics of coding. Without both, you are taking an enormous risk. And if you start with the technology side, you have a tremendous advantage.”

Learning to code helped her reboot her computer, it lets her understand the jokes and allusions in team work sessions, and she can walk into meetings with other senior execs and speak knowledgeably about timelines, costs, and prices. Knowing technology is a tremendous advantage in the business world of tomorrow, she says.

Learn the language of technology and build a better business.

We all need to learn to code. Watch her TED Talk here.

What is Javascript?

Key Takeaways

JavaScript is a programming language. It’s one of the three front-end languages. JavaScript is responsible for the “behavior” of your Website. It’s how HTML elements and CSS style animate and move around on the page.

There are many popular JavaScript frameworks (i.e., free code to help you succeed). Some of the popular JavaScript frameworks include: jQuery, AngularJS, Backbone.js, and Handlebars.

Your Assignment

Additional Resources to Keep You Learning

The Best Text Editors for Beginners

What text editor should I use?

What is a text editor, and why does it matter which one I use?

Text editors are programs that type simple text without the sort of formatting a word processor will so rudely slip in. No comic sans, no forced margins, no line breaks (I just tested this with a line of Python, and yep, I can make a line of code that will wrap around the planet if I want). A text editor is just you and your ASCII, absent bells, whistles, or beauty.

As you start out programming, you’ll quickly find your text editor is your best friend. Or your frenemy, depending on how coding is going that day. It’s essential to start figuring out which text editor works best for you. Like most tools, the basics of every text editor are the same. They all have a place to interface text (because, of course), most feature syntax-based color coding, virtually all feature hot keys and intuitive text features to lighten the load of a long coding project.

As you start out programming, you’ll quickly find your text editor is your best friend. Or your frenemy, depending on how coding is going that day. It’s essential to start figuring out which text editor works best for you.

There are already plenty of blog posts on what kinds of text editors to use, but I happen to be retaking One Month’s Python course at the moment, and felt like this would be a good opportunity to test out a few different ones (despite the fact that Eric expressly tells us to work with Sublime Text; we students are rebels).

I’ll mostly be looking at Mac-based editors (or cross-platform editors that work on Mac), because that’s the type of machine I’m working on. When you’re starting out coding, it’s also best to give yourself a little flexibility in terms of the tools you use; you don’t want to limit yourself to working on one platform because you never know where you’ll be working.

I’m also going to try to focus on editors that will be good for beginners. This is because that’s where I am with coding (and that’s where we all need to start).

(A brief aside before we start: I am ethically obligated by the higher order or people who write about text editors to point out at this point that text editors aren’t the same as IDEs or Integrated Development Environments. IDEs are more like Swiss Army Knives, whereas text editors are like screwdrivers. Word screwdrivers. A couple of the text editors we look at will tread the boundary between these.)

Sublime Text: $70 (or unlimited free trial)

This is the first editor I wrote code in, and there’s a soft spot in my heart for it. It passes what I think is the most essential test for any text editor, which is that it’s intuitive to start using. You just open up a file as you would with any interface, and can begin coding.

The extra features with it are pretty bog standard things like code folding. What’s code folding, I wondered, can I make code origami? Imagine my disappointment when I found out it just hides lines of code when I’m not actively working on them. Useful, but no cranes for me.). I like the dive in and begin aspects of Sublime Text. If you’re used to typing in a word processor, Sublime Text is a pretty solid introductory text editor.

If you’re used to typing in a word processor, Sublime Text is a pretty solid introductory text editor.

There’s also an open secret with Sublime Text: While the program isn’t free, it comes with an unlimited trial period. You should absolutely buy a copy if you love using it, but I like that there’s no deadline bearing down on me to make that decision.

VIM: Free

I’ll be honest: Vim scares the crap out of me. If Sublime Text is the cozy programming home I feel comfortable putting my feet up in, Vim is an enormous mansion set high atop a hill with a heavy iron gate between it and me. even downloading and installing Vim is fairly difficult, which makes it a tough text editor to touch if you’re new to programming.

That’s not to say that Vim is bad — far from it. Vim is a great text editor; it’s free, heavily customizable, has a huge community of users and a long history of use. You can make Vim work the way you want it to. It is so useful, in fact, that it’s occasionally compared to an IDE, because it has tools aplenty. Vim just won’t hold your hand. In fact, it sort of slaps your hand away while shouting at you “Get up! Learn to walk on your own!”

If Sublime Text is the cozy programming home I feel comfortable putting my feet up in, Vim is an enormous mansion set high atop a hill with a heavy iron gate between it and me.

All those tools, all that customization means there’s a pretty steep learning curve, which makes it kind of a nonstarter for a beginning programmer. In fairness, Vim’s designers are up front about its difficulty; personally, I’ll save real play on this for when I’m writing more advanced code.

Coda: $99; One Week Trial

I really liked playing around with Coda. This is another tool that feels more like it’s leaning toward an IDE than a text editor; in fact, despite what they say on their website, I’d go so far as to call it an IDE. It’s heavy on features like a built in Terminal interface, SSH connectivity, controls for pushing code automatically to a hub. It’s not exactly bells and whistles-free, but a lot of the features are easy enough to figure out and are essential tools for developing a web app.

I’d go so far as to call Coda an IDE. It’s not exactly bells and whistles-free, but a lot of the features are easy enough to figure out and are essential tools for developing a web app.

My favorite aspect of Coda, which you won’t find in almost any text editor, is a preview button that lets you see what the code you’re writing will look like live. This is a major time saver compared to pushing code, running it on a server, failing, pushing again, etc.

There’s definitely a bit of a learning curve for using Coda. So, if you’re just looking for a tool that lets you dive in and start writing some code, this is probably not the way to go. But with a little experimenting, it has some pretty powerful features you’ll want anyway. Worth the investment if you’re an intermediate coder who’s going to be sticking with it for a while.

Atom: Free

Basically, it’s like getting a knife that you can later turn into a scalpel and then into a LASIK tool.

Atom is a groovy text editor to work with. Its interface has a similar feel to Sublime Text’s, but the iconography of their file structure is ever so slightly more intuitive. It also has a convenient hotkey to list all available command functions. What makes Atom so cool to use, though, is that it’s open source, completely (and easily) hackable, and entirely user friendly. There isn’t any learning curve with it. You can dive right in and start entering code — but as you become more advanced as a programmer, you can make Atom a more complex text editor for your needs. Basically, it’s like getting a knife that you can later turn into a scalpel and then into a LASIK tool.

So which of these is the best?

From my perspective, which is to say the perspective of a novice, a good text editor is one that allows me to dive in and start coding, while also giving me room to grow and get more experience as part of a broader community. It’s what I like to call the bike shop problem. When you walk into a bike shop for the first time, odds are pretty good it’ll be a bit intimidating with all the experts walking around talking the talk. Odds are good you just want to get on a bike and go. The rest of the stuff you can learn later as you become more of an expert, but if you need all that expertise just to get on the bike, you’ll never get started.

It’s what I like to call the bike shop problem. When you walk into a bike shop for the first time, it’ll be intimidating with all the experts walking around talking the talk. If you need all that expertise just to get on the bike, you’ll never get started.

With this criteria, Atom is the best program on this list for letting you get started. It also gives you room to grow. Atom has a large community of users, just like a more intimidating program like Vim, but it also gives me room to start working with it right away. It’s intuitive and easy-to-use, but also expansive and flexible to the needs of its programmer.

To me, this is a great feature of any program. Especially one that I know I need to use as a long-term tool. Part of the frustration of working with a tool is the FOMO of it all. Am I really getting the maximum functionality out of my text editor? Is this the best possible tool I could be using? Atom clears that up by letting me build from a simple text editor to a more complex one.

Takeaway recommendation: if you’re a beginner, start with Sublime as your text editor. The unlimited trial is free, it’s easy to learn, and you can use it across multiple operating systems.

What is iOS Development?

Key Takeaways

  • Swift is the language used to make apps for iPhone, iPad, and Mac OSX (desktop) apps.
  • Why Swift? Well, You don’t really have a choice. Apple decided that part for you. The rule is: if you want to make an iPhone app, and get it into the Apple Store, then you’re going to have to develop it using Apple’s Swift programming language.
  • Before you start learning Swift, ask yourself: do you really need your project to be an iPhone app? If not, a prototyping tool might be the quickest way for you to develop a Minimum Viable Product. My first choice for iPhone prototyping would be Keynotopia, but also there are some great questions to check out over at Quora.

What is iOS? How to Learn Get Started Today

  1. Read Swift vs. Objective-C (5 minutes)
  2. Download Xcode from Apple’s App Store. Note: you’ll need an Apple computer to develop iOS apps. Windows won’t work (20 minutes).
  3. Browse the additional resources below, and choose the one that’s best for your next step!

Additional Resources to Keep You Learning

  1. “The Swift Programming Language” (iBook): published by Apple
  2. “Start Developing iOS Apps Today” (website): some programming experience will be helpful to understand these two resources.
  3. One Month YouTube tutorials for iOS

What is Responsive Design?

Key Takeaways

Responsive design means writing code ONCE, and having the page look great EVERYWHERE. A great, responsive site should be able to adapt to various screen resolutions. It will look good on a desktop computer, iPhone, iPad, or any of the other devices that people carry around in their pockets.

Your Assignment: Learn Responsive Design Today

  1. Look at the images of Pack below. What is the difference between the smallest screenshot (on the left) and all of the other screenshots? Write down at least 3 differences that you see.
  2. After writing down the differences you will quickly see what it means for a site to be “responsive”. After you complete Pack, do the same for The Japanese Times. More examples can be found at http://mediaqueri.es/. (5 minutes).
  1. “Media Query” is the official CSS property largely responsible for making a site responsive. If you’re a developer, try adding this CSS into your stylesheet. See what happens!
@media (min-width: 400px) and (max-width: 600px) {
    h1,h2,h3,p {
        color: red !important;
    }
}

The code listed above should make your h1, h2, h3, and p tags (headers and paragraphs) red. You can play around with some example code over at Google’s page on media queries.

Additional Resources to Keep You Learning

Bootstrap: a popular framework for making a responsive website. Download it for free.

Zurb Foundation: another framework for making responsive websites. It’s free.

Use This Technique to Beautifully Manage Your Database

Use This Technique to Beautifully Manage Your Database

If you’ve ever said to yourself, “I’d love to learn how to use a database, but I don’t have time to learn SQL, PSQL or any of those funky coding languages!”

… then I have something you.

Active Admin!

It’s beautiful. It’s free. And best of all, you can get started by adding just 1 line of code to your Rails app.

Watch the video above to learn the “Who, What, Why & When” in less than two minutes. And then give Active Admin a try.

PS. Don’t have time for coding right now? Click here to view a running demo of Active Admin that you can peak at.

Video Highlights

  • Active Admin helps you manage data (and your database) using Rails.
  • With Active Admin you can quickly create, read, edit and delete data.
  • Active Admin is free (and open source). You can get started right now by visiting Active Admin on Github or by adding the following to your gemfile:
gem 'activeadmin', github: 'gregbell/active_admin'

10 Reasons Beginners Should Learn Ruby on Rails

I often get asked the question: “What programming language should I learn?”

If you’re totally new to programming I highly recommend Ruby on Rails. In this post I’m going to give 10 reasons why I think new programmers should start with Ruby on Rails.

1. Ruby on Rails is a web application framework.

It is NOT the same thing as Ruby. Ruby on Rails is basically a collection of shortcuts written in Ruby that lets you build web applications – basically websites – really quickly. The benefit to learning a web application framework (like Ruby on Rails) before learning a programming language itself (like Ruby) is that you’ll make quicker progress in the beginning, you’ll have a real site that you can share with friends, and you’ll see how the things you’re learning actually apply to the things you want to be able to do.

2. Some of the biggest websites in the world are built with Ruby on Rails.

Basecamp, Airbnb, Bleacher Report, Fab.com, Scribd, Groupon, Gumroad, Hulu, Kickstarter, Pitchfork, Sendgrid, Soundcloud, Square, Yammer, Crunchbase, Slideshare, Funny or Die, Zendesk, Github, Shopify. As you can see, we were not kidding when we said biggest websites in the world.

3. Lots of startups are hiring for Ruby on Rails.

It’s not the most in-demand thing to learn for jobs in general – there are way more job openings out there for things like Java, PHP, even Python – but in terms of working at a startup, great Ruby on Rails developers are some of hardest people to find. This is mostly because…

Read more

Front-end vs. Back-end Developers

.

Do you have an interest in programming, website development, and application development? If so, then becoming a developer is a career move you may want to research. When it comes to developers, there are typically two groups to choose from: front-end developers and back-end developers. In this post, we’re going to look at the differences of each in terms of description, skills, programming languages, and earnings to help you in your decision.

Front-end vs. Back-end Developers

If you are either wondering what the difference is between a front-end developer and a back-end developer, or looking for an explanation that you can easily give your friends when they ask you what you do, here are a few ways of describing the two.

  • Think of your head. Your face would be the front-end that interacts with others using input from the eyes, ears, and nose and producing output through the mouth. Your brain would be the back-end where information from your eyes, ears, and nose is stored and where information to the mouth is sent from.
  • Think of your house. Things like the interior design, furniture, shingles, siding, windows, doors, etc. would be the front-end. The framing, insulation, beams, and foundation would be the back-end.
  • Think of your car. The engine, computer system, oil, gas, lights, etc. are a part of the back-end. Everything else is the front-end.

A front-end developer is someone who creates the front-end of a website or other application. Or the part that users engage with to get to the information in the back-end. A back-end developer is someone who creates the storage and output capabilities of said information.

Let’s say that a client wanted a custom WordPress website developed for their business. The front-end developer would work on the website that is shown to visitors on the web, plus anything that the client would see and use in their day-to-day business. This includes the WordPress theme itself and any customizations needed to the WordPress admin panel / dashboard.

The back-end developer, on the other hand, would work on optimizing the database, customizing the WordPress software itself, and creating the plugins needed to create the overall functionality of the client website, whether it is a simple blog or an ecommerce store.

Skills

So what kind of skills does a front-end developer need versus a back-end developer? Both are required to do some heavy lifting in the programming department. But front-end developers need a better eye for user interface design and visual appeal than back-end developers.

While front-end developers are not always the actual designers for the user interface of a website or application, they do have to know how to make the user interface aesthetically pleasing as well as functional. They will likely work closely with a designer if they are not designing the website or application themselves.

Additional skills that front-end website developers will need beyond programming include the ability to wireframe a website layout and design, create website designs in PSD or take PSD designs and turn them into functional websites, and deploy the website to the customer or employer’s hosting company.

Back-end developers, on the other hand, have little to do with the design of a website or application. Their job is to focus on what makes everything work behind the scenes. Hence, if you are not interested in design, then back-end development should be your focus.

Additional back-end developers skills needed beyond programming include the ability to integrate the user interface created by front-end developers with the server side logic, creating reusable code and libraries for future use, application optimization for speed and scalability, design of data storage solutions, and implementation of data security.

If you know what type of developer you want to be, the best way to determine the skills you will need is to look at profiles of other freelancer developers or job listings for specific types of developers.

Browse several different freelancer profiles or job listings (preferably ones that are at the income rate you desire to make).  There you can see the full range of skills. This is what you should be developing or highlighting when you approach customers or employers for work.

Programming Languages

Want to base your decision on whether you should be a front-end developer or back-end developer based on the programming languages you will need to be proficient in? Here’s what you need to know.

Front-end: There are only three front-end languages HTML, CSS, jQuery and Javascript.

Back-end developers need to be proficient in programming languages that render on the server side of a website or application. The most popular back-end programming languages are PHP, Ruby, Python, Ruby on Rails and Java. Others include .NET, C, and Perl. Back-end developers also need to proficient in working with databases like MySQL, Oracle, and SQL Server.

If you don’t have experience in any of these just yet, you may want to start by taking some beginner courses in a few different programming languages to see which ones you are most comfortable working with. Alternatively, you may want to determine what types of projects you would ultimately want to work on, then find out what would be necessary to know to work on them.

Education

Fortunately, there are lots of different ways to learn both front-end and back-end skills and programming languages. The route you take in education may depend on the type of employment you seek. If you want to work for a company full-time, you may want to browse job listings to see the requirements they have. Some will require specific degrees from universities to apply.

If you want to be a freelancer or start your own company, you may be able to forgo the format university route and self-educate through online courses. So long as you can deliver proven, you do not need to show a degree to make a living. If you are starting completely from scratch, you may need to develop a few projects on your own. This way your portfolio can demonstrate your experience to your first couple of clients. A strong portfolio is especially important for front-end developers.

Earnings

What you will make as a developer will depend on a lot of factors. These include the following:

  • Whether you are a freelance developer, contractor, part time, or full time employee.
  • Your specialties as a developer — the programming languages you are most proficient in, the tools you are most familiar with, etc.
  • Whether you are able to interact directly with the customer, have project management skills, and are able to manage a team.
  • If you are a freelance developer or contractor, the network you use to offer your services through.
  • Where you live and where you work from (telecommute or in-house).
  • How much education you have in your specialty.
  • The amount of experience you have working in your field.
  • How long you have worked at a particular company as a part time or full time employee.

Salary

While there are averages you can expect in terms of salary, all of the above will factor in on whether your earnings are closer to the lower end or upper end of the echelon. Indeed.com, for example, shows the following as average earnings for specific types of full time back-end developers. Note that some of the related job titles cross over into front-end development for comparison.

You can compare these to averages for full time front-end developers. Note that some of the related job titles cross over into back-end development for comparison purposes.

As you can see, the salaries can vary dramatically based on your experience (noted by junior, lead, and senior titles) and based on your specialties. Specialties also have an effect on salary, as noted by the difference in salary between a senior Javascript web developer who outearns the senior front-end developer.

For freelancers and contractors, what you will earn will be affected by the network you market yourself through, your reviews and ratings on that network, and your competition. Here’s a quick look at what the top back-end developers are charging on networks like UpWork (formerly oDesk).

These networks appeal to customers who are looking for developers who meet their budgets. They allow customers to find developers who charge anywhere from $10 per hour and to over $100 per hour. If you market yourself on these networks, you will have to compete with people across the gamut in terms of rates. Increasing what you charge on these networks will require you to demonstrate your skills. Through testing on the networks themselves, having a complete portfolio, and having great ratings and reviews.

Full Stack Developers

People who have skill in both front-end and back-end development are often referred to as full stack developers. In other words, they have a full range of skills that can be applied to the user interface and everything that makes it work in the background.

Some people consider a full stack developer not as good as a front-end or back-end developer. Often refer to the saying, “Jack of all trades, master of none.” But it’s also worth noting that the full phrase is “Jack of all trades, master of none, though oftentimes better than a master of one.”

As a developer, having both front-end and back-end proficiency means more opportunities. You will be able to apply to more contract, part time, or full time employment positions. As a freelancer, you will be able to take on more projects without being limited to front-end only or back-end only.

From the customer or employer perspective, you will be able to understand projects as a whole. Both how it needs to work for the user and how it needs to work in the background. You will give them one point of contact for all of their needs. And you will be able to support them when things go wrong on either side. This makes you even more valuable over the long term.

Demand for both front-end developers and back-end developers is continuously growing. Therefore, choosing either can help you create the career or business you have always wanted. Be sure to explore both worlds of development to determine which one is the best fit for you!

Why Codecademy Didn’t Work for Me

As someone who learned how to code pretty recently, I’m frustrated by the way that coding is taught to beginners.

I wanted to learn coding because: a) I wanted to build a Web app and it’s near impossible to find good developers in this market, and b) Thought coding would be a valuable skill to have (just read the back cover of Douglas Rushkoff’s “Program or be Programmed” if you want to see what I mean). Read more