• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Learn to be a Developer

  • Home
  • Blog
  • About
  • Contact

Ethan

“I want to learn to code but I don’t know where to start”

by Leave a Comment

Why is it so hard to figure out where to start?

It’s no secret that software development has exploded in the past 20 years. New software startups pop up like dandelions in the spring. It then follows that a lot of people think software development is a good career choice and are afraid of missing out on a lot of great opportunities.

Software developers are, in general, pretty opinionated. I doubt this is unique to developers, but it gets tiresome when you’ve dealt with it for years. If we’re not fighting over what operating system is better, then it’s what language is better. If it’s not that, then it’s code editors, or databases, or frameworks, or bug trackers, or development processes, or…or…or. It’s like we enjoy fighting.

In a time where more and more people are becoming developers, it’s not enough to be just “a developer” anymore. No, to feel superior now, developers need to somehow differentiate themselves from both the non-developer “rabble” and their fellow developers.

This mentality has lead to more coding languages being developed that purport to “fix” issues with other languages. New frameworks are built to “fix” issues with previous frameworks. And on and on.

All this leads to a huge amount of choices, opinions, and resources. Naturally, that makes starting to learn, daunting.

Since I’m a developer too, I’m susceptible to the same opinions and biases that I just railed against. The difference is, I’m right. I’m kidding. Here are my suggestions.

Choose your weapon language

As someone once said: “the weapon doesn’t make the man.” It’s probably a quote from some B martial arts movie or Dragonball Z, but the philosophy holds true for programming languages. A good developer is a good developer regardless of language. However, you need to start someplace, and if you pick your first language wisely, you’ll drastically shorten the time to hitting your goal.

I wrote in-depth about how to choose the right language as a beginner. It boils down to what you want to do. This is a quick list of general development goals and what language(s) are your best options to get there:

  1. Front-end web development (user interface and interaction): Javascript, HTML & CSS
  2. Back-end web development (services that front-end web apps and mobile apps call out to): Ruby, Python or Javascript
  3. Mobile development: Swift (iOS) or Java (Android)
  4. Windows development: C#
  5. MacOS development: Swift & Objective-C
  6. Operating systems, filesystems, embedded systems: C/C++

Naturally, there are other options for each of these. Javascript is useful for items 1-5, for instance. But the list is a good starting place as-is.

How to find good resources to start learning

There are a ton of resources to learn to code out on the web. How do you sift through the chaff and find the real gems?

Most resources fall into the following categories:

  • Books
  • Videos
  • Blogs/tutorials
  • Courses

Books are the traditional go-to resource. Search Amazon.com for your topic and read reviews. Make sure that any books you’re considering are new. Languages change and older books could slow your progress.

A lot of people have gravitated to videos to learn coding and other topics. YouTube is the first place most people look. Fair warning, this is going to turn up a bunch of crap. Look at how many subscribers a given instructor has, and watch some videos to see if their style and method works for you. Another possible issue is that since video is more difficult to update for new versions of a language (or corresponding tools), some videos might be outdated.

For blogs and tutorials, a simple google search like “best python tutorial” or “best swift tutorial for beginners” is a great place to start. As with videos, you’ll have to try a few to see how they work with your learning style.

Courses are the newest resource on the scene. Codecademy is one that a lot of people find immediately. However, after I talked to a lot of people who tried it, none really thought it did a good job. Free Code Camp or The Odin Project are both highly regarded for web development. Udacity, Coursera, Udemy all have courses in different genres. Each has reviews so you can compare and only look at ones that helped others. My specific examples follow in the next section.

Where you should start, specifically

Each development goal in the above list is different enough to require different starting points. I’ll list the place that I’d recommend you start for each one. I have not personally tried all of them, but have come across them when doing research. There also might be better ones, and so if you know of any, let me know and I’ll update this list.

  1. Front-end web development: Free Code Camp
  2. Back-end web development: Ruby (for Rails), Python (for Django), Javascript (for Node)
  3. Mobile development: Swift Lynda’s Swift Essentials or Flatiron school’s free Swift course, Swift Programming book or Java Head First Java, University of Helsinki’s MOOC
  4. Windows development: Head First C#, Pluralsight’s C# course
  5. MacOS development: Cocoa programming for OS X, or the same courses for mobile Swift
  6. Operating systems, filesystems, embedded systems: C++ How to Program book, C++ Tutorial for Complete Beginners

Once you pick your language and starting point and you start learning, some things will be obvious, but others will be difficult to understand. You’re going to run into trouble and with concepts and code errors. That’s normal. We’ve all been there. Getting unstuck takes practice too.

How to get unstuck once you’ve started

Once you start learning to code, you’re going to run into problems that you don’t know how to solve. This is normal and part of the process. You don’t really learn unless you struggle through it. That said, you won’t always be able to move forward without some help. So how do you find that help?

First off, forget books. They aren’t a great place to start here, because the number and types of errors they can cover is so small.

Online is the easiest place to find help. Most devs look for solutions on StackOverflow or just google the error message (if they have one). Other solutions are to find newsgroups or forums dedicated to the language you’re using.

How to use Google to get unstuck

When you first try to google an answer to your problem, you’re going to run into the issue of what to search for. Experienced developers are really good at this art, but unfortunately it’s hard for beginners, who need it the most. So here I’ll give you a some expert hints on how to improve your search results.

  1. Always include the name of the language you’re using. If you’re using a specific tool, database, or framework, include that as well. Don’t include all of them, just the ones that you believe are relevant. This will take practice.
  2. If you’re getting an error message, include that in quotes. Edit the message to contain only the core of the message so it doesn’t reference any files, classes, path or filenames that are specific to your program or computer. The trick here is to make the error message as specific as possible while still being general enough to apply to others who are using the same language/tool/etc. but in a different context.
  3. If you’re working through a publicly-published problem from a book or course, add that information to the search.
  4. Explain what you’re trying to do, with the fewest words. This is tough for developers of all levels. For a beginner, you may have trouble coming up with the right terminology. This is where the books, tutorials, and course materials come in handy. They should use the right language if you’re doing something similar to what’s covered in them. If not, you’re going to need to try some different wording. Remember, other beginners are going to be having problems too and might explain the problem the same way.

Here are a few examples I’ve used recently (minus the quotes):

  • ‘ruby rails form helper checkbox’ – I included ‘rails’ because I knew the form_helpers were part of Rails. I could remove ‘ruby’ here since ‘rails’ is ruby-specific and should narrow the search fine. And yes, I know it’s “Ruby on Rails” but searching google for ‘on’ just doesn’t help.
  • ‘ruby devise invitable after invited path’ – Here ‘devise_invitable’ is a gem, a Ruby code library (collection of reusable code) and I wanted to know more about its after\_invited\_path method. Google usually gives better results when you remove the underscores, ‘_’. If not, try adding them in and enclosing the underscored words in quotes: “devise_invitable”, “after_invited_path”.
  • ‘java “cannot refer to a non-final variable”’ – The error I was getting included “cannot refer to a non-final variable” but referred to files specific to my project before that phrase, so I didn’t include those parts.

Once you find a solution, DO NOT COPY AND PASTE. This is a huge no-no. Copying code verbatim from the web is a good way to slow your progress and keep you from becoming a better developer.

You need to understand the code, adapt it to your situation, try it and rinse and repeat. There’s a risk of copying bad or wrong code, but you also may find yourself going deeper down the rabbit hole. If the code you copy or adapt doesn’t fix the errors or creates new ones, you could be making your code more complicated and harder to understand all while trying to fix a problem.

So go slow, understand the changes you’re making and don’t be afraid to back out and try a different solution. Sometimes the problem you’re seeing is caused by multiple problems, but not usually.

Getting help from a person

Since googling for a solution is an art that takes practice, it’s easier and quicker just to ask someone. That assumes you have access to someone of course. A couple of ways to find someone to ask are, starting with the best:
* Friends or family, or friends of friends or family.
* Local meet ups, a la meetup.com or user groups (google for ‘ruby user groups near me’ or similar). This is a great idea anyway, in order to build a network of peers, mentors, and possible employers.
* campus groups if you’re in or near a college campus.
* Reddit.com – Look for subreddits like r/learnprogramming or r/learnjava.
* Local, virtual groups on Slack. Google for something like ‘tech slack <my city>’ or ‘developer slack <my city>’
* IRC, Internet Relay Chat. This is what slack has modernized and has been around for decades. A surprising number of tech companies have a presence on IRC. Google ‘<my language> IRC channel’ to find one.
* Facebook groups (although I’ve found these to be low-quality).

If you work better with more accountability and people, there are other options

Self-teaching is great but it takes a lot of work. You have to figure out what to learn. You have to find where to learn it from. You need to understand how to get unstuck and what projects to do. You have to find people to meet to build relationships with. Furthermore, you’re not held to any commitments other than your own. For some people, that’s enough. Others, myself included, work better when held accountable to others.

There are 2 main alternatives to self-teaching that address most of the difficulties, albeit for a price:
* Degree programs at universities
* Coding bootcamps

I wrote a whole guide on cutting through the crap and deciding on your best path to become a developer. Simply, sign up for my email list and I’ll send it to you for free. The upshot is that both provide ways for you to learn how to code without spending so much time and effort figuring out how.

What to do right now

What you should do now is send me an email at ethan@learntobeadeveloper.com. Tell me what language you’re going to learn and what resource you’re going to use to start. If you can’t decide, let me know that too and I’ll help you figure it out. I read all my emails. Cross my heart.

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)

Filed Under: self-teaching Tagged With: learning to code

Is a bootcamp a good way into a CS career?

by Leave a Comment

I was reading Reddit the other day and came across a post that was basically asking the above question. The poster wanted to change careers to software development without going back to get their degree. They wondered whether coding bootcamps were a good way to do that or if they would be better to self-teach.

In short, yes, bootcamps can be a good way to get into development if you attend a good one and work your ass off. A lot of professionals who want to become developers don’t want to spend the time or money going back for a college degree. They still want to learn as fast as possible, though. Bootcamps fill this need.

That’s not to say bootcamps are cheap or easy. Most bootcamps cost $5,000-$20,000 for 3-6 months full-time. Because they aren’t accredited, though, you usually can’t get financial aid unless the bootcamp itself provides it. Some bootcamps take a percentage of your salary from your first job instead of up-front payment.

Following that, there’s the challenge of finding which bootcamp you should attend.

What bootcamps are there?

You can get a starting list from Google and Course Report provides ways to find bootcamps that fit your needs. There are a lot of “Top-X Bootcamps of 2016” or similar results. With these, make sure you understand how the site compiled and compared the bootcamps to narrow it down for their list.

How can I tell if it’s a bootcamp is good?

This is tricky. There are a lot of bootcamps out there now and a lot of reports of scammy ones. Since there’s no accreditation there’s no standard way to judge and compare bootcamps.

The typical method people use to compare schools is the hire rate for graduates. One problem with this is that
1. They could be lying (ruh roh)
1. The graduates could be getting non-development jobs. Some bootcamps hire their own graduates.

Some standardized reporting does exist

The Council on Integrity in Results Reporting (CIRR) is standardizing results reporting from coding programs. As more programs join it will make it easier to compare. Right now, CIRR reports that 15 schools have signed on to use their standards. The results for each member is under Published Data.

How to find the best reviews and avoid survivorship bias

You can also see student reviews at Course Report. Take these with a grain of salt, though. Many people have reported that some reviews appear fake or could be paid for.

A better option is to talk to graduates and people who are attending. You can sometimes find them on LinkedIn or Facebook, or through Course Report or other review sites. You can also ask on Reddit, in r/learnprogramming or r/cscareerquestions or Quora.

The program’s admission’s office should also be able to connect you with alumni. Those alumni can then refer you to other alumni, or classmates.

I would also suggest talking to people who dropped out, if you can find them. This helps you to avoid survivorship bias where you only see the point of view of the people who succeeded. This way you can find out why some people feel the bootcamp is weak, if it was too difficult for them, or the teaching method wasn’t a good fit, etc.

What you should know before you start a bootcamp

Expectations are everything. Before you start this path, you should understand and accept

  1. development might not be for you. Start learning to program on your own with Free Code Camp, Udacity, Codecademy to make sure you enjoy it.
  2. it’s not going to be easy. This is not a cake walk. There’s a lot to learn and not a lot of time to learn it.
  3. how you learn. Some people learn better with videos than with books. Know yourself so you can supplement with the right materials if you need to.
  4. you’re not going to make huge amounts of money at first. It will still take time to build your career.
  5. you’re going to get behind and feel like burning out. Make sure you build in some down time to your schedule so you don’t self-destruct.

At this point you should have a better idea if a bootcamp is the right path for you. When you have 1-3 programs you’re considering, send me an email with the info at ethan@learntobeadeveloper.com. I’ll give you my honest feedback on which is best for you. As always, I read every, single email.

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)

Filed Under: bootcamps Tagged With: bootcamps, learning to code

Which programming language should I learn first?

by Leave a Comment

There are so many languages which should you learn?

There are a lot of programming languages and a lot of popular programming languages. How do you pick which one to learn?

The decision is easy if you know exactly what you want to do as a developer and know what specific languages those jobs need. If you don’t know what type of development projects you want to do, the choice is harder. To help you decide, I’ll give you my suggestions and reasonings.

Does picking the right language even matter?

Many beginners worry about picking “the right language” when they’re starting out. They worry that they won’t be able to get jobs or work for cool companies on amazing projects if they choose poorly.

These fears aren’t completely unfounded, but they’re often blown out of proportion. In the end, the main benefit of learning a programming language is learning how to program. Learning to program is more important the language itself. Languages are the tools you use program. Think of it like learning to work on car motors. You start by learning on the car you have available, and understand the parts and how they all work together. When you’re comfortable with that motor you can work on another car’s motor easier, even if it’s from a different manufacturer.

To that point, knowing how to program in one language will help you learn other languages faster. Most programming concepts are not language-specific. Being able to think like a programmer is the biggest benefit to learning a specific language.

That said, you want to use your time learning to program efficiently. This means you should know what you want to do as a professional developer. You should also know how different languages help you to learn other languages in the future. Think of this as choosing your first programming language.

Answer these questions to help pick your first language

  1. What job or industry do you want to be in when you become a professional developer? What language(s) are most used by companies in that space?
  2. What languages have been popular for at least the last few years?

Don’t worry if you still can’t decide after trying to answer these questions. Remember, it’s less about picking the “right” language, and more about learning how to program.

Specific language recommendations

Many software industries use specific languages. Furthermore, certain languages have characteristics that make it a good starting language. Here are a few specifics:

  • Python is many programmers’ first choice when asked to recommend a starter language. Python was created as a language for teaching programming. Because of this, it is easier to learn than many languages. That said, it’s also used in a lot of different ways across different industries in real projects. Some examples are web servers (Django), robotics, machine learning, and artificial intelligence. Dropbox even uses it. Given Python’s origins, it is probably the easiest language to learn on this list.
  • Swift is Apple’s current recommended language for programming all their platforms: iOS, macOS, tvOS, and watchOS. Objective-C is still widely used for macOS development, but Apple now encourages developers to use Swift. Apple provides developers with a lot of support, documentation, and apps to help learn Swift. Because it’s so young, it has changed a bit since it first came out and will probably change more in the future. Swift is medium-easy to learn.
  • Java is the standard for Android development. Java is also used a lot in software for large companies (enterprise software) and software that uses many computers to do more work (distributed computing). There are a lot of tools and resources available to learn Java. It is mature and stable. It is of medium difficulty to learn.
  • C#/.NET is the standard for creating Windows applications. Microsoft has a lot of tools and resources for learning. It’s about on par with Java’s difficulty.
  • Javascript (JS) is the primary language for modern web apps. There is a large and growing number of resources for learning JS. Also, because you only need a browser to start playing with it, it’s easy to get started. It’s of medium difficulty to learn.
  • C/C++ are used in almost all industries and project types. Some project types that use them are: operating systems, file systems, high performance computing, embedded systems, systems programming, robotics, machine learning and artificial intelligence. C is simpler than C++ and gives you a good foundation with which to learn C++. These 2 are the hardest to learn on this list.

Pick a popular language that’s been popular for a while

All of the above languages are popular, according to TIOBE. TIOBE has been tracking the “most popular” programming languages for a long time. All the languages have also been popular for quite a while, except Swift. Swift is still on the list because it’s Apple’s preferred language for their platforms.

Why is popularity important? Popularity indicates a few things you want in a language:

  • It is, and will be, used by companies on real projects.
  • It has a lot of usage which will find and help fix bugs in the language itself.
  • It has a lot of developers making libraries for it which will make it faster and easier for you to build apps.
  • It has a lot of people you can ask questions of when you run into difficulty.
  • It’s useful. You can make real apps with it and it’s not gimmicky.

Current popularity isn’t enough though. Much like diets or home exercise equipment, there are often fads. The languages that have been popular for longer have proven themselves in successful projects many times. Long term popularity also indicates that the language will continue to be popular for quite a while. Languages like C and C++ have been used since 1969 and 1979. Both are still in TIOBE’s top 3 languages.

Pick an object-oriented language to maximize your opportunities down the road

There are different types, or styles, of programming and each one has a bunch of languages that you can use. It’s important to pick a language that supports the style of programming that you’ll most likely use.

To use an analogy, let’s consider spoken languages. The 3 Romance languages are Italian, French, and Spanish. Compare them to Germanic languages like German, Danish, and Swedish. You can convey most ideas in both types but you may have to rethink and reorder how you speak.

Programming styles are similar in that you can do many of the same things in each, but the way you do it is different.

There are a few different types of programming that I’ll mention:

  • Object-oriented (OO)
  • Imperative
  • Functional

The only one of those 3 that you should focus on at this point is the first one, OO.

All the languages I listed above (except C) can support OO development (OOD). OOD is the style of programming you will come across the most in industries and companies. That makes OO important to learn and understand. Picking a first language that is OO will allow you to learn other OO languages faster. This, in turn, will increase your job opportunities.

C is an imperative language. C++ builds on Cs foundation and adds OOD features to it. This means that learning C will help you learn C++ but because they’re different types, the transition isn’t simple. Some people find this harder than others. I found learning C after learning OOD straightforward. Yet, I know a few people who use C exclusively who don’t understand OOD at all. Learning C will teach you important concepts like memory management and how computers work better than “higher-level” languages like Java or Javascript.

When in doubt, learn Javascript

I hate to say it, but right now it’s the most effective language to learn if you don’t have specific career goals.

Why is it the most effective language to learn?

It’s effective because can you make:

  • very pretty, interactive web apps
  • web services that run on servers
  • mobile applications for Android and iOS
  • desktop applications for macOS, Windows and Linux

Furthermore, a lot of people are using it. This means that there’s an active, growing developer community. A large, active community means that you should be able to get answers to questions and you’ll have many libraries to use. Libraries are bundles of code that are made to be used by other programs, but cannot be run themselves. In my car analogy, libraries are like parts for your car. You don’t have to design and make the parts yourself, you just buy them and install them.

Having lots libraries is important for building apps faster. The alternative would be that you’d have to re-invent the wheel every time you started a new project. ​

There is a downside to such a large, active community though, and that is the paradox of choice. There are many ways to do the same thing and no clear reason to choose one over the other. The JS community invents new tools, frameworks, and libraries constantly. This means its difficult to keep up and be confident in your choices for a long-term project.

So JS is useable in many different types of projects, has a large community, and has many libraries. And as an added bonus, the latest version, ES2015 aka ES6, makes JS a nicer, easier language to work with.

What to do once you picked your language

Once you have the language you want to pursue, where do you go and what do you do?

Your next goal is to find 1-3 good resources for your chosen language.

Books are the traditional medium, and you can use Amazon and its user ratings to find the best ones. One word of caution, though: be sure to get the most recent addition of the book if you buy or borrow it. Programming languages change. Sometimes those changes are drastic. If you get an older book you could learn features that aren’t used anymore.

There are good resources online as well. Tutorials on Youtube, blogs, or course sites like Udemy or Coursera can be worthwhile. Udemy often has sales on their courses. You can also get course discounts at sites like StackSkills. The quality of these resources vary, naturally. However, right now your goal is to get resources that are “good enough” to get an overview of the language.

Now here’s your mission: Find 1-3 good resources and email them to me at ethan@learntobeadeveloper.com. I’ll tell you which I feel are the best ones. If I don’t like any of them, I’ll tell you what ones I suggest. As always, feel free to include any other comments and questions as well, I read every email.

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)

Filed Under: learning to code Tagged With: learning to code

Primary Sidebar

Want an awesome career as a software developer but are confused how to do it?

I can help you get started now. Sign up here and get my guide,
The First 6 Things Aspiring Developers Should Learn About Java

Spammers are weenies. I'm not a weenie. At least, not in the spammy way.

  • Home
  • Blog
  • About
  • Contact

Copyright © 2023 · Genesis Sample on Genesis Framework · WordPress · Log in