Nobody Cares, if you Can’t Read it

Bootcamps that teach the New Swift language for iOS We like to describe code as pretty or ugly, clean or complicated, clever or cryptic. Those aren’t useful epithets: they describe emotions about code rather than describing code itself. It’s impossible for beginners to understand that kind of language. And it gives us the impression that we understand what we are saying.

When pushed to justify our thoughts about a piece of code, we like to talk about readability.  So, what makes code readable?  Can the code be understood easily? Can I hold large chunks of it in my head at any given time? How quickly can I triangulate a bug? Readability speaks to all of these questions and nobody cares, if you can’t read it.

Robert C. Martin emphasizes readability in his book Clean Code:

The ratio of time spent reading vs. writing is well over 10:1. We are constantly reading old code as part of the effort to write new code.

Because this ratio is so high, we want the reading of code to be easy, even if it makes the writing harder. […]

There is no escape from this logic. You cannot write code if you cannot read the surrounding code. The code you are trying to write today will be hard or easy to write depending on how hard or easy the surrounding code is to read. So if you want to go fast, if you want to get done quickly, if you want your code to be easy to write, make it easy to read.

This is a very good place to start. But it’s very hard to measure readability even when we know it has something to do with expressiveness, or simplicity, or doing one thing well. In order to measure readability, we can:

— Ask a few experts if they find a piece of code readable. If they mostly all agree that it is, then it is.

— Pair-program and ask our pair if they understand the code we just wrote. If there is no hesitation in the response, then it’s readable.

— Follow design guidelines like “keep functions under than 10 lines” or “keep classes under 10 methods”.

All these ways to measure readability are good habits, but we still haven’t figured out how to really pinpoint what it is that makes a piece of code readable.

Of course readability will depend on each programmer’s experience. A programmer seeped in Haskell will have a very different idea of what is readable compared to another programmer used to Java. But we shouldn’t use that as an excuse and sink into readability relativism. Clearly there are things to be said about readability.

A lot of static analysis tools offer metrics on codebases (lines of code, methods per class, files per module, etc) but I’m not sure that this problem can be solved by metrics. First, we need to figure out what we mean by readability.

Cognitive Load

I’d like to explore the concept of cognitive load. I will express readability in terms of cognitive load and I will analyze a few coding patterns in those terms.

Cognitive load is inherent in any attempt to link the various concepts that we hold in working memory. If it’s easy to see the link between two concepts, then the cognitive load is low. If it’s hard to draw a link, the cognitive load is high.

Cognitive load can be high because of inherent complexity in the problem at hand or because we don’t know enough about the problem domain, or perhaps the way the information is presented is complicated. I will mostly ignore these distinctions and just assume that we want to decrease cognitive load — no matter where it comes from.

Decreasing Cognitive Load

It’s hard to list all the ways that cognitive load can be decreased. It depends a lot on context. But when it comes to reading code, I believe two general ways of decreasing the load are:

— Allow the reader to discard concepts from working memory.

— Abstract away multiple concepts into one.

We can only hold a handful of concepts into our working memory. If the code we are reading requires us to hold more than that in order to understand its functionality, we will have to do a double-take or commit some of the lines of code to more permanent memory. This is not ideal: we want to be able to read code like good prose, top to bottom, without having to go back.

If the code is written so that I can discard a few branches or scenarios from my mind as I read it, I will be able to grok it more easily. Aspects (as in Aspect-Oriented Programming) are good examples of this: if the error handling is taken care of in an aspect somewhere else in the codebase, I don’t have to worry about it as I am reading the code handling the successful scenario.

As for abstractions, they allow us to consolidate concepts into one, and therefore to make space for more concepts in our working memory. The technical term for this process is chunking. It’s easier to remember a phone number by thinking of it as 3 groups of numbers (area code + 3-digit group + 4-digit group). In the same way, an ORM layer allows us to group a bunch of complicated concepts related to databases into one. This makes it easier to grok any piece of code touching the database.

Linguistic Syntax Trees

I like to use linguistic syntax trees as an illustration of cognitive load. A good discussion of those can be found in Steven Pinker’s book The Sense of Style. Syntax trees are used to display the relationships between words. You could use other representations but trees are good enough and they come easy to programmers. As an example, the English sentence “give me a chance” would have the following tree:

 Screen Shot 2014-10-28 at 9.50.14 AM

 

Syntax tree for the sentence “Give me a chance.”

The grammar terms like noun phrase aren’t all that important to the metaphor. It’s enough to grasp intuitively that “a chance” forms a compound. And that compound is linked at the top level of the tree to another noun phrase and a verb.

A flat tree makes for a sentence that is easy to parse: antecedents and connectors are rare and the idea is straightforward. In the sentence “A big car ran over that dog” there are no antecedents, verbs have a single object, and the number of connectors is limited.

Here’s another example where the tree grows as it branches to the right. The sentence is: “Would you like paper or plastic?”. (These are all examples from Pinker’s book.)

 Screen Shot 2014-10-28 at 9.51.44 AM

 

Syntax tree for the sentence “Would you like paper or plastic?”

The sentence is easy to parse since the complexity extends to the right. There is no backtracking necessary in order to follow the flow.

The opposite of a right-branching tree is of course a left-branching tree. It’s an anti-pattern. An example would be the sentence “Admitted Olympic Skater Nancy Kerrigan Attacker Brian Sean Griffith Dies”.

 Screen Shot 2014-10-28 at 9.53.36 AM

 

Syntax tree for the sentence “Admitted Olympic Skater Nancy Kerrigan Attacker Brian Sean Griffith Dies.”

This is a difficult sentence to parse since the links between the words are only made clear at the end of each noun phrase, if not later. The reader needs to keep a lot of noun phrases in working memory before being able to chunk them into groups and draw relationships between them.

The sentence above can be simplified in various ways by moving some branches to the right. Here’s one improved version:

The attacker of Olympic athlete Nancy Kerrigan – Brian Sean Griffith – dies.

Arguably, this sentence is complicated enough that it should be split in two. We should also note that the improved version is longer than the left-branching one. Sometimes conciseness hinders readability.

The shape of a linguistic syntax tree is a good predictor of how easy to read a sentence will be. To make a sentence easy to read, we should:

— Prefer flat trees.

— Prefer right-branching trees.

I find linguistic syntax trees useful since they capture some of our instincts about code readability. They capture cyclomatic complexity and a bit more too.

Examples of Coding Patterns

Let’s have a look at a few patterns and how they could be justified by their decreasing cognitive load. I’ll use Ruby for all examples.

Use Guard Clauses

Guard clauses are one-liners at the beginning of a function that take care of edge cases. The rest of the function is then free to handle the regular case.

In the code snippet below, the first line of the divide function takes care of the edge case where y would be zero. This is the guard clause.

Screen Shot 2014-10-28 at 9.55.19 AM

Guard clauses are a great example of reducing cognitive load by keeping the tree flat. Readers can file the guarded case away and don’t have to worry about it for the rest of the reading.

You could write the divide function above by using an if/else:

Screen Shot 2014-10-28 at 9.56.18 AM

But the if/else structure is not as flat: it requires extra effort to parse since we have to keep the two branches in working memory.

Inline Ifs

We can flatten the tree in a similar way as guard clauses by inlining if statements. Here’s an example of an inline if:

Screen Shot 2014-10-28 at 9.57.18 AM

The simplification is similar to a guard clause: the edge case is taken care of and the reader can discard that edge case from working memory.

Inline Variables

Inlining is a simple way to reduce cognitive load. Junior programmers tend to assign every temporary structure to its own variable and they then set out to manipulate those variables. Here is an example:

Screen Shot 2014-10-28 at 9.58.14 AM

Assigning a variable to every chunk is terrible for readability: it’s the equivalent of inserting a pronoun with a long-gone antecedent in a long-running sentence. The reader has to do a double-take to verify the contents of each variable. Backtracking is a major impediment to readability.

Assigning temporary values to variables can be useful for readability when the variable becomes a chunk that can be used to build a mental image of the functionality at hand. Otherwise, we can simplify the code by inlining all temporary structures.

Treat Variables As Constants

A major increase in cognitive load comes from having to keep track of the changing values of variables. A variable like index might evaluate to zero but the next time around, it will evaluate to one:

Screen Shot 2014-10-28 at 10.00.54 AM

Experienced programmers will wince at the above example. There are so many things to keep track of: sum will change at very iteration of the loop; so will index; and the range needs to be created carefully (0…items.length) in order to ensure that the sum will be calculated correctly.

Here’s the same functionality with a lower cognitive load:

Screen Shot 2014-10-28 at 10.01.51 AM

Here we have no variables to keep track of. As long as you’re clear what map and reduce do, you should have no problem reading this code from top to bottom without backtracking. And we are avoiding all possible off-by-one errors.

Keep If Branches Skinny

The following code incurs some cognitive load when we get to the top-level else block:

Screen Shot 2014-10-28 at 10.02.49 AM

You could be forgiven for not remembering what the main if/else was about when you get to its else clause.

The cognitive load can be decreased by branching to the right. In this case, we can make the if block skinny and insert the more complicated logic in the else block:

Screen Shot 2014-10-28 at 10.03.40 AM

Better to have skinny if’s than skinny else’s. It’s easier to discard a skinny if from working memory and concentrate on a heavy else.

In this case, we also flipped the condition to make it positive — which is a bonus. We could also use a guard clause to simplify further.

Branch Late

Any if/else block comes with some cognitive load. Branching is more difficult to grok than a linear flow. In the following example, we have to keep the if/else block in memory in order to understand what follows:

Screen Shot 2014-10-28 at 10.04.35 AM

In the above example, we have to learn a lot about title without knowing how it’s going to be used. Branching later in the process would ease the burden somewhat:

Screen Shot 2014-10-28 at 10.05.51 AM

The above code can be read without backtracking: we understand the purpose of the if/else block as soon as we encounter it.

To sum up, we can reduce cognitive load with if/else blocks by following these guidelines:

— Don’t use if/else blocks if possible.

— If you have to use them, branch as late as possible.

— Keep your if blocks skinny.

 

Write From A Single Layer Of Abstraction

This pattern is easily justified using the concept of cognitive load. Concepts that are at the same level of abstraction will be easily chunked by our brains and the code will be readable.

In Code Complete, Robert C. Martin explains:

We want the code to read like a top-down narrative. We want every function to be followed by those at the next level of abstraction so that we can read the program, descending one level of abstraction at a time as we read down the list of functions.

The following snippet shows code at varying levels of abstraction:

Screen Shot 2014-10-28 at 10.06.44 AM

When reading the above snippet, we have to follow the narrative across layers. The title of the potential email as well as the delivery of it are not interesting. Better to hide as much as possible behind appropriate layers of abstractions. The interested readers can always dig through. Improved code would read:

Screen Shot 2014-10-28 at 10.07.30 AM

The emailing would now occur in the notify_of method — out of sight from the current layer of abstraction. The layers of abstraction are better organized: the narrative is easy to follow. It’s possible to explain what the favorite method does without getting bogged down in the details. And it’s easy to skip low-level parts of the narrative we are not interested in.

There is more to the single-layer-of-abstraction idea, but a good rule of thumb is that lines of code should stick to the left margin. Indentation is a smell. This rule of thumb might be language-dependent but I have found it useful across many languages.

Cognitive Load Versus Code As Prose

Code that reads as prose is often touted as a good thing. Lines like “skip if number.even?” are satisfying to read and write. And this makes a lot of sense: we’re used to reading prose and some of the cognitive load of parsing code is removed if the code looks a lot like a natural language.

Intuitively, we might think that code has to be more complicated than English since we have to be a lot more precise. And we are delighted when we realize that the code is so simple that it can pretend to be English.

Frameworks like RSpec have taken this idea quite far. Here’s an example from the official site:

Screen Shot 2014-10-28 at 10.08.29 AM

The prose-like qualities are pleasing. Although few programmers could discuss the return value of eq or what kind of object the it function will create. These doubts point to drawbacks in writing prose-like code.

Would re-writing the code to read like English introduce many more components to chunk? Would it simply provide synonyms to well-known symbols or well-known abstractions? If so, perhaps we should let code be code.

Not to mention that prose can be easy to process or hard to process. Code can read like good prose, or bad prose. Code-as-prose is not a sufficient criterion for readability.

 

We should avoid avoid vague adjectives like “clean” or “ugly” to talk about code. If we want to improve our public debate over time, we should justify our opinions precisely and rationally.

And we should spend a little more time thinking about what we mean when we say that some piece of code is readable. How can we measure readability? How can we compare two design options?

And finally, if you were swayed at all by this article, perhaps you can use cognitive load or the metaphor of linguistic syntax trees to appraise readability. If not, let’s search for some other metaphor.

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Job Trends Report: The Job Market for JavaScript Developers

Are you thinking about attending a frontend dev bootcamp that teaches JavaScript or the MEAN Stack? This report brings together JavaScript developer job market trends from the Bureau of Labor Statistics, Dice.com, Code.org, PayScale, O’Reilly Radar, and more.

1 Million More Jobs Than Candidates

According to the  Bureau of Labor Statistics, in 2010 there were over 900,000 software developer jobs posted, with an expected increase of 30% by 2020. There’s also the often-cited analysis from Code.org that underscored the windening gap between supply and demand (the yellow wedge below).

Screen Shot 2014-06-24 at 6.49.07 PM.png

According to Robert Half International, starting salaries for professional occupations in the US are projected to increase an average of 3.8% in 2015. Professional occupations includes accounting and finance, technology, marketing, legal, and administrative. But when the study broke the data out further, they found that salaries will rise 50% faster for IT professionals – a whopping 5.7%.

What Should I Focus on Learning?

Irvine, Calif.-based IT recruiting firm CyberCoders conducted a study of 10,000 tech companies and their hiring requirements. Their findings revealed that out of all their recruits, those who had development skills — especially mobile, front-end, and open source development skills — were most in demand in today’s job market.

(more…)

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Insider’s Guide to Bloc’s Online iOS Bootcamp

tumblr_n2v7oqRrcg1tubinno1_1280Want an immersive program without sacrificing your job? Bloc is the world’s largest online iOS bootcamp, and has helped hundreds of grads launch new careers as developers. In this Insider’s Guide, we’ll introduce you to Bloc’s iOS course director, who will detail Bloc’s syllabus, which includes Swift, Objective-C, the iOS SDK, 2D gaming using SpriteKit, and mobile backend development using Parse. Next, we’ll give you a first-hand account of the Bloc program experience from a recent student and his mentor.  In the Info Session recording, Course Director Aaron Brager goes into great detail about how Bloc’s online bootcamp works, and what exactly you’ll learn in the iOS Course Syllabus Aaron has developed.

How Does an Online iOS Bootcamp Work, Anyway?

As coding bootcamps have sprung up over the past three years, Bloc has emerged as the leading online bootcamp. You’ll get the accountability of a bootcamp as you work one-on-one with a mentor, and a world-class iOS curriculum we wrote from scratch. At the same time, you’ll get the benefits of an online program: you can take Bloc from anywhere, and we can tailor the one-on-one program just for you. Finally, you can enroll in a part-time track, so that you can undertake this program without sacrificing your day job.

We believe in an apprenticeship approach to learning. An apprenticeship differs from a classroom in a few ways. Classrooms treat everyone the same. We’ll teach everyone individually. Classroom teach concepts, we focus on projects. Classrooms give you a certificate, we’ll give you a portfolio. You’ll apprentice one-on-one alongside a master developer to build real apps you can share with the world.

A First-Hand Look At Bloc’s Program

Meet Aaron – iOS Dev Course Director unnamed

Aaron has been developing web and native apps for iOS since iPhone launched in 2007. Prior to Bloc, Aaron was an iOS Developer at Sprout Social. He has also worked at Apple and deck5 Software.

Victor

Meet Victor – A Recent iOS Bootcamp Grad

Prior to enrolling in Bloc, Victor studied Computer Science in Brazil.  Today he’s a iOS developer at mobLee.  Victor’s projects include a custom web browser, Blockstagram, Blocspot, Alcholator, CKL Challenge, and Sapiens Logo Refactory.

Meet Falko – An iOS Mentor With a #1 Ranked iOS AppFalko

In addition to being a Bloc mentor, Falko manages an engineering team at a Silicon Valley healthcare technology startup, and has a long history in the health-tech space.  In addition to his engineering leaderships at startups and larger tech companies in the healthcare space, Falko is also the creator of the all-time top-grossing calorie-tracking app in the Germany iOS app store.

Bloc’s iOS Curriculum

The number one thing that prospective students want to know is what they’ll learn in Bloc’s online iOS Bootcamp. Here are some of the highlights from Bloc’s iOS Syllabus that was created for Bloc by our Course Director Aaron Brager. For complete details, watch the info session recording (below) where Aaron goes over the syllabus in great detail, or request a copy of the syllabus on the iOS bootcamp course page.

  • Set up your developer environment using Xcode 6, Git, and GitHub
  • Intro to Programming using Objective-C – the language used in industry today

  • Intro to Programming using Swift – Apple’s new developer language
  • Learn about Storyboarding, Basic Navigation, and Handling Gestures

  • Build your first app – a replica of Instagram – and learn to work with the Instagram API

  • Learn about Test Driven Development, iTunes Connect, and customizing your app for iPhone Plus, iPad Mini and iPad screen sizes

  • Learn to create a backend for your app using Parse

  • Create a 2D game using SpriteKit and Apple’s Game Center

  • Learn to work with iCloud APIs

  • Learn to Publish your app to the App Store

Mentorship

Mentors are the heart and soul of Bloc. Your mentor acts as:

  •  A coach providing insight into the best way to tackle a problem
  •  An experienced guide pair- programming when you get stuck
  •   A career mentor sharing years of industry insight and experience

Structure and Support

Bloc provides an integrated experience of structure and support. Program coordinators help students stay on track and mentors and course directors monitor an online help center so you can get un-stuck between mentor appointments

Download the Info Session Slides

Watch the Info Session Recording

 

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Insider’s Guide to Bloc’s Web Dev Online Bootcamp

Info-Session-Full-Stack-Web-Dev

Want an immersive program without sacrificing your job? Bloc is the world’s largest Web Dev online bootcamp, and has helped hundreds of grads launch new careers as developers. In this Insider’s Guide, we’ll introduce you to Bloc’s Web Dev course director, who will detail Bloc’s syllabus, which includes Ruby on Rails, HTML5, CSS, SQLite, and JavaScript. Next, we’ll give you a first-hand account of the Bloc program experience from a recent student and his mentor.  In the Info Session recording, Course Director Sasha goes into great detail about how Bloc’s online bootcamp works, and what exactly you’ll learn in the Web Dev Course Syllabus Sasha has developed.

How Does an Online Web Dev Bootcamp Work, Anyway?

As coding bootcamps have sprung up over the past three years, Bloc has emerged as the leading online bootcamp. You’ll get the accountability of a bootcamp as you work one-on-one with a mentor, and a world-class Web Dev curriculum we wrote from scratch. At the same time, you’ll get the benefits of an online program: you can take Bloc from anywhere, and we can tailor the one-on-one program just for you. Finally, you can enroll in a part-time track, so that you can undertake this program without sacrificing your day job.

We believe in an apprenticeship approach to learning. An apprenticeship differs from a classroom in a few ways. Classrooms treat everyone the same. We’ll teach everyone individually. Classroom teach concepts, we focus on projects. Classrooms give you a certificate, we’ll give you a portfolio. You’ll apprentice one-on-one alongside a master developer to build real apps you can share with the world.

A First-Hand Look At Bloc’s Program

Sasha headshot  circleMeet Sasha

Prior to becoming one of Bloc’s Course Directors, Sasha completed Bloc’s Web Dev Apprenticeship.  Sasha recruits, trains, and manages mentors.  Sasha also develops curriculum, and helps student with Job Prep Coaching.

brian-douglas-3Meet Brian

Prior to enrolling in Bloc, Brian worked as a solutions consultant at TechData.  Today he’s a software engineer for IZEA.  Brain’s projects include Chuych, an application he made during his Capstone Project.

AdamMeet Adam

In addition to being a Bloc mentor, Adam works as a developer in healthcare technology.   A Bloc graduate himself, Adam has mentored over 35 Bloc students.

Bloc’s Web Dev Curriculum

The number one thing that prospective students want to know is what they’ll learn in Bloc’s online Web Dev Bootcamp. Here are some of the highlights from Bloc’s Web Dev Syllabus that was created for Bloc by our Course Director Sasha. For complete details, watch the info session recording (below) where Sasha goes over the syllabus in great detail, or request a copy of the syllabus on the Web Dev bootcamp course page.

  • Set up your developer environment using Git, and GitHub
  • Start learning programming using Ruby
  • Build your first app – a replica of Reddit
  • Learn how to debbug a complex app
  • Use data validation to keep your data consistent and predictable
  • Integrate gems to add Markdown, Pagination, Image Upload, Tagging, and more.
  • Nest objects and routs, building complex associations into your app’s web interface
  • Learn how to add voting, with a ranking algorithm integrating time decay
  • Build in Favoriting, using after-actions and automatic emails
  • Integrate private topics and public profiles
  • Learn Test Driven Development with RSpec and Capybara
  • Apply JavaScripts and jQuery to manipulate data through AJAX — without reloading the page

Mentorship

Mentors are the heart and soul of Bloc. Your mentor acts as:

  •  A coach providing insight into the best way to tackle a problem
  •  An experienced guide pair- programming when you get stuck
  •   A career mentor sharing years of industry insight and experience

Structure and Support

Bloc provides an integrated experience of structure and support. Program coordinators help students stay on track and mentors and course directors monitor an online help center so you can get un-stuck between mentor appointments

Download the Info Session Slides

Watch the Info Session Recording

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Insider’s Guide to Bloc’s Online UX Design Bootcamp

tumblr_n1zut5Za4M1tubinno1_1280

Want an immersive program without sacrificing your job? Bloc is the world’s largest online UX Design Bootcamp, and has helped hundreds of grads launch new careers as developers. In this Insider’s Guide, we’ll introduce you to Bloc’s UX Design course director, who will detail Bloc’s syllabus, which includes Adobe’s Photoshop, Illustrator, HTML5, CSS3, and understanding Responsive Design. Next, we’ll give you a first-hand account of the Bloc program experience from a recent student and her mentor.  In the Info Session recording, Course Director Joey Kirk goes into great detail about how Bloc’s online bootcamp works, and what exactly you’ll learn in the UX Design Course Syllabus Joey has developed.

How Does an Online UX Design Bootcamp Work, Anyway?

As coding bootcamps have sprung up over the past three years, Bloc has emerged as the leading online bootcamp. You’ll get the accountability of a bootcamp as you work one-on-one with a mentor, and a world-class UX Design curriculum we wrote from scratch. At the same time, you’ll get the benefits of an online program: you can take Bloc from anywhere, and we can tailor the one-on-one program just for you. Finally, you can enroll in a part-time track, so that you can undertake this program without sacrificing your day job.

We believe in an apprenticeship approach to learning. An apprenticeship differs from a classroom in a few ways. Classrooms treat everyone the same. We’ll teach everyone individually. Classroom teach concepts, we focus on projects. Classrooms give you a certificate, we’ll give you a portfolio. You’ll apprentice one-on-one alongside a master developer to design real apps you can share with the world.

A First-Hand Look At Bloc’s Program

 JoeyMeet Joey – UX Design Course Director

Prior to joining the Bloc team, Joey helped build a team of designers to lead one of the country’s largest media company’s User Experience group.  In addition to writing the course material for the UX Design Course, Joey has worked with several companies around the world in designing brands, web sites and mobile applications. He also tends to build out anything he designs, using HTML/CSS, Javascript, and sometimes, Rails.

Meet GemmaGemma

Prior to enrolling in Bloc, Gemma worked as an Engineer in San Francisco.  Today she’s a Frontend Developer at Sephora.   Gemma’s projects include Jottly, Juvo, and Paycrave.

NinaMeet Nina

Nina worked as a Marketing Manager at Webpass before enrolling in Bloc.  She now works at Tata Communications as an Interaction Designer. Nina’s projects include, Jottly, Paycrave, Teee, Wings of Angels Transport.

Meet Terry - A UX Design MentorTerry

In addition to being a Bloc mentor, Terry works as a developer in healthcare technology.  He has also acted as the Creative Art Director for the Bohlson Group, IndianaUploaded, and The Brand Artist.  Terry co-founded IndianaUploaded and worked as a graphic designer for The Brand Artist.

Bloc’s UX Design Curriculum

The number one thing that prospective students want to know is what they’ll learn in Bloc’s online UX Design Bootcamp. Here are some of the highlights from Bloc’s UX Design Syllabus that was created for Bloc by our Course Director Joey Kirk. For complete details, watch the info session recording (below) where Joey goes over the syllabus in great detail, or request a copy of the syllabus on the UX Design bootcamp course page.

  • Learn the fundamentals and the constraints of designing for mobile.
  • Design your second app – this time with a little less help from us, and a little more ingenuity. Create a food truck mobile payments app for iOS7 and iPhone.
  • Learn the differences in design patterns between iOS, Android and Windows Phone by re-designing your food truck mobile payments app for Android and Windows Phone.
  • Gain an understanding of presenting, selling, defending and critiquing your work.
  • Discover the principles of great user experience.
  • Learn about user-centric design, focusing on users and goals.
  • Design your third app, a complex web app similar to Kickstarter.  Design user flows and wireframes.
  • Find out how personas and user research can influence your final product.
  • Define your personal brand identity.
  • Translate your brand identity into the design for your fourth app – a portfolio website dedicated to displaying your personality and design work.
  • Combine everything you’ve learned as you design, code, test, and launch your portfolio website. Showcase the skills you’ve learned from being a Bloc design apprentice.
  • Build your portfolio to show your potential clients or employers.

Mentorship

Mentors are the heart and soul of Bloc. Your mentor acts as:

  •  A coach providing insight into the best way to tackle a problem
  •  An experienced guide to help you when you get stuck
  •  A career mentor sharing years of industry insight and experience

Structure and Support

Bloc provides an integrated experience of structure and support. Program coordinators help students stay on track and mentors and course directors monitor an online help center so you can get un-stuck between mentor appointments

Download the Info Session Slides

Watch the Info Session Recording

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Insider’s Guide to Bloc’s Online iOS Bootcamp

tumblr_n2v7oqRrcg1tubinno1_1280

Want an immersive program without sacrificing your job? Bloc is the world’s largest online iOS bootcamp, and has helped hundreds of grads launch new careers as developers. In this Insider’s Guide, we’ll introduce you to Bloc’s iOS course director, who will detail Bloc’s syllabus, which includes Swift, Objective-C, the iOS SDK, 2D gaming using SpriteKit, and mobile backend development using Parse. Next, we’ll give you a first-hand account of the Bloc program experience from a recent student and his mentor.  In the Info Session recording, Course Director Aaron Brager goes into great detail about how Bloc’s online bootcamp works, and what exactly you’ll learn in the iOS Course Syllabus Aaron has developed.

How Does an Online iOS Bootcamp Work, Anyway?

As coding bootcamps have sprung up over the past three years, Bloc has emerged as the leading online bootcamp. You’ll get the accountability of a bootcamp as you work one-on-one with a mentor, and a world-class iOS curriculum we wrote from scratch. At the same time, you’ll get the benefits of an online program: you can take Bloc from anywhere, and we can tailor the one-on-one program just for you. Finally, you can enroll in a part-time track, so that you can undertake this program without sacrificing your day job.

We believe in an apprenticeship approach to learning. An apprenticeship differs from a classroom in a few ways. Classrooms treat everyone the same. We’ll teach everyone individually. Classroom teach concepts, we focus on projects. Classrooms give you a certificate, we’ll give you a portfolio. You’ll apprentice one-on-one alongside a master developer to build real apps you can share with the world.

A First-Hand Look At Bloc’s Program

Meet Aaron – iOS Dev Course Director unnamed

Aaron has been developing web and native apps for iOS since iPhone launched in 2007. Prior to Bloc, Aaron was an iOS Developer at Sprout Social. He has also worked at Apple and deck5 Software.

Victor

Meet Victor – A Recent iOS Bootcamp Grad

Prior to enrolling in Bloc, Victor studied Computer Science in Brazil.  Today he’s a iOS developer at mobLee.  Victor’s projects include a custom web browser, Blockstagram, Blocspot, Alcholator, CKL Challenge, and Sapiens Logo Refactory.

Meet Falko – An iOS Mentor With a #1 Ranked iOS AppFalko

In addition to being a Bloc mentor, Falko manages an engineering team at a Silicon Valley healthcare technology startup, and has a long history in the health-tech space.  In addition to his engineering leaderships at startups and larger tech companies in the healthcare space, Falko is also the creator of the all-time top-grossing calorie-tracking app in the Germany iOS app store.

Bloc’s iOS Curriculum

The number one thing that prospective students want to know is what they’ll learn in Bloc’s online iOS Bootcamp. Here are some of the highlights from Bloc’s iOS Syllabus that was created for Bloc by our Course Director Aaron Brager. For complete details, watch the info session recording (below) where Aaron goes over the syllabus in great detail, or request a copy of the syllabus on the iOS bootcamp course page.

  • Set up your developer environment using Xcode 6, Git, and GitHub
  • Intro to Programming using Objective-C – the language used in industry today

  • Intro to Programming using Swift – Apple’s new developer language
  • Learn about Storyboarding, Basic Navigation, and Handling Gestures

  • Build your first app – a replica of Instagram – and learn to work with the Instagram API

  • Learn about Test Driven Development, iTunes Connect, and customizing your app for iPhone Plus, iPad Mini and iPad screen sizes

  • Learn to create a backend for your app using Parse

  • Create a 2D game using SpriteKit and Apple’s Game Center

  • Learn to work with iCloud APIs

  • Learn to Publish your app to the App Store

Mentorship

Mentors are the heart and soul of Bloc. Your mentor acts as:

  •  A coach providing insight into the best way to tackle a problem
  •  An experienced guide pair- programming when you get stuck
  •   A career mentor sharing years of industry insight and experience

Structure and Support

Bloc provides an integrated experience of structure and support. Program coordinators help students stay on track and mentors and course directors monitor an online help center so you can get un-stuck between mentor appointments

Download the Info Session Slides

 

Watch the Info Session Recording

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Insider’s Guide to Bloc’s Frontend Dev Online Bootcamp

tumblr_n1rpk5pptt1tubinno1_1280

Want to get a bootcamp-like immersive experience without sacrificing your job? Bloc is the world’s largest online bootcamp, and has helped hundreds of grads start companies and switch careers. Whereas an in-person bootcamp is a classroom-based experience that requires being there 40+ hours/week in a city like San Francisco, Bloc’s online bootcamp model allows students to learn online, one-on-one, with a mentor vested in their success. Students come from all walks of life to learn everything from iOS development to UX Design. Get a first-hand account of how Bloc works, and a detailed look at the syllabus.

Joe

Meet Joe – Frontend Web Dev Course Director

Prior to becoming the Course Director for Bloc’s Frontend Development program, Joe was a developer at Lapel and ESM Group.  Joe developed the Frontend curriculum and recruits, trains and manages Frontend Mentors.  In addition to mentoring with Bloc, Joe is hard at work on another startup.

In addition to mentoring with Bloc, Joe is hard at work on another startup.

StephenMeet Stephen

Prior to enrolling in Bloc, Stephen was a Digital Marketer at Redbubble, who had dabbled with Tealeaf Academy.  Today he’s a Bloc student and has completed projects such as Blocjams.

Garrett

Meet Garret

Prior to enrolling in Bloc, Garret was a Marketing Coordinator at 99 Designs.  Today he’s a Bloc student and has completed projects such as Blocjams and Bkind Photography.

Matt

 

Meet Matt

Prior to enrolling in Bloc, Matt was a freelance developer in the healthcare technology.  His areas of expertise are Ruby on Rails, NodeJS, JavaScript, and AngularJS Python.

 

Frontend Development Curriculum – HTML, CSS, JavaScript and AngularJS

Now that you’ve met a few alumni, mentors, and our Course Director, let’s talk about the syllabus for Bloc’s Frontend program. Here are the highlights that we cover:

  • Intro to Object Oriented Programming using JavaScript

  • Intro to Frontend Programming using HTML5, CSS3, and JavaScript

  • Intermediate CSS, Animations, Intermediate JavaScript and jQuery

  • Working with a JavaScript backend using NodeJS and Express

  • Advanced Frontend Framework: Create a Single Page Application using AngularJS

 

Online Bootcamp – How it Works

  • The Bloc Approach to Teaching and Learning

  • Mentor-led, project-based learning

  • A Deep Dive into the Bloc Syllabus with Sasha

  • Brian’s Bloc Experience & Advice for Beginners Hoping to Switch Careers

 

Mentorship

Mentors are the heart and soul of Bloc. Your mentor acts as:

  •  A coach providing insight into the best way to tackle a problem
  •  An experienced guide pair- programming when you get stuck
  •   A career mentor sharing years of industry insight and experience

Structure and Support

Bloc provides an integrated experience of structure and support. Program coordinators help students stay on track and mentors and course directors monitor an online help center so you can get un-stuck between mentor appointments

Download the Slides

Watch the Info Session Recording

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Every Bloc Bootcamp Now Offers Job Prep

Posted October 14, 2014 & filled under Bootcamps, Job Prep, Jobs

buildings-high-rise-manhattan-2324-742x350

We are thrilled to announce that starting today, all of Bloc’s online bootcamps now include four weeks of Job Prep, after graduation. At the end of your bootcamp we’ll assess your portfolio of work built during your program and speak with your mentor about you’re readiness for job opportunities. To qualify for job prep, you must demonstrate a high level of proficiency with your course material.

Why do we do this? We believe in outcomes and accountability. If you’re not ready for job prep after graduation, we’ll put you on the right path so that you can take advantage of our job prep program when the you’ve achieved a higher level of proficiency. We’ve structured each bootcamp such that if you stay on track, you will be ready for job opportunities upon graduation.What happens after the Bloc Apprenticeship is over?

After the core program ends, Bloc’s Talent Director will review a graduates work, assessing if they’ve completed the curriculum, completed the requisite number of projects, and received a positive review from their mentor. If so, students will be invited to join the Job Prep Phase, a four week intensive career prep program to help you land your first job as a junior developer. You’ll spend four weeks after graduation working with 1-on-1 with our Talent Director as you prepare to land a job.

The Career Phase curriculum covers:

  • Learn What Employers Look For
  • How to authentically craft your online presence via your portfolio, GitHub, LinkedIn, resume.
  • The Hiring Process
  • What should you expect when recruiting for developer jobs? We’ve collected the best advice from our network of over 100 mentors.
  • Learn how to effectively communicate and network with employers.
  • Technical Interviews
  • Example Questions and Answers
  • A 30-Minute Mock Phone Screen
  • Two In-depth 1-Hour Mock Interviews with Coaching
  • How to handle objections, rejection, and salary negotiation

Are you guaranteeing me a job?

Nope, just world-class training. Unlike some bootcamps who graduate one cohort at a time, and have only graduated a handful of cohorts in their history, we’ve had students graduating every week for nearly three years, which has given us a lot of time to iterate on our approach and curriculum, to ensure you are job-ready. Our Talent Director will work with you to get prepared, and introduce you to recruiters, but there are no guarantees. For examples of alumni who have put in the work and found success, check out our alumni page.

Does Bloc take a percentage of my income when I get a job?

No, we don’t take any of your income. And we don’t take any placement fees if you get a job through one of our introductions.

How long will it take me to find a job?

This varies from student to student. It can take anywhere from one week to six months post-graduation. While the Bloc Career Services team is dedicated to assisting you in your job search, it is ultimately up to you to find and land a junior development position.

 

For more information on our iOS, AndroidFrontend Web Development,  Full Stack Web Development, and UX Design bootcamps check the course pages.

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

Practicing Technical Writing within a Bootcamp

irish-hands“Writing is a tool that enables people in every discipline to wrestle with facts and ideas. It’s a physical activity, unlike reading. Writing requires us to operate some kind of mechanism — pencil, pen, typewriter, word processor — for getting our thoughts on paper. It compels us by the repeated effort of language to go after those thoughts and to organize them and present them clearly.”

- William Zinsser, Writing to Learn

At Bloc, we feel strongly that the best way to learn is to teach. Teaching’s power to educate the educator is significant, and we believe it owes little to the classroom, audience, or interpersonal interactions. Teaching is a valuable learning tool because it depends on actively digesting, rewording, and simplifying material.

Great teachers deconstruct and simplify their subject before they step in front of a class. But teaching is just one way to accomplish this conceptual reorganization. At Bloc, we feel writing is an equally effective alternative. Technical writing about new information is a way to teach yourself.

(more…)

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone

San Francisco Swift Workshop with Girl Develop It

Bloc's Online Bootcamp Hosted a iOS Swift Workshop in San Francisco with Girl Develop It

We were thrilled to host members of Girl Develop It alongside folks from Bloc’s bootcamp community here at Bloc’s offices in San Francisco. In this workshop a few folks from Bloc taught a brief workshop on how to get started developing your own iOS app. Below are some pictures from the event. Thanks so much to GDI for their support. This was our first San Francisco Swift workshop, and we hope to do them periodically in the future.

Swift Workshop Overview

  • Intro to Swift- Stan began by covering a the basics of the Swift programming language. Next, Stan compared and contrasted Swift with Objective-C.
  • How an App Fits Together- It’s important to understand how an app fits together. Stan walked attendees through Swiftris, setting up the iOS Developer Environment with Xcode, using Spritekit for 2D gaming, and the basics of game logic using Swift.
  • Breakout- For 60 minutes the attendees work through e-book in pairs to get a feel of Swift on their own, while Bloc instructors moved around the office helping others.

(more…)

Tweet about this on TwitterShare on LinkedInShare on FacebookEmail this to someone