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!
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.
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.
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?
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.
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!
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.
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.
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.
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:
- 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.
- GitHub tracks activity. Employers can see how often you're coding, and what code you're pushing.
- 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!
We're really excited to continue expanding Epicodus's course offerings with our newest addition, React!
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
- September 5 - React
- October 10 - Internship
If you're as excited about React as we are, put in an application!
Today marks a big step forward for both Epicodus, and code schools throughout the nation!
Epicodus has always been transparent about our student outcomes. In fact, we feel so passionately about honesty and transparency that we actually helped found the Council on Integrity in Results Reporting (CIRR) to standardize transparency in outcomes reporting in all code schools.
Today, we're very excited to share our first batch of outcomes data using the new standardized CIRR methodologies and format. This information reports the outcomes of all students who entered our program in the first half of 2016.
Since Epicodus's very first course, prospective students have asked what percentage of our graduates find jobs. And we've always done our best to track and share that information. However, early on we came to realize that a single "job placement rate" statistic unintentionally hid a lot of important details, like how to count students who don't actually seek work, or how to report students who start their own business. So we stopped reporting a single percentage and began reporting the outcomes of all students who attended Epicodus, broken down into several different categories.
We're very excited that CIRR has adopted our approach, with a few tweaks based on the input of all the members. CIRR offers a simple rubric to report the wide variety of different outcomes our graduates have. This includes full-time, part-time and contract employment, entrepreneurship, and more. CIRR has also created a set of standards for reporting our graduates' salary outcomes that we're very excited about.
As of today, we're reporting our outcomes using the new CIRR format, along with 15 other schools. So, as a prospective student, you can easily compare any CIRR schools you're interested in using the same metrics. Additionally, another 25 schools have already asked to join since CIRR's first public announcement last month! If you're considering attending a school that isn't a CIRR member, we encourage you to ask them to join so you can compare their student outcomes, too.
To the best of our knowledge, CIRR is the first time any group of schools has ever come together to establish a transparent, comparable set of outcomes reporting standards.* And, while no universities currently employ this same CIRR format, we can still roughly compare our outcomes to those of more traditional two- and four-year institutions as a whole. In those institutions 55% of first-time students graduate within 6 years; 35.7% of returning college attendees ever finish; and 27.3% of graduates work in a field related to their major. We're hopeful that CIRR standards pave the way for all higher education institutions to report outcomes data in a transparent, comparable format--not just code schools.
* The American Bar Association's employment summary reports for law schools is the closest standard to CIRR, but it does not include the length of time graduates take to find employment, and does not include salary data. The US Department of Education College Scorecard reports only on data from federal financial aid recipients, only 10 years after starting school, and only median salary. Some schools report outcomes based on their own definitions, but not in a comparable way. We're not aware of any other sets of comparable outcomes data.
Here at Epicodus, we value transparency. Especially when it comes to student success. That's why our student outcomes have always been publicly visible right on our website.
As reported this morning by Tech Crunch, we're very proud to announce that we are a founding member of the Council on Integrity in Results Reporting, or CIRR. Composed of top coding schools in the nation including Hack Reactor, Full Stack Academy, Code Fellows, and more, this council aims to standardize reporting of coding school graduate outcomes to provide prospective students reliable, vetted data.
Beginning March 29th, 2017 each CIRR school will publicly report student outcomes using the exact same metrics. This uniformity in reporting will allow prospective students to easily compare schools, and choose the program that best fits their needs.
Outcomes data for 100% of each school's graduates will be available in a single, clear report on their website, including information such as:
- How many students graduated on time?
- How many accepted a full-time job in the field for which they trained within six months?
- How many secured part-time jobs?
- Did the school itself hire any graduates?
- How many students jobs are in fields outside of what they studied for?
- What are the salaries of grads who started jobs in their field of study?
CIRR members will also publish updated reports semi-annually. Beginning with the release of 2017 graduate outcomes, each school's data will also be reviewed and verified by an independent third party.
We're so excited to help establish standards of transparency and accountability in coding schools. We know deciding to attend code school is a big leap, and want to insure students have access to transparent, standardized information to make informed decisions about their education. And we encourage other code schools to do the same. In the words of our CEO Rebecca Gardner, "This is our commitment to providing students with an objective, transparent way to choose a program that's right for them."
You can find more information about the Council on Integrity in Results Reporting, including a full list of participants, reporting standards and metrics on the CIRR website.