Last week I attended my first ever developer conference. Or any conference, for that matter. ng-conf 2016 was a blast! I happened to get a chance to buy a ticket late, way after I thought I'd even have a chance at attending. At the beginning of April I got an email saying they had released one last round of tickets and I could buy one if I wanted. I jumped at the chance, and man am I glad I did! Luckily for me, my work was willing to foot the bill, and in turn it gave me the chance to go learn a lot and get fired up about Angular 2.
In this post, I'm going to give just a brief recap of what jumped out to me the most, and what my plans are personally and professionally with Angular 2. I also want to do something new for me, and that's write a tutorial for getting started with Angular 2. I see myself as just an average developer, and my experience with learning Angular 2 and the struggles probably reflect what many other developers have gone through. So it'll be something new for me, but I want to try. We'll see how that goes.
In general, There are some great things about Angular 2. First, the size of the files that are being sent to the browser. Angular 2 is set to be smaller than AngularJS 1.x. Small files means fast load times, and fast load times means happy customers. Angular 2 has great promise in that area. Another thing that is so nice is the many different ways you can use Angular 2. You can use it in traditional web apps, mobile apps (with NativeScript or ngReactNative), in desktop apps with Electron, and many other ways. It is a very versatile platform, and that's really exciting. The prospect of writing Angular 2 code once and being able to give users multiple options of using your product is so awesome.
Angular 2 has many great features, and more are sure to come. These are just a few of the things I liked, and that stood out to me at the conference. Below are a few more topics with a little more detail about what I liked about the different topics.
One of the things that I'm most excited for is the Angular CLI. I don't know about you guys, but getting a project set up up until now has been a little bit of a process. Make a package.json, a tsconfig.json, install dependencies, make the main.ts file, the first component...you get the idea. Not an easy thing to get going. But can you imagine this to get going:
ng new my-app cd my-app ng serve
and your app is going? in 3 lines in the terminal and your app is up and running. In addition to how awesome that is, if you need a new component, it's as easy as
ng generate component component-name. Same with routes, services, classes, pipes, directives, and others. The guys working on the CLI are probably going to be everyone's favorite people.
I think one thing that would be awesome (and maybe this is something I can actually work on to contribute to open source) is to be able to generate a new app from the Angular CLI where Express is already set up with a basic configuration, or something like that. Many times we're using some other sort of technology along with Angular 2, and it'd be nice to get those projects set up just as easily. I'm thinking something kind of like yeoman for only Angular 2 projects.
The last thing with the CLI that was mentioned is that they plan on allowing you to run a command from inside your project and they'll show you what breaking changes you have in your code from the most recent update and to help you easily upgrade and know exactly where to go to get up to date. After having just updated an app from beta 12 to rc.1, I am positive I would have loved this feature. Anyways, there are lots of fun things coming down the pipe for Angular 2 development.
I think Codelyzer has the potential to be as helpful for Angular 2 productivity as TypeScript. The ability to run your code through Codelyzer and get feedback on best practice and any errors you might have is great. From what I got from the presentation on Codelyzer is that currently it's a lot like a linter for your code, but that it has plans to be much more than that. The thing I took from this talk though is the importance of setting some team-wide coding standards and holding ourselves to those standards. The biggest upside I can see is that when we hire a new developer, it's easier for them to jump on the project and know what they need to do and how to get up and running.
In the end, I'm so glad I was able to go to ng-conf. I've had a desire planted in me to become a very good, very efficient Angular 2 developer. In my AngularJS 1.x apps, I learned the basics of the framework and didn't do a good job at becoming really effective or become good at upgrading and evolving with the framework. Angular 2 looks to be around for the long haul, and because of that I don't want the same thing to happen to me again. That's one of the reasons for this blog post: to get myself in the habit of recapping what I learn and get myself on the path to contributing to the Angular 2 community. If there's something that jumped out to you about ng-conf, make sure to share it with me on Twitter or via email. Thanks!