Better to be a software developer than a college professor?

Other than the headline, which is amusing, I am not sure about the methodology or significance of this study in US News (do they still exist?). And it seems that many professions, e.g. College Professor, don’t even get mentioned. Is it because they don’t even make the top 100? I doubt it. Anyway, Here’s more about the US News and World Report’s assessments:

“All jobs aren’t created equal. In fact, some are simply better than the rest. U.S. News 100 Best Jobs of 2014 offer a mosaic of employment opportunity, good salary, manageable work-life balance and job security. Some careers offer just the right mix of these components – for instance, nearly 40 percent of our picks are health care jobs – but the list also includes strong showings from occupations in the social services and business sectors. And for the first time, our No. 1 pick is a technology job. Read more on how we rank the best jobs, and check out our complete list.” Read the whole article and see the report in US News and World Report.


Ivory Tower or Trade school?

One of the tensions that I have seen in teaching software engineering is whether something should be viewed as legitimate research or part of the craft of computer engineering.

It’s a slippery slope that I myself didn’t have a good articulation for.

I came across this in a newsgroup which I think is a pretty good description. The writer is referring to Researching Information Systems and Computing:

“According to the author, the major differences are that in the typical software industry is that the less that is learnt or the less that needs to be discovered the more successful the project is deemed to be. If all is going according to plan then using existing knowledge, avoiding backtracking and changing of design or avoiding having to redo analysis would be seen as a part success. Having to change your design, backtracking and redoing analysis are perceived as a negative risk which needs to be mitigated. These risks could overrun the project constraints such as time, budget etc. Therefore industrial practitioners often leave out risky or uncertain parts of a project.

A researcher on the other hand focuses on these risky and uncertain items because tackling these risks and uncertainties successfully would lead to new knowledge being created. Hence you can claim to be doing research rather than ‘normal’ design and creation through the risk taking of your software product or process. You can further claim justification for your design by using theoretical underpinnings such as mathematical formulas and or formal methods from the field. You should also be able to say how the knowledge aquired from your design can be applied generally to other situations.

Software Developer Meat Market

An interesting article in Forbes about Software Developers and Development in general, The Rise of Developeronomics. While here and there he is promoting old chestnuts which may or may not be true there is a core argument which is quite intriguing. It goes something like this:

  1. All companies are becoming software companies, meaning they are driven by software whatever their business actually is.
  2. Hence a key resource to a successful business is an effective, efficient and scalable capability to create innovative computer driven systems. Programmers are scarce.
  3. Hence the way to invest in the future is to cultivate great and excellent developers who believe in you, are willing to follow your vision and will commit to your projects.

Sometimes I wonder whether business writers come up with a two paragraph insight or story idea and bulk it up into a 3 page article, or whether I am just not appreciating their craft. In any event, Venkatesh Rao writes:

“Investing in good developers is such a good bet at the moment, that if you have money and you happen to find a talented developer who seems to like you and wants to work with you, you should give him/her your money to build something, anything, even if you have no really good product ideas (those are cheap; I’ll sell you a dozen for a dollar).” (from The Rise of Developeronomics)

Wow. And a little further on he warns:

“In what follows, I am deliberately going to talk about the developers like they are products in a meat market. For practical purposes, they are, since the vast majority of them haven’t found a way to use their own scarcity to their advantage. Which means others find a way to do so. In capitalism, every human is either a capitalist, somebody else’s capital, or economically worthless. Today, this abstract point specifically translates to: people who can invest in developers, developers, and everybody else. (from The Rise of Developeronomics)

Read the whole of The Rise of Developeronomics.

Is your software developer any good?

Are you thinking about hiring a software developer to build your system? Here are “8 Things You Ought to Know If You Do Not Know Anything About Hiring a Software Developer“. He says:

“I did not come to this industry with a software background. I studied math, physics, business, then finance. But over the past 12 years or so, I have learned quite a bit about how to pick a software… “friend”. So let me share with you 8 things I would want to know if I was starting afresh.” (from “8 Things You Ought to Know If You Do Not Know Anything About Hiring a Software Developer“)

Can I be your friend?

The Boston node of OSDV

I’ve been working quite a bit on the Open Source Digital Voting foundation project over the last 9 months or so. It’s really weird but I’ve turned myself into a mini-expert on how elections are organized and run here in the USA. It’s fascinating and way complicated.

OSDV is a non-profit organization dedicated to developing a suite of election (as in Democracy) hardware and software.

The umbrella name for that project is TrustTheVote: an open source project, which will work closely with election officials around the country to learn requirements and then develop software which in turn will be offered free of charge to those who want to deploy it. So we won’t be selling the technology, but we will be evangelizing it like crazy. Think Apache or Drupal.

Here are some links to satisfy your curiosity:

We are getting closer and closer to being properly funded with some major contributions so it is time for me to start finding people who might want to join the team. This being an open source project, the idea is of course that any interested person can look and work on the code.

But we also plan to hire 3 developers in the Boston area. Right now it looks like a good part of our code will be Ruby and Ruby on Rails. But that may change; it certainly will be broadened. Really more than anything I would ask if you consider yourself a really good software developer, who loves to design, write, debug and deploy code. And then secondly I would ask if working on a project that is mega ambitious and/but that has a chance to really have an impact on our society – whether that excites you.

Please contact me directly if you want to learn more or throw your virtual hat into the virtual ring.

I’ll be teaching a course at Brandeis University

Follow along as I develop the course: Brandeis University Web App Dev, Mobile App Dev and Incubator

I’m fortunate to have the opportunity to co-teach 3 courses next year at Brandeis University. It’s something that I have wanted to do for a long time now and I am looking forward to it. As an experiment, I thought I would publish the course notes as I am developing them and perhaps get some feedback, suggestions or even volunteer guest speakers.

Here are the blurbs:

  • Web Application Development: An introduction to web programming that covers the fundamental languages and tools, including HTML/CSS for page layout, javascript/ajax for client-side interaction, and server side programming in Java, Ruby, and SQL. The course will also discuss security, scaling/optimization, and multi-tier architectures.
  • Mobile Application Development: An introduction to the design and analysis of mobile applications that covers the architecture of mobile devices, APIs for graphical user interfaces on mobile devices, location-aware computing, social networking. The course also covers the theory and practice of space and time optimization for these relatively small and slow devices.
  • Incubator: An introduction to software engineering for web and mobile applications. This course covers agile programming techniques, rapid prototyping, source control paradigms, effective software documentation, design of effective APIs, software testing and analysis, software licensing, with an introduction to business plans for software entrepreneurs.

I hope you are interested and take a look at the detailed syllabus and course notes and give me your comments and also volunteer as a speaker (we will be looking for a different speaker every week.)

Follow along as I develop the course: Brandeis University Web App Dev, Mobile App Dev and Incubator