Archive for the 'Software Development' Category

New Course – The Future of Technology Careers

Saturday, May 16th, 2015

What technologies will you be working on a decade from now? Will you even be working in tech? Do you even think that far ahead?

Most of us don’t. There’s this assumption that because technology changes so quickly, long range career planning in technology is futile. So our careers are driven by the opportunities of the moment and happenstance, rather than by any real long term thought.

But it turns out that long term career planning is possible, even as the pace of technology change increases. Not only is it possible, it’s a crucial part of any technology career, for all that it is neglected.

My new Pluralsight course, “The Future of Technology Careers” can help you to start applying long range planning to your career – to think about the future in new ways.

And if that doesn’t convince you to watch it, allow me to point out that it is the only Pluralsight course to seriously address the potential consequences of a Zombie apocalypse on software development. How can anyone say no to that? Remember – you can sign up for a free trial on their web site, so what are you waiting for?

A Different Kind of Programming Course for Kids: The Back-story

Tuesday, February 3rd, 2015

About a year and a half ago, Pluralsight put out a call for programming courses targeted for kids. I couldn’t resist the challenge, and the resulting course “Amazing Things You Can Do With a Web Browser (And a Bit of Code)” is now available for free viewing on Pluralsight.com.

It’s not your usual kid’s programming course.

I know what a beginner’s course is supposed to look like. You start by teaching the most basic concepts and then build on them step by step. You add interactivity – things they can try and experiment with along the way. And that is a good solid approach – especially for kids who want to learn programming.

There are lots of great courses like that already. I wanted to do something different. In particular, I wanted something that might appeal to kids who weren’t necessarily interested in learning programming.

Every educational expert will tell you that the way kids learn best is through play. Personally, I think that’s the way adults learn best too, but that’s another subject.

When kids play, they do not start from basic concepts and build on them step by step. They go straight for the goal and fill in the blanks, making them up as needed. They don’t lecture each other – they engage in conversation and argue with each other. They like to mess with each other, prank each other. And they are much more interested in listening to other kids than to adults.

So I thought to myself, how do we make a course playful – the way kids really play?

I knew I couldn’t do it myself. I can have all kinds of theories and opinions of what would appeal to kids, I could even do market research – but I can’t really know it personally. I may have had the vision, but the kind of course I had in mind could only be created by a kid. A really smart kid.

Now those of you who have read my book “Developing Teen Leadership” know that I’ve volunteered for many years as a youth group advisor. Over the years I’ve met a lot of smart kids who were into programming – and let me tell you, the list of companies they work for and titles that they now hold would blow your mind. So I looked at our current membership and who was into programming, and had a chat with a 14 year old named Tom. We chatted, brainstormed and pitched the idea to Pluralsight, and they bravely decided to give it a shot.

The (long awaited) result was “Amazing Things You Can Do With a Web Browser (And a Bit of Code)”. The format is a conversation between Tom and me. Tom is the teacher – I am the student. The examples are… well, playful. We have a talking pirate. A geek test. A cool way to prank your friends. We make mistakes along the way and fix bugs as they come up.

This course is not the final word on kids programming courses. It’s not better that what exists. It’s different. An experiment – hopefully one that will inspire other innovation in this space.

One final thing that I want to make clear. While the original vision for the approach may be mine, the content of the course is Tom’s. We brainstormed the project ideas, but he had the final say. He wrote all of the samples. I did not tell him what to say. He really is the teacher of the course, and I had a lot of fun being the student.

New Course: The Dark Side of Technology Careers

Tuesday, January 6th, 2015

Have you ever noticed that most discussions of technology careers are almost relentlessly positive? Studying technology is portrayed as a guaranteed path to a great high-paying job, sometimes at a workplace that offers all the luxuries of a high-end resort. Courses on tech careers, including my own, reflect this in a way – promising to teach skills that will let you take full advantage of the opportunities a tech career offers. When we talk about our careers we tend to focus on the cool projects we’re working on.

Most people in technology do have pretty good careers, but that’s a far cry from “happily ever after”. Bad things happen. People get laid off, projects get cancelled, and companies fold. There’s politics, interpersonal conflict and various forms of discrimination and unfairness.

Bad things can happen in any career. But we in technology often seem to be blindsided – caught by surprise when things go wrong. The focus on technology, and the positive outlook we find in schools and books and courses doesn’t prepare us for reality.

My latest Pluralsight Course “The Dark Side of Technology Careers” sets out to change that. It’s about the challenges, obstacles and traps that almost everyone faces sometime in their career – how to spot them, avoid them, overcome them, and if necessary survive them. It’s about the things that we, who have been in the industry for a while, learned the hard way – the things we wish we had known starting out.

Those early in their careers will find this course an invaluable map through previously hidden career minefields. Those well into their careers will discover that they are not alone in the challenges they face, and will likely discover some they had never considered.

I invite you to sign up for a free trial to watch it on Pluralsight if you aren’t already a subscriber.

New Course: Data Visualization for Developers

Saturday, April 26th, 2014

I’m pleased to announce my latest Pluralsight course “Data Visualization for Developers”. In this course I cover the fundamentals of data visualization that every developer should know. The course goes beyond the basics of charting to cover data visualization architectures – an essential element on today’s world where data, analytics and rendering can be distributed across multiple servers and cloud services.

Check it out at pluralsight.com

The Most Common Question

Thursday, January 2nd, 2014

I’ve been asked a fair number of questions of the years, but there is one in particular that I tend to hear over and over again, and ironically, it’s always been the most difficult one to answer.

The question, for any given topic, is a variation of  “Where do I start?” or “Can you recommend a good beginner’s book?”

Now, I’ve been writing books for many years, and publishing courses on Pluralsight for over a year – not to mention learning technologies on my own, so you can imagine that this is a question in one that I care about very much. Yet I’ve always found it difficult to answer – because by the time someone asks me the question on a given topic, I’m usually well past the beginner stage and don’t really know what the best beginner’s resources are at the moment.

It’s only recently that I realized that resources aren’t the problem. The problem is that people are asking the wrong question. Beginner’s don’t need learning resources – they need learning strategies. Advances in technology have radically changed the way we can and should learn technology, and I’m not talking here about online resources and courses. Technology is beginning to fundamentally disrupt education, and it’s time to look at education in a different way – one that understands and leverages resources in a way that varies by individual and by the technology being learned.

That is the subject of my new Pluralsight course “Learning Technology in the Information Age”. Its purpose is to change the way you look at learning a new technology in order to make that learning more efficient. To help you to think carefully about what you want to learn, why you want to learn it, and what types of resources to choose and where to find them. In short – to design your own learning path before you start diving into resources. It’s a lot like designing software before coding – and we all know to do that, right?

I encourage you to take a look – Learning new technologies is a challenge we all face every day, and the time you spend on this short course may pay off many times over in time you save learning technologies going forward.

Introduction to Leadership and Management for Developers

Friday, September 20th, 2013

When I studied computer science, it was about gaining “hard” skills. Learning the technology – how to solve tough technical problems. There was almost nothing relating to what we now call “soft skills” – getting along with others, working with a team, dealing with managers, or being a manager.

Based on what I’ve seen of new graduates, things haven’t improved much. Yet in the real world, those “soft skills” are what really make the difference between someone who is truly driving the agenda, and those who are just pounding out code on demand.

I’ve learned and forgotten and learned hard skills throughout my career. But I can tell you this – it’s the soft skills – the leadership skills – that have made all the difference.

The problem is, that most leadership training isn’t design for developers (you know, people who spend 90% of their time dealing with relentlessly logical machines as compared to somewhat less rational human beings). You might think that puts us at a disadvantage when it comes to learning leadership, but it doesn’t. It’s just that the way you might teach leadership to an English major, psychologist, or MBA doesn’t necessarily work that well for developers.

So here it is, a leadership training course designed specifically for software developers. I’ve never seen anything quite like it, and I’m very excited to be able to present in one place many of the ideas and techniques that I’ve been teaching for many years.

Check out “Introduction to Leadership and Management for Developers” on pluralsight.com

New course: Force.com and Apex Fundamentals for Developers

Thursday, November 8th, 2012

I’ve just had my very first online course published at Pluralsight. Here’s a brief description:

Apex is the native language of the Force.com platform, and there is a huge demand for skilled developers in this space. The Java/C# like Apex language looks familiar enough that experienced developers often expect a short learning curve, but the platform is actually radically different, and requires use of a unique set of set of design patterns. In this course, you’ll learn the core concepts that are essential for every Apex programmer to learn, and a roadmap to further resources to help you quickly become an expert in this rapidly growing space.

You can read more about it on the AdvancedApex.com blog.

Force.com is the next Visual Basic

Monday, September 24th, 2012

I just came back from the Dreamforce conference with an epiphany – Force.com is the next Visual Basic. Some less experienced software developers might think that’s an insult, but those of us who have been around know that it’s not merely a compliment – it’s an observation that, if true, represents a potential tectonic shift to our industry.

To understand why, I need to take you back over 20 years.

When Visual Basic 1.0 came out (I participated in the original beta program), the reactions to the product fell into three categories:

  • Most professional C++ programmers dismissed it. VB was a “toy language” or a “glue language” for components – not for serious software development.
  • Increasing number of software engineers embraced the language because, to put it simply, when it came to desktop applications you could be an order of magnitude more productive in VB than in C++. It may not have had the stature and features of a “real” professional language, but it sure was profitable to work in it.
  • VB was easy enough for anyone to use, so everyone did. Doctors, lawyers, students – millions of VB developers sprang up out of nowhere and wrote a lot of code. Much of it was very bad code, but that’s what happens when a bunch of amateurs get in the game. Entire book, magazine and training industries grew up to help them get better, and many of them did and built entire careers around the platform.

By the time VB6 came around, it was the most popular software development language and platform in the world. Simply because it was easy, and it was productive.

Why was it productive? Because VB put an abstraction layer over the Windows API that was infinitely easier to use than coding to the native API or other available frameworks such as MFC or ATL. You couldn’t do everything in VB6, but you could do most of what you needed, and could call the API directly if you really needed to. Having a rich set of available components to purchase didn’t hurt either.

Microsoft did a lot of things right building the VB community. They had great developer and ISV relations. They supported several conferences. There were books, documentation, whitepapers and so on. They really set the standard on how to build a platform.

Then they created the .NET framework.

There was a lot of negative reaction from the original VB6 community towards VB .NET, some calling it “VB .NOT” or VB.Fred (coined by Bill Vaughn). Some programmers made the transition. Some switched to C#. But two things were clear. First, VB .NET was indeed a powerful, serious, professional language and platform for software developers. Personally, I love it, and still use it all the time. But it was equally clear that VB .NET is not easy. In fact, the entire .NET framework is robust, powerful, sophisticated and complex. It’s a great platform for software developers, but is it a platform that makes it easy for non-programmers to write line of business applications? Not even close.

Both VB .NET and C# are native languages to the .NET framework – the Windows API of today’s software. Missing was the magic of the original VB – that layer of abstraction that made it easy for anyone to write software.

I’ve been searching for that magic for a long time. I kept waiting for it to appear out of nowhere the way VB 1.0 did. I sure didn’t expect it to sneak up on me from behind.

(more…)

Advanced Apex Programming for Salesforce.com and Force.com

Sunday, August 5th, 2012

Advanced Apex Programming for Salesforce.com and Force.com

As many of you know, I do enjoy writing books. Which is a good thing given that I’ve written quite a few of them. I’m proud of all of my books, but there are a few that fall into a special category – and that includes my latest effort.

If you’ve looked at the book market, you’ve probably noticed that a lot of books are very similar. Most subjects offer dozens of competing books that have pretty much the same content. Personally, I’ve always felt that if a good book exists on a particular subject, I shouldn’t waste my time writing another one. As a result, most (if not all) of my books have been either unique, or the first one in a given space. For example: my original Visual Basic Programmer’s Guide to the Windows API was the only book for a long time that dared to teach Visual Basic programmers to use the Windows API. My recent book on teaching leadership skills to teens is nothing like anything else on the market.

Which brings us to Advanced Apex Programming.

As I mentioned in my previous blog post, I’ve been spending more and more time over the past few years working in Apex – the native language of Salesforce.com. I’ve learned a great deal in the process and… well, you know how it is. Sooner or later, if I learn something, I end up writing a book to teach it. In this case, I was astonished to find that nobody has written an advanced Apex book yet. There’s lots of great reference material, a good selection of articles, and plenty of beginner’s texts out there. But there was no book to help the intermediate developers take the next step, and give the advanced developers something to geek out to. Even the domain, AdvancedApex.com was available!

I couldn’t resist.

You can read about the book at AdvancedApex.com. I’m as excited about it as I was that original VB Programmer’s guide. As with that book, I think it’s going to help a lot of programmers write a lot of great code and become more successful. And as an author, hearing from readers that a book I’ve written has helped them build their careers is what really makes it worth the effort.

The Accidental Shopping Cart

Monday, October 25th, 2010

I wrote an online store. I didn’t really want to, but I just couldn’t find a solution that fit my needs.

I wanted a shopping cart that had really good extensibility – one that could connect to our licensing server not just to allocate keys, but to perform custom operations like allowing purchase of additional installations for existing keys.

What I found was largely disappointing. Not that there weren’t some great packages out there. If I wanted to set up a large online store with many products, it was clear that setting up my own Amazon.com equivalent would not be hard at all. There are any number of powerful online stores with numerous features available. But none of them had exactly the right features, and none had the extensibility I needed.

What I really wanted was a shopping component – some ASP .NET controls that could be dropped onto any ASP.NET page and would somehow work together to implement a shopping cart. There would be a control that would “add to cart” a single product – and a page could have any number of these control to display multiple products. There would be a shopping cart page that would allow modification of quantities or deletion of items from the cart. And there would be a checkout control.

In my ideal solution checkout would be handled by an external processor such as Paypal, and once the order was confirmed my code could issue license keys, download links, send out customer Emails and so on.

After searching through and installing trial versions of numerous packages, I came to realize that none of them came close. The truth is, I didn’t want an online store – I wanted an online store component.

So I wrote one. The excuse I used to justify the time was that it would make a great application note for the latest version of our licensing system. But in truth, it sounded like a lot of fun – and it was. I ended up using authorize.net for the credit card integration (they have the best online documentation for developers of any of the card processors I found other than perhaps Paypal).

There’s still some work ahead to turn it into an application note for distribution, but the store is now live at http://desaware.com/purchase/store.aspx.

Above all, the experience confirmed to me the rightness in the way we decided to extend the licensing system for the newly released version 2. Instead of piling in features, we focused on enhancing the extensibility model. Our licensing system is not so much a licensing application as it is a licensing component – and right now it’s hard for me to imagine a licensing scenario that it can’t implement.