Updating your outdated knowledge by moving to a new web stack

After a few years working with the same framework and language, you have stopped learning new ones. Life got in the way of learning and you let the habit die down, since the knowledge you have is enough to do your job well.

But now, you’re finding yourself worried about your skills and job prospects: your web stack is outdated and the market has moved on to something else. Change for the sake of change is absurd, but you’ve reached the point where putting some effort into it is warranted if you don’t want to stay stuck maintaining legacy ASP.NET WebForms or ColdFusion applications forever.

Fortunately, if you need to update your skills, you can pick up things where you left them and learn a new stack in a few months to a year depending on the free time you have. Many tools and frameworks have risen and fallen since you stopped learned, but the same patterns and practices are used. The tools are better, but nobody will mind if you missed a few frameworks along the way.

It’s easy to get overwhelmed by all the choices available, but you don’t need to spend ages evaluating which web stack you’ll pick up: all the popular ones are worth learning. If you don’t have a preference, choose the one that’s most popular for the kind of job you want to do. For example, startups are more likely to use NodeJS and Ruby on Rails on the backend, but in big businesses ASP.NET MVC or Java is common.

When you start working on a new project, it’s doubtful that the stack is going to be identical, so you don’t worry about the details:. The point is to learn what a modern stack look like and not a specific set of tools: if your knowledge of JavaScript, HTML and CSS is solid, you won’t have trouble adapting.

I’ve written a lot about learning as a software developer, but if you already know what’s your specialty and you only want to update your skills, you can follow this quick and dirty plan:

  • Step 1: Follow a course or a book that describes a good development workflow using your new stack.
  • Step 2: Build a small application on your own to apply the concepts you learned.
  • Step 3: Work with others on a project. It’s not always possible, but this will cement your learning.

You won’t be comfortable with your new tools right away, and you need to keep an open mind to get the most out of your learning. But it’s worth putting in the time and effort to learn a new stack so you can take pride in your skills instead of just scrapping by with knowledge you know is obsolete.

How to get started with Android development

andro02Learning how to build a mobile application is a good project to improve your programming skills while learning to work in a different environment than the desktop or a web browser. You can get started without worrying about a large stack, making it easy for a beginner to pick it up and start playing with quickly.

Building applications with the Android SDK is self-contained if you stick with the standard libraries. You only need to download the package from Google containing all the tools and you’re ready to go. If you know object-oriented programming and how layouts are done for the web, many patterns and practices will feel familiar to you. The barrier to entry is low: all the tools are free, so you only need an Android device and your computer to get started.

Also, the open philosophy of Android means that you can do as you wish with your applications and your device. As long as you have an installer file (.apk), you can distribute your application to any device. It’s easy to send a copy of your application to your friends so they can test it out. This is great if you have a small project that you only want to deploy on a few machines such as a kiosk an art project. Once you have more experience, there are many open source libraries that improve on what is available in the SDK, and the open source community is active and welcoming.

The following will teach you how to get up and running with the samples included with the Android SDK.

Setting up an Android development environment

You don’t need much to get started with Android. Any decent PC, Mac or Linux box will do the job. All the tools are free, and you can install them as a single package from the Google Android Developers site at https://developer.android.com/sdk/.

There are two main tools you need to know about: the Android SDK Manager and the Android Studio IDE.

The Android SDK Manager is used to download the libraries, tools, system images and code samples for the platform (version) of the Android OS you want to develop for. By default, the package contains the latest version of the SDK Platform (6.0/API level 23 as I’m writing this). When a new version comes out or a new developer kit is available, you must download it using the SDK Manager.

The Android Studio IDE is where you’re going to spend most of your time. It is based on IntelliJ and includes a code editor, a layout editor and all the tools you need to compile your application and debug it on an emulator or on your Android device. Eclipse was previously available as an IDE so you’re going to see some references to it online, but Android Studio is now the official IDE for Android and everybody is now using it.

Installing the drivers for your tablet

By default, when you plug in an Android device in your computer, you’ll see the content of the external storage like you would see the content of a USB key. It’s enough to upload data, but if you want to debug an application on your device, you must install the drivers. You could develop applications using the emulator, but it’s a lot slower and it’s going to be hard to see if the touch interactions work as you intended.

If you have a Nexus device, the drivers are available from the Android SDK Manager. For other manufacturers like Samsung or ASUS, you can find the driver on their website. It’s not always clear what you should download, since the driver is often packaged with other software such as synchronization tools.

To be able to attach a debugger, you must also enable the debugging mode on your device by navigating to the About option in the Settings menu. Click 10 times on About and the Developers Options menu will appear, allowing you to set the debugging mode.

Running the sample projects from the Android SDK

The language used with the Android SDK is Java, but Android has its own virtual machine, Dalvik, that uses a subset of the standard Java classes. Since it’s such a small subset of Java, you don’t need experience in Java to get started. If you have a good basis in any object-oriented language, you should be able to pick it up pretty fast. The rest of the files, such as language files and layouts, are in XML.

To get started quickly, I’m going to show you how to run one of the sample projects. Those samples are from Google and they are a good starting point to learn what you can do in an Android application and how to do it. Google regularly adds new samples as new APIs becomes available, so check them before trying to do something.

When you start Android Studio for the first time, you’ll see the following screen. To get started running an application right now, just select Import an Android code sample to create a project.

AndroidStudioWelcome

In the following screen, choose the Borderless button example and click Next to create the project:

Once the project is loaded, select Debug… from the Run menu to launch the application in debugging mode on your device. A Device Chooser window will pop up, allowing you to select your device (if the driver has been properly installed) or to launch the emulator. Press OK and the sample will run on your device.

You can now play with the sample and add breakpoints in the source code (located in the Application\src\ folder) to see how it behaves. For example, you can put a breakpoint in the onCreate method of the MainActivity.js file, and try to understand how it behaves when you rotate your device.

Follow up articles:
Basic structure of an Android application
Layout of an activity using a layout manager

When are courses counter-productive?

When you wish to improve your programming knowledge, choosing the next course you’ll follow on platforms such as Udacity, Coursera or Udemy is exciting. All the courses descriptions promises that you’ll learn great new skills you can use to build cool projects and to improve your career. It’s also very easy to get started by just pressing a button. When you’re going through the process, the feeling of growing your knowledge is awesome and you’re surrounded by a community of learners going through the same process. Finally, you get the satisfaction of finishing yet another course and you can brag to your friends that you’ve collected a few dozen courses in a variety of complex domains. What’s not to like about it?

Learning and deepening your knowledge is more than just following instructions from a teacher. Most of those courses follow a similar format and difficulty level, and will teach how to be a beginner in a variety of domains and programming languages. You’ll master the process of completing courses, which may feel like the right thing to do to learn new skills. It’s easy to default to courses to learn new skills, but you must make sure it’s worth it and that you’re not just collecting certificates. You also must be careful not to become too comfortable with the process: if going through a course is a breeze every time, you’re probably not stretching yourself enough and you’re using this learning technique as a crutch that will slow you down.

I’m not saying that following a course doesn’t take any effort or is worthless, but choosing courses at random is a poor use of your time if you wish to grow as a software developer. In fact, the current state of online education is awesome: there are great courses available to improve your knowledge on any subject, and they’re a valuable tool to have in your learning toolbox. I don’t regret the old times when all we had to understand a programming language was a few thick books. But there are so many courses that you must cut through the noise to find those few that will help you reach your goals. You need to focus on a few core skills instead of signing up for everything that sounds cool.

Also, following a course is the beginning of the learning process and not the end. If you wish to really understand the material, you must use what you’ve learned, form your own opinions and improve beyond what you were taught. Don’t be afraid to start making your own mistakes, to share what you have learned and to make code that will be used by real people. You won’t have the time to do that if you’re cranking out certificates: you’ll get a lot more out of the courses you do follow if you do your own work that’s beyond what’s presented instead of sticking to the curriculum and stopping when it’s done.