Alumni Spotlight: Fong Fan

fan_fong_spotlight_blog

At Bloc, we’ve taken note of how impressive our student body is. Just when we think our alumni have done it all, we hear from several more about how they’ve built incredible products, successfully pursued entrepreneurship, or transitioned into newer, better careers. We had the opportunity to interview one of our many outstanding graduates, Fong Fan, who recently joined the Adorable team as a developer.

Tell me about yourself, Fong! Who are you, and how did you end up enrolling in Bloc? What were you doing before you enrolled in Bloc?

  • I was working at Epic as a technical services engineer, solving technical software problems for hospital organizations. The problems ranged from operational to technical and I gained a lot of exposure to hospital policies and workflows. The philosophy of customer success drove a lot of the corporate culture and was heavily incorporated in my day to day decisions. Overall, I gained a wide breadth of experience in technical problem solving, project management, and customer service through my tenure at Epic.

Tell me more about your new job as a Developer after Bloc! Where do you work and what’s your role?

  • Adorable is a software development consulting company that delivers web services backed solutions. We work directly with clients to ensure their success, whether that means developing a product for them from scratch or providing them with some of our extremely talented engineers to work on building out new features or addressing their pain points.
  • My role so far has been mainly focused on learning the technologies that we specialize in and getting up to speed on them. I have only been there for a month so far but I’ve been focused on honing my front end skills by learning React.js as well as prototyping a project to determine its fit in the market. I have also been helping out with YWeb  (a web development career training program for underrepresented groups in the technology field) as well as the local Ruby on Rails Meetup group – both of which are sponsored by Adorable IO.

Are you excited for this opportunity?

  • I have been really grateful for how welcoming the team has been as well as the emphasis on mentorship. I’ve definitely learned a lot in my first few weeks and I’ve been exposed to a lot of stuff I otherwise never would have seen (at least for a while). I definitely have a large mountain to climb but I’m glad I’ll be doing so with the team at Adorable.

How was the job-hunt process?

  • Grueling. Most of my online applications were probably filtered out or flat out rejected. I had more success with referrals and companies that were familiar with bootcamp students/had an onboarding program. In the end though, I found Adorable through the local meetup where I was able to establish a relationship with Jim (founder of Adorable).  To be honest, this aligned with all the various articles I’ve read regarding job hunting – it’s not necessarily what you know, but who.

What are your next steps?

  • I’m going to spend a lot of time at work and outside of work continuing my education and building my skills. At work, I focus on pairing, working on projects, and learning from the wide breadth of knowledge of my co-workers. Outside of work, I listen to podcasts (Ruby Rogues, JavaScript Jabber, TEDTalks), practice on Upcase, read blogs, and talk shop with some developer friends. But don’t worry – I still play volleyball, watch TV, and grab drinks with friends to keep my sanity. 😉

What’s something you know now that you wish you would’ve known when you started Bloc?

  • Learning is hard. In school, we learn to pass exams and then forget it all (mostly). In real life, we have to learn and continue to build on pre-existing knowledge and experience to continue pushing the boundaries of what we can accomplish. This is a different mindset that I learned to adopt as I progressed through Bloc. I realized that a good curriculum and a great mentor can only take you so far. If there’s a concept or a technology that you want to learn to use, you really need to have the grit and passion to learn it yourself.

What was the hardest part of your learning journey?

  • (basically what I had above – that learning to create software is not going to be simple and straightforward)

What advice would you give to other Bloc students?

  • Don’t expect anything to come easy. It’s a tough career with lots of challenges and roadblocks. Despite having a formal education in engineering and having taken a few computer sciences courses, completing the curriculum at Bloc required me to spend a lot of time studying. I spent several hours a day (balancing a full time job in a challenging role) learning and struggling through the exercises.

A lot of students, while they go through Bloc, often feel defeated when they’re at the toughest part of the learning curve. If you could give any words of encouragement, what would it be?

  • Stick with it. Grit is often the defining characteristic of successful people. This means debugging, researching, posting on Stack Overflow, reaching out to the slack community, or talking with your mentor – whatever you need to do to get the job done.
  • I liked watching/listening to motivational videos on YouTube when I felt unmotivated. Nothing like listening to CT Fletcher or Arnold Schwarzenegger to get pumped up about writing some code! One of my role models is Elon Musk so I get motivated listening to his talks about his inspirations and motivations.

Where do you see yourself in one year?

  • In one year, I better be looking back at the code I’m writing now and thinking “This is some damn awful code. Who wrote this? Oh… me”.      
Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

Now Arriving, A New Kind of Designer

Screen Shot 2016-04-20 at 5.53.29 PM

By Chris Courtney, Lead Design Mentor at Bloc

Less than a month ago, KPCB John Maeda outlined his vision for the evolution of the modern designer while unveiling the latest edition of his #DesignInTech report at SXSW.

The high-level overview of these future designers includes:

  • Ability to build to business needs while maintaining empathy for the individual customer.
  • Can operate with fluidity on large projects, designing for customers at scale.
  • Delivery high quality design work that customers require in the products they trust.

While Maeda painted these individuals as something that will exist in the future, we know that these designers exist today—because they lead some of tech’s biggest success stories. AirBNB, SoFi, Pinterest, Slack, Github and scores of others were co-founded by designers who resemble the outline that Maeda describes.

Screen Shot 2016-04-20 at 5.42.57 PM

It’s no surprise then, that as employers look to great design as a way to differentiate, the demand for great designers will grow commensurately. CNN named design one of the best jobs of 2015, projecting the market for designers to grow 18% over the next 10 years.  

 

Screen Shot 2016-04-20 at 5.42.52 PMNor do we foresee an end to this growth. There will never be enough designers in a world that continues to create new screens (TVs, Watches, VR) to interact with and new systems so complex they never truly finished (Facebook, Twitter, Android, iOS).

 

Now add to the mix an education and training landscape ill-equipped to deliver the quality and scale of design talent required by a rapidly evolving vision for this ideal designer. University programs have been slow to adapt both to the increased demand for technical skills, as well as to the specific skills students need to be employable.

That’s why we are thrilled to announce that Bloc is launching the 24-week Product Design Track to prepare students for a new profession as a next-generation digital product designer.

Today.

 

So What is a Product Designer?

The industry has many names for these polymaths who who take a holistic approach to designing digital products and services. Whether you prefer Design Unicorn, Full Stack Designer, or Product Designer, this new breed of design leader unifies a product’s design across workflow, user experience, user interaction, and visual design to create a seamless product or service. Product Designers are able to see the forest and the trees together. They guide and shepherd the overall experience.

Over the past three years, we have worked closely with companies around the globe to determine the core skills that enable product designers to immediately contribute in the workplace and created a program to consistently produce designers that understand how to build products that solve problems for their users while meeting business requirements. Additionally, our graduates can articulate the design process while carrying out ALL of its component parts (research, building, testing, deployment) – a comprehensive skillset critical for anyone who is going to be working on a cross-functional team for years to come.

Our new Product Design Track combines a new curriculum with a stronger network of industry leading mentors to deliver a comprehensive training regimen for aspiring designers. Coupled with a rigorous review and testing process, Bloc graduates emerge ready to go straight to work as a professional designer, with extensive experience working closely with an experienced design mentor to hone their skills…

I’m proud of the work that the Design Mentor & Curriculum teams at Bloc have done to bring this new offering to life and know that we’re going to be celebrating the launch of even more design careers with the Product Design Track.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

What Companies Look for in Software Developers

Software developer positions are highly desired. Just as astronauts, Supreme Court justices, and Hogwarts professors must have a variety of skills and knowledge, software developers have a combination of technical knowledge and soft skills. This post explores the skills that many companies look for.

 

Familiarity With Multiple Languages

While many software developers find themselves working primarily in only one language, it’s helpful to have experience in others. Fluency in multiple languages exposes developers to different design patterns and allows them to work on a wider variety of projects. Software developers working in web development may want experience in a backend language like Ruby or Python and a frontend language like JavaScript or CoffeeScript. In iOS app development, developers should know Objective-C and Swift. A person who knows multiple languages is called a polyglot, and this skill set is highly desired.

 

Knowledge of Modern Software Development Tools

To be effective, software developers need to know how to use modern tools:

– version control software (like Git)
– issue trackers (like Jira and Pivotal Tracker)
– web computing services (like Amazon AWS and Heroku)
– database programming software (like SQLite and PostgreSQL)

The knowledge of these is critical to the duties of a developer. Without knowing the tools that modern teams use, it may be difficult to collaborate with team members, organize source code, or prioritize tasks.

 

Strong Negotiation Skills

Software developers are responsible for implementing new features. As part of this process, they’ll need to work with developers and engineers on their team to select a specific approach. Debate, disagreement, and discussion are common, so negotiation, conflict management, and compromise skills are very important. While the computer programming part of the job is critical, software developers are expected to be team players who contribute more than simply churning out code.

 

Understanding of Algorithms, Data Structures, and Complexity

Great code should be understandable and maintainable, but it should also perform efficiently. To write performant code, software developers need to understand how data structures, algorithms, and complexity relate. Different structures for storing data (like queues, graphs, trees, hash tables, etc.) can improve the way data is organized. Algorithms can provide different ways to search or sort this data, and different algorithms are preferred for different use cases. Complexity measurement, analysis, and optimization allows us to describe, measure, and improve the performance of a solution for a given problem.

Combined, these skills allow software engineers to write code that runs faster or takes up less space. Everybody hates to wait, so this work can vastly improve a user’s enjoyment of a product. Great performance can also help a product survive longer because it has a good foundation.

 

Task Organization and Management

Software engineers are given a wide variety of tasks from small but critical bug fixes to architecting a major project. While issue trackers like Jira and Pivotal Tracker can help organize these tasks, engineers must comprehend the tasks and their relative priority, consider co-workers and customers whose work depends on these tasks, and organize their workflow accordingly. Critical thinking about task and workflow management is an important part of software development.

 

Practice

Whether it’s previous jobs, open-source software contributions, or your own personal projects, software engineers are expected to have practice working with large and complex code bases. This helps them understand how different parts of a program work together, which enables them to effectively add features and understand the cause of bugs.

 

 

Considering a career in software engineering? Consider learning with your own personal mentor in Bloc’s Software Engineering Track.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

Why Apprenticeships Are on the Rise

Ask any VP of Engineering or CTO, and they’ll tell you hiring talented developers is getting harder. Meanwhile, ask one of the millions of underemployed millennials, and they’ll say they are willing to learn, but can’t get their foot in the door. Apprenticeship was once a commonplace feature of the American economy, but for the last 30 years it has been in decline. Apprenticeships are the critical link to closing the skills gap for employers and reducing unemployment for millennials.

To understand why apprenticeships can bridge the gap, let’s take a look at the marketplace for technical talent.

Traditional Universities are Failing Us

Stocksy_txp4eee0265PnA000_Small_4877

First, the gap between supply and demand for technical talent is widening. On the supply side of the marketplace for technical talent, we have universities. According to the Department of Labor, 400,000 new CS grads will enter the workforce between 2010 and 2020. In that same period, nearly 1.4 million new tech jobs will be created. That’s a shortage – a skills gap of – 1 million more jobs than graduates.

Second, even those students graduating in computer science, aren’t prepared for careers in software engineering. Universities care about helping students become job-ready. But that isn’t their singular goal. Many also seek to teach a liberal arts education and to publish ground-breaking research. Because of this, there is no singular focus on one goal. As a result, students graduate ill-prepared for industry. According to Brad Neese, director of Apprenticeship Carolina, employers are seeing “a real lack of applicability in terms of skill level” from college graduates.

For example, top tier university computer science curricula often include courses in advanced math, physics, compilers, and operating systems. When we surveyed engineers at top companies like Twitter, Facebook, Google, and Amazon, they told us they used less than 25% of their university education in their career. According to Rob Gonzales, co-founder of Salsify, “many ‘core’ CS courses really aren’t that critical for becoming very productive engineers. I’ve never had to write a compiler or operating system in my career, and the last time I thought about finite automata was 2001 when I was studying them myself.”

Meanwhile, few universities teach essential skills a software engineer will use every day. According to Mo Kudeki, a Software Engineer at Twitter, “Although I went to a top Computer Science program, there are software engineering topics that we never covered that are crucial to being a great engineer, like how to methodically debug something, and how to give and receive a good code review.”

All of these factors combined result in a tremendous mismatch between the skills with which American students graduate and the skills needed by employers.

Employers are Hungry But Ill-Equipped to Train

chalkboard-deathtostock-01

While employers are hungry to recruit great talent, their appetite for growing that talent themselves has been declining for the past decade. According to Lauren Weber of the WSJ, apprenticeships in the US have declined over 30% from 2003 to 2013.

Furthermore, even those companies that want to provision such training may be unable to do so. Training programs require experienced instructors. According to Gonzales, “you must have someone to manage the program full time, including doing daily coaching, code reviews, design sessions, planning sessions, one-on-ones, communication outside of the group to gather requirements, etc. This person should be respected throughout the organization, as getting the program started and effective is going to be a bumpy road that will draw on company resources even beyond the coach.”

Unfortunately, the shortage of technical talent has left most companies without the bench strength to fill existing headcount and also train a large pool of junior developers. According to Marcy Capron, the founder and CEO of Chicago-based Polymathic: “Companies don’t have an infrastructure for ongoing learning. We really need a guide to mentoring junior devs. Hourly consulting firms can’t afford it because you can’t bill mentoring to the client.

We’re Seeing Renewed Investment and Innovation in Technical Skills Training

pair-programming-thestocks-01

So with universities failing us, and employers hungry but unable to grow their own talent, a new breed of apprenticeship-like programs have leveraged technology to deliver better outcomes, more affordably than ever before. Computer science bootcamps put students through compressed programs to prepare them for coding jobs. These bootcamp programs have found traction with employers and graduates alike. The first coding bootcamp was founded just four years ago, but Course Report estimates that over 150 bootcamps graduated more than 16,000 alumni in 2015 – a combined estimated market of $180M, up from $0 in 2011.

According to Western Governors University President Bob Mendenhall in the Washington Post “Neither accreditation nor regulation has caught up with the power of technology to impact both the quality and cost and accessibility of higher education.” And last month, Udacity raised $105 Million bringing their valuation to $1 billion, Dev Bootcamp was acquired by Kaplan, and Bloc recently announced a year-long Software Engineering Track, which includes a 3 month apprenticeship, before students start the job search. And now a slew of specialized apprenticeship programs are emerging.

Employees are also more open to non-traditional university education than ever before. According to a 2014 survey by Glassdoor, 72 percent of employees said they value specialized training over earning a degree. What’s more, 63 percent of respondents said they believe that nontraditional ways of learning new skills — such as certificate programs, bootcamps, webinars and massive open online courses — could help them earn a bigger paycheck. This growth for nontraditional skills training may be coming at the expense of graduate programs, with more than half (53%) of employees saying a graduate degree is no longer necessary to be offered a high-paying job.

So What Should We Expect to See in 2016?

As apprentice-like programs cross the chasm from early adopters to early majority, we may see see savvy millennials foregoing the traditional 4-year campus experience in favor of a leaner hybrid, pairing community college with a technical apprenticeship that gets them into the workforce and learning on the job earlier and with less debt.

With the hype around coding bootcamps reaching it’s zenith, we may see these programs coming full-circle, as they begin adding-back curriculum covering the computer science theory that they once eschewed.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

Amazon Teams Up With Bloc to Launch Alexa Developer Training

Alexa

We’ve teamed up with Amazon to teach Bloc students how to create new capabilities, or skills, for Alexa, the voice service that powers the Amazon Echo.

At Bloc you’ll learn cutting-edge technologies and industry-relevant skills. Gartner has named ‘Internet of Things’ one of the top trends disrupting technology in 2016 and beyond, which is why it’s important for you to gain experience working with these devices. Alexa is a perfect place to start, because it can be used to control smart home devices like the Amazon Echo, NEST thermostats, Philips Hue lightbulbs, and Belkin WeMo switches.

This is Bloc’s second Internet of Things project (our first was a project to create an Apple Watch app). The new Alexa project is available to those who enroll in Rails Web Development, Frontend Web Development, the Full Stack Track, or the Software Engineering Career Track.

Why You Should Learn to create Alexa Skills

Completing the Alexa project offers these rewards:

  • First, your new skills will be published in the Alexa app (Amazon’s voice app store), which will in and of itself be a great addition to your portfolio.
  • Second, you’ll gain experience with three additional platforms: Amazon’s Alexa Skills Kit, AWS Lambda (part of Amazon Web Services), and the NodeJS backend JavaScript framework.
  • Third, if you get your Alexa skills certified by June 30, 2016, you’ll be eligible to receive a free Amazon Echo. This is a Bloc exclusive benefit.
  • Finally, try your luck at getting a job on the Alexa team! Work with your mentor and the career support team at Bloc to polish your portfolio and resume, and submit your application for one of the Alexa team openings.

More About Amazon Alexa

CeJKL6iWEAAWz8W.jpg-large

Alexa adds voice capabilities to devices like Amazon Echo, Fire TV, Echo Dot, and Amazon Tap. Alexa is well-positioned to be at the center of a connected home, has been the subject of Super Bowl ads, and is being hailed by many as the most game-changing platform since iPhone. The Alexa developer community has already released over 400 skills including teaching the Amazon Echo to order a pizza from Domino’s, call an Uber, play a song on Spotify, and connect with dozens of IoT devices.

“We’re delighted to collaborate with Bloc to help developers and designers learn more about Voice User Interface Design and how to build Alexa skills,” said Rob Pulciani, Director of Alexa. “We look forward to seeing more great Alexa skills from the developer community. Their creativity is making Alexa even better for customers.”

 

Alexa Skills Created by Bloc Students

Henry Schaumburger is a graduate of Bloc’s Full Stack Developer Track and was part of the pilot program for the new Alexa project. Henry and his mentor Mark Carpenter decided to create an Alexa skill that looks up the geographic location of a telephone area code. Check out a recording of his Alexa skill at Henry’s portfolio website.

Attend the Alexa TechTalk

Henry and Mark hosted an online TechTalk about how they built their first skill with Alexa. They cover how they used two platforms — Alexa Skills Kit and AWS Lambda (part of Amazon Web Services), and the JavaScript runtime environment Node, to create this simple skill. Check out the recording here: Getting Started with Alexa TechTalk

Happy Hacking!

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

How to Succeed in an Online Coding Program

Learning online is hard

As online education proliferates (read: online coding programs), its proponents and detractors develop increasingly stronger opinions on its effectiveness. Proponents tout online education’s low cost, accessibility, and flexibility. Students can learn anywhere, according to their schedule, and usually at a reduced expense. Detractors, on the other hand, cite high dropout rates and a lack of effectiveness. While both sides of this debate are correct, there is a strategy for succeeding in an online program.

 

Create a dedicated home office, and make it awesome

A dedicated home office doesn’t require a large investment. As an online student you’ll work from home most of the time. You must find a space that’s quiet, clean, and allows for ergonomic amenities. 100 square feet should be plenty of space to create an office. You can find high-quality office furniture at IKEA, or buy used from a site like craigslist. Consider using a standing desk, or treat yourself to an ergonomic desk chair. Better yet, you can buy a sitting desk and build a modular standing desk, so you can stand or sit.

After your desk and chair are positioned, build the rest of the office around them. Hang pictures or paintings and buy a small bookshelf to fill with inspirational books. Save your money for perhaps the most expensive things, like a computer and monitor. It’s essential that you have a capable computer, and I recommend splurging on a large monitor. You’ll need to have multiple windows open from time to time, and a large monitor provides the real estate to do this.

Finally, if you live with other people, ask them to respect your office space. A clean, organized, and comfortable office will set you on the right path for succeeding in an online program.

 

Immerse yourself

When you take an in-person program, immersion in the topic is inherent. You’re physically near your classmates which means that you’re likely to discuss the program and share knowledge. As an online student, immersion is not necessarily inherent – you have to force the issue. Your program will probably have a community – forums, chat rooms and mail lists – and while those are good places to hang out, you shouldn’t stop there. Subscribe to blogs and podcasts and find people to follow on Twitter. Get to know the lingo of your topic of study, and some of its key figures. It doesn’t matter if you understand everything right away, it’s important to become comfortable with a the “language” you’re learning.

 

Study every day

In-person programs impose a routine of study because you have to go to class at specific times. Online programs offer more flexibility, so you have to manufacture a routine. Without a consistent and disciplined routine of study, you will not succeed in an online program. Whether you spend 15 minutes or 8 hours studying, you must study every single day. Create a habit for yourself. How long it takes to form a habit depends on the person, but you’ll know once you develop it because it will feel wrong not to study. Make sure that your study time is scheduled when you are at your mental best, and not when you’re tired or easily distracted. Find a method that helps you get into a relaxed zone, and make sure you schedule your study time around it.

 

Find meetups

The fact that you don’t have a classroom doesn’t mean you should avoid people and in-person interaction. An online program offers many benefits over an in-person program, but interaction in real life is something it can not offer. Fortunately, there are many options for meeting people in real life for many different areas of interest.

For example, if you’re studying to become a Rails web developer, there is almost certainly a Ruby or Rails meetup in your area. Join the meetup group, discuss your program with others, tell them what you’re working on and what you’re having trouble with. You’ll learn a lot from these experiences, and often in ways that are hard to duplicate virtually.

 

Rebase iteratively, and celebrate

No matter how great your virtual community is or how many meetups you attend, as an online student you’ll spend most of your time alone. It’s easy to forget how much you’ve learned when nobody is there to remind you. You must make it a habit to remind yourself. At the end of every day, you should rebase. That is, think about what you know, compared to the prior day. Think about the problem you’ve been toiling over, and that you finally solved. Even though these may seem like small wins, celebrate them! Treat yourself to a beer, order a pizza, or do something to spoil yourself for every little win.

Celebrating your wins is as important as embracing your struggles. If you focus too much on either, you’ll derail your progress. Develop a balanced mindset for both, and you’ll create momentum to capitalize on your wins, and grit to push you through struggles.

 

Will an online program work for you?

It certainly can, but whether it does or not ultimately depends on your commitment, consistency, and discipline. The strategy outlined in this blog will ensure that you succeed in your program, but you have to embrace every part. If you do, an online program will provide you with a quality education, at a reduced cost, and on your own schedule.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

7 Things I Wish Someone Told Me Before I Started a CS Program

 

It will be difficult.

All computer science programs are difficult. This is primarily because the underlying material is difficult to comprehend. Computer science encompasses philosophy, math, science, and logic. All of these can be both very abstract and very specific. Your CS program will be incredibly difficult in this respect. You will have to stretch your brain to grasp concepts that you didn’t even know existed, but you will be glad to have learned them when you’re done. You will have to wrap your mind around something as concrete as binary numbers to something as abstract as encapsulation. These small battles of understanding one particular topic at a time will help you understand the overall picture much better when you’re done. It will take you a long time to win a small battle, but this is why wars sometimes take a long time.

If you know the enemy and know yourself you need not fear the results of a hundred battles. — Sun Tzu

We will never understand the entire picture, but understanding computer science is a big piece to that puzzle.

You will fail, but you will also succeed.

You will fail. You will lose some battles. You will not understand certain things. It will take you a longer time to understand certain concepts compared to some of your peers, but you might learn other concepts more quickly. Failure is an integral part of success. If you don’t fail, you can’t learn from our mistakes and push ourselves into the next stage. A sailor who ties a knot incorrectly that causes a sail to blow out does not stop sailing; that person continues to sail until that knot is tied correctly. Repeated failure leaves a more permanent mark in your mind than repeated success does. This is called progression. Success tastes much sweeter when you have repeatedly failed.

You will be working with analytical people, AKA: you will be working with nerds.

This is a great thing! Nerds are a great type of people. Don’t be afraid to assimilate with your fellow nerds. Most nerds are introverted, but don’t be afraid to talk to them. Most likely, they want to talk to you as well! You might make a wonderful new friend or study partner, and these connections might be helpful down the road as you expand your career.

You will not be the smartest person in your program, but you have the ability to be better than the smartest person in some way.

As is the case in most of life, you will never be the best. That doesn’t mean that you can’t be the best in a certain facet. Strive to compete with your peers in a respectable, reasonable way. You will not be the best, but you can be the best in at least one thing. Find that thing, set an example. It might be asking more questions in front of an audience, or solving a problem in a graceful manner while thoroughly explaining how you solved it. Find your talent and harness it.

The key to succeeding is to never give up.

When confronted with a problem, most computer scientists will tell you that, “there’s a better solution”. The truth is, they’re often correct. For example, one could use an iterative search to search through a list, but a computer scientist would tell you you’re wasting your time. But the trick is that you can still solve any problem with brute force. Giving up is the only type of real failure that you can commit.

Your journey is your reward.

Your journey starts in the marina. Your journey ultimately ends where you started. Along the way, you will experience both rough and calm seas. The reward is the wealth of experience and knowledge you gain. Your mistakes, failures and successes along the way will mold your character and build you into a tougher, more resilient person. You will also obtain a cunning ability to solve not just math and programming problems but also anything that needs more efficiency. When you are done, you won’t even care about your “merits” because you will be so excited with the new knowledge you have at your disposal to give to the world.

“I work hard for the audience. It’s entertainment. I don’t need validation.”  — Denzel Washington

Computer science programs focus on theory over practical application.

If you only learn what a CS program offers, you might graduate with very strong theoretical and analytical skills, but only minimal practical skills. To maximize your chances of getting a great job, ensure you’re also studying popular frameworks, platforms, and languages. For example, many employers expect software engineers to be familiar with modern tools like Ruby on Rails, GitHub, AngularJS, Heroku, Amazon AWS, etc. The combination of a theoretical foundation with practical skills will make you invaluable to any team.

If you’re considering a CS degree, you might want to compare it with Bloc’s Software Engineering Track which builds upon CS degree fundamentals with things like mentors with actual industry experience, an open source apprenticeship, the aforementioned technologies, and a whole community of people rooting for you every step of the way!
Go forth, and conquer!

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

7 Traits of Effective Software Engineers

If you’re considering a career as a software engineer, then you may have heard how difficult it is to learn. But the right mindset can give you a significant advantage when learning and working in the industry. Software engineers who embody these seven character traits are valuable employees and productive contributors.

Curiosity

It’s what killed the cat, apparently, but that cat was a rock-solid engineer. Great engineers take responsibility for learning and exploration. They do not depend on their superiors to give them explicit direction for a new challenge – their curiosity guides them to reach their own conclusions.

At my first job as an engineer, I worked on an Android game. In the middle of working on a new feature, I noticed that some background tasks consumed an inordinate amount of time. After some investigation, I discovered that we relied on an Android API that took 50% longer on average to complete when compared to a simpler Java counterpart. I reported my findings and as a result, we swapped one for the other in all cases.

An engineer who seeks out new information and investigates the product may discover something new in the process. More importantly, the more versatile an engineer, the more valuable they become. Learn to serve your curiosities and feed them with research and experimentation.

Grit

All engineers require mental stamina. As a new engineer, you won’t solve the most challenging problems during your first attempts. In fact, you may have to spend days, weeks, or longer looking for a solution before finding one that meets both business and product requirements.

If you give up readily, you may not find yourself working on anything interesting, or anything at all. Engineers love solving problems and most refuse to give up until they work them out. Grit is what keeps engineers from throwing in the towel.

In 2014, the popular blogging platform, Medium, encountered a problem rendering underlines in Chrome. The author, Marcin Wichary, states that what was thought to be a one-night project turned into a month-long effort. After brainstorming seven approaches, the team settled on one and Marcin implemented it. Fixing something as seemingly trivial as a proper underline required incredible tenacity and the product is better for it.

Communication

This one is a no-brainer, but if you want to be a part of a functional team, you must communicate. If you’re shy or quiet, that’s fine. You can make up for shyness by communicating effectively in writing.

At Bloc, we rely on asynchronous communication – one out of every six employees works remotely. We use email, Slack, and GitHub to facilitate feedback and discussion. In these messages, we try to use as few words as possible and get to the point fast. This keeps our co-workers focused and eager to read and respond.

Your team needs to know what you’re working on and if they frequently ask for clarification, they may stop asking altogether. By communicating frequently and in brief but descriptive messages, your team will look forward to speaking with, and hearing from you.

Attention to Detail

Despite being another predictable member of this collection, attention to detail is vital for engineers and thus worthy of mention. If an employee at McDonalds applies two ounces of special sauce to your Big Mac instead of two and a half, will you notice?

As a software engineer, if you mistype even one line of code, it can crash an entire application. Details comprise software, and companies hire engineers to craft those details well. If you are someone that looks solely at the big picture, you have to learn to zoom in.

At Bloc, our students rely on our custom curriculum to learn the software trade. If we mistype a line of code or introduce a grammatical error, the student’s ability to learn the subject is significantly affected. We use grammar tools like spell check, linters, and Grammarly to draw attention to pain points.

Divergent Thinking

Some call this, “thinking outside of the box,” but saying that would be yet another cliché and this post has reached its limit of those. When solving challenging engineering problems, the best solutions often come from adopting a new perspective.

If everyone took a crack at a problem from the same angle, they would ultimately arrive at a similar solution. But a diverse team whose approach varies among its members will generate more ideas and non-conventional solutions. You and your team will benefit if you broaden your ability to see things that others overlook.

To allow team members to share new ideas and solutions, we occasionally hold hack day events at Bloc. These hack days, like hackathons at Facebook, permit anyone in the company to work on anything. Thus, people who rarely interact with an aspect of the Bloc product can build new features or solutions that the dedicated team had not yet thought of. For example, our hack days helped us design a new payment flow, student portfolios, a student glossary for recruiters, and so much more.

Modesty

Engineers collaborate, even when managers assign a task to just one engineer on the team. Team members review each other’s code before deploying it to production, and during these reviews, they may criticize or recommend significant changes to code written by their colleagues.

Engineers open to receiving critiques and feedback receive more support from their teammates, and the engineers that receive more support make bigger contributions to the product. More importantly, the product suffers if an engineer deploys code without revising it to meet the expectations of their peers. A good engineer is modest and willing to consider a different approach suggested by their team.

At Bloc, we have a thorough review process both on the engineering and curriculum side. Before we published this blog post, it received editing passes from two individuals that looked for quality content and prose. I was responsible for accepting modifications and including content suggested by my peers; the post is better for it.

Wolf Pack Membership

It’s common for some engineers to isolate themselves and work without consulting their teammates. The industry refers to this proclivity as Lone Wolf Syndrome. Lone Wolves, much like the animals after which we’ve named them, do not survive for long. Wolves hunt in packs, and engineers must collaborate.

To be a productive engineer: seek help when needed, express yourself when overwhelmed, offer to help when you see peers struggle, and in general, engage with the group. No one on your team is excited when one person goes off and returns with unwanted or otherwise broken code. Acting as part of the team builds better relationships and trust among your co-workers.

If you believe that your personality is set in stone or that you’ve grown fixed in your ways, we recommend you read this article from Psychology Today. Those who study the mind believe that personality is flexible and with concerted effort, anyone can alter their disposition.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

4 Computer Science Essentials to Land the Job

By Stan Idesis, Curriculum

When starting a new career, you want to give yourself every advantage. If that career is in software development, then learning computer science fundamentals is that extra bit of oomph you bring to each interview. Most bootcamps eschew these fundamentals for more pragmatic skills. But as these bootcamp grads expand the talent pool, recruiters start to see a lot of the same credentials.

To help our students stand out, we’ve included Software Engineering Principles in our new CS-degree replacing program: the Software Engineering Track. We included the following topics after consulting with some of the best engineering companies in the world, including Twitter and Google. Read on to learn why these four skill-sets are critical to every software engineer.

Data Structures

The Data Structures section challenges students to build and apply hash maps, linked lists, stacks, queues, trees, and graphs. Interviewers test for knowledge of data structures because these constructs are the most commonly employed tools in software development. We dissect these structures to reveal how they work, and thus provide students the insight necessary to optimize their use.

Computer Science White Board

Some data structures perform better than others, and each applies to specific scenarios. Using the wrong data structure can hinder performance, and relying on an unsuitable data structure can lead to illegible code and wasted effort. In one example, students build two versions of a favorite film organizer, each powered by a different data structure. This project demonstrates how choosing the right structure improves performance and utility.

Algorithms & Complexity Analysis

Algorithms act upon data to sort, calculate, or otherwise manipulate information into a desired form. For example, given a set of 10,000 numbers, return the five smallest. We can devise infinite ways to perform this work, and each way represents a unique algorithm.

Algorithms in real life

Sophisticated algorithms suggest additional content on Netflix

Students study known algorithms as well as their complexity to understand the performance cost of each. Complexity analysis goes further to assess the value of any piece of code: both the number of operations required as well as memory consumed. This is a critical skill to have, chiefly for those students hired by firms that work with large data sets. The cost of a small oversight is minimal when operating on 12 pieces of data, but enormous with 12 million.

Databases

Databases provide the storage backbone for nearly all applications. Frameworks such as Rails help abstract the database from the developer with Object-Relational Mapping (ORM). While beneficial to the seasoned coder, these abstractions can hinder a beginner’s understanding of how modern software reads and writes persistent data.

During the Databases section of the Software Engineering phase, we instruct in the Structured Query Language, more commonly known as SQL. We use SQL to build an ORM by creating tables, inserting data, accessing rows, and performing other common framework operations. Students will also learn how to support object associations and protect their databases from malicious injections.

For companies like Facebook, their database structure is critical. Facebook users across the globe access millions of data elements every second; a poor query or mal-designed schema can translate to countless dollars lost every day.

Framework Architecture & Design Patterns

With a working understanding of Rails, data structures, algorithms, complexity, and databases, students will build a new framework. The Software Engineering phase requires this because it removes the last metaphoric road block that separates an amateur from a professional.

After completing this project, students are no longer mere users of a framework, they are its marshals. They understand how frameworks operate and need not assume how Rails brings their applications to life. This section empowers the idea that nothing is beyond a student’s understanding.

GitHub once ran atop a forked version of Rails

GitHub once ran atop a forked version of Rails

Comprehending framework design is critical, especially for employees at GitHub. GitHub once ran on a forked version of Rails which they modified to suit their product’s needs. Without the requisite knowledge, creating and maintaining a custom framework is extremely difficult.

At their core, Bloc’s Software Engineering Principles address the gaps of knowledge between a web developer and a software engineer. By dismissing the “magic” of software, students acknowledge that beneath every shortcut and library, more code exists. Students armed with this knowledge are more valuable to future employers, coworkers, and projects.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone

Impostor Syndrome for n00bs

by Kelly Mason, Student Experience

web developer imposter syndromeNew coders, does this sound familiar? You’re finally getting the hang of programming. But then you overhear a conversation about a language you’ve never even heard of. Oh no! How could you call yourself a programmer if you’ve never even heard of Haskell? (How many programming languages are there?)

Easy, tiger. Impostor Syndrome is setting in hard. You feel like a fraud, even though your accomplishments show otherwise. Maybe you have successfully coded your first app but you feel like you’re pulling one over on the world by calling yourself a programmer. Or perhaps you enjoyed dabbling in Codecademy, but you could never actually make the switch to becoming a developer. Feeling this way is not only normal, it could actually be a signal of greatness.

Learning to program lends itself tragically well to Impostor Syndrome. There is so much to learn about programming, it’s impossible to be proficient in every aspect. Do you know how many people know everything there is to know about Ruby? Zero. Not a CS grad, not your smartest developer friend, not even the guy who created Ruby in the first place.

programming imposter kids

Rest easy, you’re not alone. No matter how experienced you are, you will always hear other developers talking about a new concept that you have never heard of. You may feel like you don’t belong in the conversation, but you do. Frame it as an opportunity to learn and become a better developer, and remember, everyone feels this way.

I can’t think of a group more prone to feeling this way than bootcamp students. The beauty of programming bootcamps is that they allow people with little to no programming experience enter and succeed in the field. Thus, if you called yourself a developer before you enrolled, you really would be an impostor.

At the most recent Bloc Career Talk, Bloc students shared their experiences with impostor syndrome. Hillary, a student in the Rails course, shares her experience:

“I started as a technical analyst at a company that created a proprietary application that worked alongside SharePoint. For the first few months I imagined myself getting fired daily. Six months after starting I was promoted, and three months after that I was promoted again to a managerial position.”

Hillary says she’s feeling impostor syndrome all over again as she sets out to land her first developer position, despite crushing her course and having four completed projects under her belt (way to go, Hillary!).

developer imposter syndrome

Go, go gadget confidence!

Okay, so there’s a name for this rotten feeling. Now what? As with many struggles, your first step is to recognize the issue. It’s only overwhelming and soul-crushing if you believe you’re the outsider. Think you really are the only person that feels this way? Try voicing your misgivings about your developer skills to a community of developers—I’d bet a lot of 1’s and 0’s that you’ll hear many others feel the same.

Once you realize that it’s a common struggle among beginners in any subject, the problem shifts from an internal judgment of yourself (“I’m just not a programmer”) to an opportunity to expand your skillset (“I have a lot that I can continue to learn”). The key to persisting through this forest of self-doubt, hopelessness, and anxiety is to accept what you don’t know, and challenge yourself to master it.

Then you can focus on progressing in your work to prove to yourself that you’re no impostor. If you’re facing an overwhelming problem, which is likely what led to all those “impostory” feelings in the first place, break it into tiny steps. Whether this is fixing a bug, writing an app, or getting to the end of your foundations, it will feel more manageable if you break the problem into pieces and celebrate the small wins.

At Bloc, students can connect and commiserate with fellow students on this topic and others in our Student Slack Community. During our Career Talks, students also get to fire their burning career switch questions at our captive Director of Student Outcomes, Courtland Alves.

This blog post is based on the recently hosted Bloc Career Talk covering Impostor Syndrome. Career Talks are bi-weekly seminars that facilitate discussion among Bloc students about the career search process.

Note: I struggled the entire way while writing this. Who am I to think I’m a writer? #impostorsyndrome

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on RedditEmail this to someone