Online Intro to Programming Class

Online Intro to Programming Class

I'm excited to share that Epicodus is offering its Intro to Programming class in an online format for the first time, starting January 2, 2018.

Many people in Portland have taken Intro to Programming with us as a part-time evening course so they can decide if Epicodus is a good fit for them. Now, if you don't live in Portland, we've got a way for you to experience Epicodus remotely before you commit to our full-time program. And you're of course welcome to take the class even if you have no intention of continuing in-person.

While there will be some differences from our classroom experience, we'll be keeping many of the same elements that we've found work well. We'll have a set schedule, Tu/W/Th 5:30-7:30 Pacific. We'll use the same battle-tested curriculum we've developed over the last five years of our in-person classes, so you can expect the same high-quality education Epicodus is known for. And we'll approximate the classroom experience with a teacher available during class hours, and a rotating peer "buddy" for you to work with on your exercises.

If you're interested in learning more and signing up, click here!

Not All Outcomes Claims Are Created Equal

Not All Outcomes Claims Are Created Equal

If you're a prospective student considering attending Epicodus, you might be wondering why we don't claim 99% placement rates like some other schools. We believe that such claims don't give you the information you need to make an informed decision, because such schools are manipulating their numbers to increase their placement percentage. Here's how they are doing it:

  1. They remove students who don't meet their qualifications of "job-seeking" by participating in employment services. While this may seem reasonable, in reality, very often the students who feel least-prepared by their schools are most likely not to participate in these programs.
  2. They remove students did not respond during their data collecting process. Although this happens, removing these students means these schools can inflate their numbers by not following up with students whom they think might not have done well in their job search.
  3. They use a broad definition of "job" to increase the number of students they can report as employed. For example, they lump part-time or contract positions in with full-time numbers. While there's nothing wrong with non-permanent positions as they are often a stepping stone, it's misleading not to break out these numbers. 
  4. They don't have a time limit on their data collection. So if a student finds a job two years after graduating, they're included in the same percentage as a student who finds a job within a month.

Some of these schools claim to be "transparent" because they disclose these practices in fine print on long PDF documents you can download from their websites, and sometimes even because an auditor reviewed their data for accuracy. But as a prospective student, these numbers don't actually tell you what kind of success you can expect from enrolling in their school. You shouldn't take those percentages at face value.

Last year, Epicodus helped found the Council on Integrity in Results Reporting (CIRR). CIRR is a standard developed by a large group of coding schools who believe in giving prospective students the information they need to make informed decisions. In contrast to the practices described above, CIRR members like Epicodus follow these higher standards:

  • We report on every student who enrolls, even those who don't graduate.
  • We don't remove any students from our calculations. We even disclose the percent of graduates we couldn't contact. 
  • We differentiate among different types of jobs, including full-time, internship, and part-time.
  • We report outcomes at 90 and 180 days after graduation.

As a potential student, you can trust that our numbers won't mislead you as you decide if attending is the right choice for you.

Your Jobs Are Safe: Rebutting the Jobless Future Freakout

Your Jobs Are Safe: Rebutting the Jobless Future Freakout

I (Epicodus's founder, Michael) am going to give a talk at Epicodus's Portland office on Tuesday, September 19, from 6-7pm called "Your Jobs Are Safe: Rebutting the Jobless Future Freakout". I've heard and read a lot of concern in the tech industry and more broadly that technology and automation threaten to leave our world with very few jobs and massive inequality. I'll explore the history of massive technology shifts and their impacts on jobs, the current situation of automation and people-replacement, and what the future might hold. I hope you can make it!

How You, the Developer, Fit Into the Business Layout of a Development Agency

How You, the Developer, Fit Into the Business Layout of a Development Agency

Check out this great perspective from Bear Group, our partners in Seattle!

How You, the Developer, Fit Into the Business Layout of a Development Agency

A Bear Group Perspective

As an emerging developer, knowing your role in the business layout of a typical dev agency will give you an idea of your responsibilities, how you interact with clients, and the timeline of a typical project.

Like the clients you work with, each development project is different. Development is a layered experience (especially with our Agile approach) and communication is really key in the process.

 The business layout of a development company can be mapped out as two journeys running parallel to each other: the client lifecycle, and the role of the developer.

 There are many different hands that shape a project over the course of a project, including technical project managers (TPM), front-end developers, web designers, even the client–but it’s the lead developer that spends the most time working on the project, from initial scoping to launch.

 1. Early Project Scoping

At the beginning of any project, business development team members sit down with prospective clients to discuss their goals for their website–changes they may want from their current website, design goals, business goals, system integrations they require, and any other details unique to their situation. Typically a solution architect or lead developer will be brought in to appraise the project, and give them rough time estimates for the work.

 2. Detailed Project Scoping

On projects that have complex integration requirements, they will often begin with a scoping phase with client teams. Senior developers, solution architects, TPMs and user experience (UX) specialists are often part of this process to get the details on paper.

 3. Development Environments

In some agencies, setting up development environments is done by the lead developer. However, in ours we have a dedicated developer operations (web-ops) manager who will set up development, staging, and production environments. Lead developers can then deploy to those environments via Git. Developers pull from those dev environments to establish local versions of the project in their virtual machines (VMs).

 4. The Build: Front-end and Back-end

At this stage we have a good picture of the project, and typically a design handoff as well. The TPM will typically ticket out much of the project in Jira, and setup the initial sprints. There will be a kickoff meeting with the whole development team that establishes a cadence for later stand-up meetings. The team will then start working through the tasks in front of them.

The lead developer drives development, working towards milestones and keeping the full team aware of progress. In our shop, lead developers could be senior front-end developers working on the site build, as well as look and feel, or they could be a senior PHP developer working on an integration or other custom module work. Often they work in concert with each other, but one is typically the primary on the project.

 5. Quality Assurance (QA)

Once the project has been completed, there’s a round of QA–including by the client, depending on the nature of the project.

6. Final Round of Security and Launch

Web-ops comes in again, right at the end of the project, to check the integrity of the website’s security before launch.

This isn’t the only approach to web development. Freelance developers and in-house dev teams will handle projects differently, but for a development agency, it’s a common approach. Specifically, however, here’s how working at a development agency is different from freelance work:

 The Client Leads the Project

The reason clients choose to work with a development agency, as opposed to a freelance developer, is because we provide a structure for their project, as well as deliverables up front. The client knows exactly what they will receive at the end of the project, because it correlates with what they scoped out with the TPM, web designer, and developer at the beginning of the project. That’s what the client is paying for–structure. This means defined tickets, sprints, and projects. Your work is structured according to the statement of work that is delivered to the client up-front.

 The Developer Is In Charge

Our teams are structured with a lead developer, with perhaps 2-3 developers working under them depending on the size of the project. While the TPM will also be a consistent presence on the project–from start to finish–they can be working on a few projects at once.

 The developer is given the lead because they know the project better than anyone, simply because they’ve spent the most time working on it. Unlike the TPM, they don’t have any other projects, and their attention is undivided throughout the duration of their work. Instead of receiving mandates from management, or a group of developers all working together, we prefer this approach because it differs to the judgement of someone who knows the project thoroughly.

While the business layout of a development agency is more structured than that of freelance work, this structure provides confidence to both the client, who knows what to expect, and the developer, who knows exactly what to deliver. As a veteran development agency that saw over 330 successful production deploys in 2016 alone, we stand by our approach.


Bear Group Bio:

Bear Group is a mid-size web development firm based along Lake Union in Seattle, Washington. Working mainly with Magento and Drupal systems, our developers build custom websites for our clients. For more information about our work or available positions among the Bear Group team, please feel free to visit us at beargroup.com.

3 Reasons Why the .NET Framework is Cool Again

3 Reasons Why the .NET Framework is Cool Again

Scroll through job postings at most cool startups these days, and you’ll get the sense that frameworks and languages like Ruby on Rails, JavaScript, React and Python are all the rage right now. So, the .NET Framework is old news… right? Wrong!

The .NET framework was first developed by Microsoft in the late 90's to help developers build applications more easily. It features a massive Framework Class Library. This library helps reduce the amount of code you have to write. It also features interoperability, language independence, and a built-in virtual machine to make developers’ lives easier.  While newer platforms and frameworks jockey for the spotlight, .NET has garnered its fair share of detractors. But it’s time for a 90's comeback. The .NET framework is cool again, and here’s why.

 

1. Microsoft invests heavily in .NET

The .NET Framework has come a long way since it was first launched. New features like language integrated query capabilities and better support for asynchronous programming have been added, and perhaps, most importantly, Microsoft has released .NET Core and ASP .NET 5. .NET Core is a cross-platform development platform that can be used for “device, cloud, and embedded/Internet of Things scenarios”, and ASP .NET 5 is an open source web framework for building cross-platform web apps. So if you’re worried that .NET doesn’t have the aforementioned “cool” factor, that’s changing.

It also helps that Microsoft is doing its best to support new developers in this area. The Microsoft Developer Network provides great resources and documentation for several different languages and the ASP .NET site is also very helpful.

2. C# is everywhere.

C# is one of the most popular languages in the .NET Framework. It's actually the backbone of many systems you use every day, too, particularly in the financial sector. While nimble startups might be able to change their production code and development environments quickly, that’s simply not the case for enterprise companies. They’ve settled into C# and the wider .NET Framework, and they won’t be moving on anytime soon. That means there's high demand for .NET developers - even if you’re not seeing it splashed all over the latest startup job sites.

3. Learning the .NET Framework helps you pick up other skills.

As .NET moves toward greater cross-platform capability and open source models, the concepts and understanding necessary to develop .NET applications will apply to other frameworks, too. For instance, C# is conceptually and syntactically similar to both Java and Swift, so much of what you learn in developing .NET may apply to Android and iOS development too.

Additionally, here at Epicodus, each of our tracks doesn't just teach students language-specific skills. In addition to learning the specific frameworks, tools, and languages of your chosen track, you also learn the general problem solving and programming fundamentals necessary to tackle web development in any language.  

 

.NET’s reputation as an old-school framework simply isn’t accurate anymore. It modernized software development, and it continues to modernize itself. hat’s an attribute we love at Epicodus. We want our students to learn to adapt to changing job markets, which is why we offer courses in both C# and .NET. Even if you don’t go on to specifically use .NET in your career, the process of learning it is bound to be an educational and invaluable experience.

 

5 Pieces of Career Advice for Coding Beginners

5 Pieces of Career Advice for Coding Beginners

If you’re teaching yourself to code or considering a program like Epicodus, the one thing you should know is that no one said it would be easy. There’s more to becoming a great developer than mastering several programming languages. Sometimes the most valuable lessons you’ll learn are those you learn through personal experience, not guided curriculum.

So, if you’re a new developer with little to no experience, these 5 pieces of advice are for you.

 

1. Learn how to use Google.

It sounds fairly simple – who doesn’t know how to use Google? But you’ll quickly learn as a new developer that Google does usually have answers, but actually finding those answers may be harder than you think. This is especially true if you don’t yet know the exact terminology for the problem you’re trying to solve. A good rule of thumb is to Google “how to” and some variation of “[keyword] [verb] [programming language].” For example: “how to resolve null pointer exception java.” Get as specific with your keywords as you can. Remember, professional developers have to Google just as much as you do – it’s all a learning process.

2. Test as you go.

There’s no way around this. No one ever writes perfect code the first time around. If you wait until deployment to test your code, you'll likely hit more errors than you know what to do with. (To be fair, this can happen at any point in the development process.) It pays to test as you go. Frequent, thorough testing helps narrow down the exact location of bugs, and for you to write cleaner, better code. And when you think you’re finished testing… test again. Do your best to break your own program, and you’ll end up with a stronger finished product.

3. Read and write (a lot) of code.

Like we said above, the only way to get better at writing code is to write lots of code. That’s why our classes are 100% hands-on. But reading professional code is also a great way to find creative solutions and familiarize yourself with coding best practices. Try exploring open source projects – GitHub has lots of them with solid documentation. And as always, ask questions when you need to. Most open sources are happy to help.

4. Code by hand.

Why bother with this seemingly tedious exercise? It’s a great motivator to write clean, efficient code! Practice writing pseudocode first – a sort of "plain English" outline for what you'd like your code to do.  Then go back and fill in your actual code. The process will force you to slow down, think about the purpose of every line, and try to find the simplest solution. This is also critical practice for job interviews, where you are often asked to code "manually" on a whiteboard.

5. Don’t give up.

Even the best developers drive themselves crazy over an elusive bug sometimes, but it’s important to remember that bugs aren't necessarily a reflection of your intelligence. Your goal should always be to keep learning, not to be a “super programmer” right out of the gate. No one is. Focus on improvement, and don’t let the imposter syndrome hold you back.

 

Feeling motivated? Keep up the momentum with our guides to technical and non-technical interviews. And let us know: which lessons have helped you as a new developer? Which lessons do you wish you’d known earlier?

iOS vs. Android

iOS vs. Android

Over the years the great "iOS vs Android" debate has, interestingly enough, morphed into more of a cultural conversation than a technological one. Because nearly every modern mobile device relies on one of these two operating systems, it’s impossible to escape the conversation. It's almost as if consumers must pledge allegiance to either side. It has slowly, but surely, become a lifestyle choice.

We thought it would be interesting (and fun!) to take an objective look at both operating systems.

Before we discuss the most stand-out features in each, it’s worth noting that it is tough to reach a "one-size-fits-all" solution. Like many technological debates, your choice of operating systems is based on preference and the experience you seek as a user. People may value some features over others.

But, there are some objective differences between iOS and Android that we can consider:

  • Customizability: Perhaps the most obvious, and the broadest difference between the two systems lies in their flexibility to be customized by the user. Android is a highly customizable system with roots in Linux and open source code that anyone can expand upon. On the flip side, iOS is a closed system and the average user will never know what tweaking its code would look like. Essentially, Android is excellent for those who like to experiment with or customize their devices, whereas iOS offers a simplified and uniform experience for all.

  • Calling and messaging options: It’s no secret that iMessages and FaceTime are killer iOS features. The ability to text and call via WiFi is extremely convenient. It's also an option Android devices don't offer.

  • Apps: Both Apple and Google have great app stores with around 1.6 million apps each. However, Android devices organize them in a much more efficient manner, allowing us to put important apps on the home screen and less important ones in the ‘drawer’. By contrast, iOS devices list all apps, regardless of importance, on the homepage.

  • Music: While Google Play Music is an excellent music-playing app, Apple’s Apple Music integrates extremely well with iTunes and allows you to synchronize your music to all Apple devices with ease.

  • Maps and directions: With native Google Maps on all Android devices, Android is the clear winner here. Google Maps is available on both iOS and Android, but Siri uses Apple’s ‘Maps’ app by default, which is considered slightly inferior to Google Maps.

  • Voice Assistant: While both Google Assistant and Siri are great in terms of functionality, Siri has the slight edge because of its more personable tone and ability to understand natural languages better than Android.

The "best" operating system clearly depends on what the users want from their devices. While Apple products offer a clean interface and easy communication across various devices, Android’s customizable and flexible operating system appeals to those who prefer a more personalized experience.

The Beginner's Guide to Top Programming Languages

The Beginner's Guide to Top Programming Languages

When you’re new to the programming world, it’s normal to get overwhelmed by the sheer number of programming languages. After all, there are hundreds of languages out there. There’s Ruby, Java, PHP, C#, and that’s only a few of them!

Don’t stress out. Take a deep breath. We’re here to help. Here’s are two easy steps you can take to begin understanding the differences in some of the most common languages!

First, remember Java is different than JavaScript. Don’t worry if you get them confused at first. Everybody does.

Second, keep reading this blog post. It’s a handy introduction to the top languages.


A quick guide to the top programming languages

  • Ruby: Ruby is a beginner-friendly and dynamic language. It powers Ruby on Rails, which is a framework used to quickly develop sites and applications. Ruby is used on sites like Twitter and Shopify. In fact, our own Learn How to Program site, where our Epicodus curriculum is hosted, is built using Ruby and Rails!

  • Java: Java is a static programming language used in Android and desktop apps, video games, and general back-end development. It’s widely considered to be one of the most stable and secure languages around.

  • JavaScript: JavaScript is a super common programming language. It’s mostly used for client-side front-end development. JavaScript is actually used in over 90% of all web pages!

  • C#: C# is popular with larger businesses and is backed by Microsoft. Microsoft has made C# open source, so it can run on other operating systems like Mac and Linux.

  • PHP: PHP is a server-side language useful for web development, especially for content-heavy sites. Content management systems like WordPress and Drupal are written in PHP.

  • SQL: SQL (Structured Query Language) is used to communicate with databases. While it’s not a programming language like the others listed above (you couldn't build a website or app solely in SQL, for instance), SQL is used to build and manage the databases apps and websites use.

 

What’s the best coding language to learn right now?

It depends. We know, we know. That’s a cop-out answer—but it’s true. The best coding language to learn depends on whether you want to focus on front-end or back-end development. For more information on that decision, check out this post on what programming languages to learn.

If we’re talking about the best coding language for to learn first, we recommend JavaScript. Simple JavaScript is beginner-friendly and easy to run in any basic browser. That's why our Intro to Programming course (the very first course in each track we offer) introduces the fundamentals in JavaScript.

If we’re talking about the most popular programming languages, that’s a different story. According to the 2016 Stack Overflow Developer Survey, JavaScript, Java, and C# were among the most-used technologies. Out of 56,000 developers, 55.4% use JavaScript, 36.3% use Java. 30.9% use C#. That's why, in addition to the JavaScript our students learn in their Intro to Programming course, every track also includes a 5-week JavaScript course.

However, if we’re talking about the best coding language of all time, then we don’t have an answer for you. Each language has its own pros, cons, and recommended uses. The industry is also constantly evolving - new languages are being developed constantly, every day. At Epicodus, we prepare for this change by equipping our students with strong programming fundamentals that are relevant to any type of technology. Our alumni have gone on to work in other languages and with other tools thanks to the solid foundation they acquired during their time in the courses.

 

Ready to learn?

Now that you’ve gotten the scoop on the top programming languages, are you ready to start learning?

If you’re interested in expanding your coding language skill set, learn more about what a typical week at Epicodus looks like.

GitHub vs. Resume – Which is Better for Aspiring Programmers?

GitHub vs. Resume – Which is Better for Aspiring Programmers?

Helping our students find great jobs is a huge part of what we do at Epicodus. In fact, it’s our mission. Over the years, we’ve accrued quite a bit of job-hunting knowledge that helps set our students apart. Over the next few weeks, we’ll share our best tips and tricks for junior developers looking for their first jobs.

Searching for full-time job opportunities can be a tedious process for aspiring programmers. The pressure of preparing for interviews isn’t lessened by the many ways to present your professional and academic profile to recruiters. While a solid education in coding helps in finding a programmer job you love, it is also important to use the right tools to showcase your skills and experience.

Over the last few years GitHub – the version control system and code hosting service – has been gaining popularity as a tool to bolster programmers' portfolios.

The question we'll look at in this post is: GitHub vs. resume, which one is better?

 

Employers and recruiters are increasingly looking toward GitHub to gain an understanding of a potential hire's technical skills. Some consider GitHub a better alternative to the standard resume for several reasons:

  1. GitHub offers the space and freedom to share code while also functioning as a social network. Your projects are rated and can be ranked based on popularity.
  2. GitHub tracks activity. Employers can see how often you're coding, and what code you're pushing.
  3. Some consider resumes to be an old and outdated component of professional portfolios. Since employers and recruiters tend to spend only seconds evaluating a candidate’s resume, there’s a focus on being as brief as possible. This means there isn’t enough space to successfully detail your accomplishments.

Despite its many advantages, using GitHub in place of a resume has also received criticism. Like any new trend in the industry, this has been widely debated among programmers and recruiters.

The primary argument against replacing your resume with GitHub is that GitHub simply doesn't convey your academic and employment experience as effectively as a resume. It's possible to pin specific repositories you want employers to see to the top of your profile; however, there isn’t a dedicated area to convey achievements that may be non-coding related. It is possible to view a programmer’s GitHub profile and gain an insight into his or her projects and skill level, but not much more.

When it comes to building a professional and personal portfolio, the best practice for aspiring developers is to use all tools in the best possible manner. If you can’t decide between GitHub and a standard resume, why not use both? Most employers today ask to see both your GitHub profile and resume. This is also what we recommend to our own students and alumni. Make sure your resume is polished and that it provides a quick peek at your professional and academic accomplishments while ensuring you’re constantly engaged in interesting projects on GitHub.

 

At Epicodus, we’re focused on ensuring that our programming students derive the greatest value from their education and are able to obtain a programming job or internship of their choice. While you’re here, check out our Career Services to learn more about how you can benefit from an education at Epicodus!

New React Course!

We're really excited to continue expanding Epicodus's course offerings with our newest addition, React!

React is one of the most popular frameworks for writing web application user interfaces in JavaScript. Facebook created and maintains React, and it's used by sites like Airbnb, the New York Times, Yahoo Mail, and many, many others. React pioneered an architecture using web components and one-way data flow that has since been adopted by just about every major JavaScript user interface library, including Angular and Ember.js.

In Epicodus's React course, you'll build games, messaging apps, and e-commerce sites. Once you've completed the program, we'll help you find a job as a junior developer.

Our first track including React starts May 22 in Portland with this schedule:

  • May 22 - Introduction to Programming
  • June 26 - PHP
  • July 31 - JavaScript
  • September 5 - React
  • October 10 - Internship

If you're as excited about React as we are, put in an application!