Tag Archives: Developing

Free eBook, Microsoft Application Architecture Guide

As a new programmer, application architecture probably isn’t something that’s on your mind. Learning the syntax, the keywords, about objected oriented programming, and basic programming logic is hard enough. But at some point your programs will start getting large enough that architecture should become a concern, and Microsoft has a free eBook, Microsoft Application Architecture Guide, to get you started.

Below is a diagram from page 57 of the book that shows the basic structure of a well-designed application. The fundamental concept is this, that each “layer” of your application should be designed to work independently of any other layer. The reason being that if you have to make a change to one layer of the application it shouldn’t break something in another layer.

For example, let’s say you are coding up a simple calculator application as one of your first projects. It probably makes sense to you that you wouldn’t want to design the program such that if you made a mistake in one of your calculation methods, say adding numbers together, that you shouldn’t also have to rewrite the code that displays your number pad on the screen. And that’s the basics of application architecture.

While the deep technical aspects of application architecture might be a bit over your head in your early programming days, the high level concepts you can handle. So when you’re coding up your next program for a programming class or just for practice think about designing in layers.




Job Opportunities for Software Developers

Being a software developer is much more than writing phone and tablet apps. Below is a list of different development areas taken from the Microsoft Careers site and expanded a bit. By no means is the list exhaustive, but it should give you some ideas of the enormous opportunities that exist for developers, whether you want to develop as a hobby or you want to make it a career.

    • Business Software
      Consumer software is what you hear about most in the media, things like operating systems, phone apps, etc., but business software is a far larger market. Things like hosted IT solutions, information systems, supply chain management systems, inventory management systems, customer relationship management systems, financial management systems, etc. If there is a company, it needs software to manage every aspect of its operations.
    • Communications
      Skype and Lync are the two examples given on the Microsoft Careers website. I’m sure you’ve heard of Skype. Lync is a business-focused communications platform, including VoIP and video conferencing, messaging, and meeting management. But these are just two products from Microsoft. There are hundreds, if not thousands, of companies that have other solutions that are built to either compete with or enhance Microsoft’s own technologies. And that means development opportunities for you.
    • Developer Tools
      Developers use tools like Visual Studio and Blend to design and build software. But developers had to design and build the developer tools. Every programming language has developer tools, even if it is just a simple text editor. Software needs software.
    • Educational Software
      eReaders, math applications, art applications, biology applications, the list of possibilities with educational software are endless. And not only are the topics endless, but applications can be built for a variety of audiences (teacher or student) and platforms (PCs, tablets, and phones).
    • Entertainment Products
      Xbox and PC gaming are the two big areas here. Options include game development and other media solutions, like apps for the Xbox (SmartGlass, Netflix, HBO Go, etc.). And of course you could work on the Xbox development team. The Xbox needs software to run.
    • Health Solutions
      This bridges both the business market and the consumer market. Hospitals have major information management needs. That means software. And consumers are becoming more and more connected with their health, that means products like the Microsoft Band, software like Health and HealthVault.
    • HoloLens
      If you haven’t yet heard of HoloLens, you have to check it out. Virtual reality? How about augmented reality! If you want to develop the future, learn to develop for HoloLens.
    • Internet of Things
      With Windows 10, Microsoft is moving full-force into internet of things (IoT) development. This is going to change the technology world and offers you tremendous opportunity as a developer.
    • Kinect
      Kinect isn’t just for gaming. Kinect for Windows is being used in a wide range of applications. Check this out to get inspired.
    • Mobile Software
      Mobile software development is unique in that it brings together a wide range of technologies into a single device. With our phones we can make calls, email, text, instant message, listen to music and watch videos, take pictures, and use GPS to navigate. Windows Phone is Microsoft’s current mobile solution, but this is transitioning to Windows 10 with universal apps. This is my development focus and I think it offers tremendous opportunity.
    • Office
      Office is by far the most widely used office productivity suites in the world. As a developer, not only could you work on the Microsoft Office development team, but you could also work for a company that develops office add-ins to bring additional functionality to Office. Or you could focus on automating workflows by tying information systems to Office. There are lots of possibilities here.
    • Web Development
      From building websites to backend server technologies, there is no shortage of development opportunities in web development.
    • Windows Operating System
      Virtualization, networking, security, file systems, kernel services, storage, and device technologies: These core components come together to deliver the Windows experience, whether it’s on a mobile phone, a PC, or the web; at home, at the office, in a car, or anywhere in between.

The DRIP Method to Learning

This morning, as I was thinking through the process of learning to program, something hit me about how it all works, how we learn, particularly as it relates to languages. But fundamentally we learn everything using the same method. I call it the DRIP Method:

Do Repeatedly and Incrementally Progress

To learn something, you must do it. It doesn’t matter what it is. If you want to learn to read, you have to read. If you want to learn to write, you have to write. If you want to learn to program a computer, you have to program a computer. There are no shortcuts.

To learn something, particularly if you want to learn it well, you have to do it repeatedly. When you were learning to write, you didn’t write a single word and stop. You wrote the same word over and over and over again. When you learned to write a sentence, you didn’t stop with your first sentence. You wrote sentence, after sentence, after sentence. If you want to learn to program, you can’t write a single line of computer code and call yourself a programmer. You have to write and write and write until the fundamentals become second nature to you.

We learn incrementally. With a spoken language, it’s one word at a time. We say our first word as a baby. Then we slowly add words to our vocabulary. Eventually we figure out if we put multiple words together we can create a phrase or sentence that allows us to communicate effectively. This same incremental process applies to everything we learn. Expert, or even competent, status is never reached immediately or even quickly. It is a methodical process of doing something repeatedly and incrementally adding knowledge and skills to our competence repository.

By doing something repeatedly and incrementally adding new knowledge and competencies we slowly progress. We go from scratching our heads in confusion about the syntax of a programming language, to building our own code repositories, to creating well designed and useful programs.

I can promise you that at some point along your programming journey you’re going to get discouraged. It happens to the best of us. And when that time comes, just remember that you got to where you are using the DRIP method, and the DRIP method will see you through those difficult times. Do, repeat, increment, and progress, and one day you will be the expert you’ve dreamt of becoming.

Code well, code often!