Entries Tagged 'Software Development' ↓

The Inside Story of a Small Software Acquisition (Part 1 of 3)

My startup history goes back a few years.

In 5th grade I sold comic books to my classmates at a 30-40% markup. I was a voracious marketer; I handed out homemade flyers, created checklists so customers could see “at-a-glance” which issues they needed, and even started a subscription service. Whenever kids in my school had extra money the first thing they thought of was buying comics.

In 8th grade I sold candy at a 500-800% markup because kids couldn’t buy it within walking distance of school. I made money hand over fist, and quickly learned that you should re-invest your profits instead of purchasing DJ equipment that you think will make you cool, but will actually collect dust in the back room of your house because you never spend the time to perfect your cross-fade.

In high school I wrote a booklet about comic collecting and sold it through classified ads. Technically I broke even, but realistically I lost money on the 50+ unpaid hours I spent researching and writing. This was the first business I launched “in the wild,” and I learned a lot about what it takes to market a product in the real world (i.e., to someone other than my classmates).

During college I sold $5,000 worth of comic books on newsgroups and eBay (this was circa 1997, when eBay was still black and white and so slow you had to snipe 40 seconds before the auction ended or your bid wouldn’t hit the servers in time). This business funded my entertainment expenses for two years. I had many Silver Age books that were some of the few copies for sale on the internet at the time.

Continue reading →

The Two Fundamental, No Frills, Square One Rules of Exception Handling

When I was a coding newbie I thought applications should never crash. I wrote code that caught and ignored errors because I didn’t know how else to handle them. I didn’t want the user to see an error page, and figured a running application was always better than an error page. Oh, how wrong I was. On one application alone (not written by me) I wasted 50+ hours over the course of a few months because of exceptions that were caught and not properly handled. Don’t let this happen to you.

I’ve found this mindset to be so common among new developers that I’ve distilled the basics down to two fundamental rules a new developer should follow to the letter. I’m exhausted with cracking open code and seeing a Try/Catch block with no action after the catch. Whether you’re using a language with actual exceptions is beside the point – what matters is that you read through these few simple paragraphs and never, ever obfuscate your application errors.

Picture this (in C#):

Try
{

‘ Application code here
}
Catch
{

‘ Do nothing
}

What happens when an exception is thrown from the application code? Nothing…and that’s a problem.

Continue reading →

New Article: Computer Science Enrollment is Going Down, and Taking Software Jobs With It

From my new article Computer Science Enrollment is Going Down, and Taking Software Jobs With It:

“How many of us would kill to work with ultra-qualified, talented developers instead of whoever we can find that has a pulse and once wrote an Excel macro for a junior high class project? If Computer Science enrollment continues to drop people will eventually get hired, with or without degrees and regardless of how qualified they are, because companies will be desperate. And then we’ll be stuck working with folks who can’t find their text editor with two hands and an issue of Dr. Dobb’s Journal.”

Read the complete article here.

Why Good Developers are Promoted into Unhappiness

I once thought I had traveled a unique career path. Graduating from college with a degree in computer engineering and electrical engineering I was on fire to be a manager. My dad had worked for the same electrical contractor for 30-something years and I knew everyone from the Chairman of the Board down to the woman who worked the front desk. I had a major “in” and was quickly shuffled into a management training program, with my sights set on one day becoming CEO of the $600 million firm.

18 months later I left for a job writing software for a dot com in Sacramento, and within 3 months I was running multiple project teams (albeit, small ones). I was young, it was fast paced, and I loved it.

When that company experienced difficult times in 2001, I transitioned into contracting, which I did for about three years before taking a position as the Application Development and Database Supervisor at the City of Pasadena, directly responsible for the management and supervision of 10 developers and DBAs. The prestige? High. The paycheck? Fat. The job? Hated it.

Continue reading →

Computer Science Enrollment is Going Down, and Taking Software Jobs With It

You’ve heard it before: there’s a massive shortage of IT workers in the US (the stats are a few years old, but pick your number: 600,000, 578,711, or 425,000 excess jobs). Whether you’ve read the articles or experienced it first-hand, there is a noticeable lack of qualified programmers in the U.S. According to the US Department of Labor, 8 of the 10 fastest growing occupations between 2000 and 2010 will be computer related.

With programmers making up the single largest category of IT workers (around 21%), and somewhere around 60% of software developers having a bachelor’s degrees, a good way to increase the supply of domestic software developers would be to enroll more Computer Science (CS) students.

Are you with me so far? CS enrollment up = more programmers in four years. Easy enough.

But this is where it gets grim: the number of students listing Computer Science as their probable major while entering college has dropped 60% over the past 4 years (you can see this graphically on the first page of this document).

Continue reading →

Becoming a Better Developer Part 11: Get a Massage (and Get Your Boss to Pay For it)

This is part of an ongoing series centered on becoming a better software developer. For other posts in the series, see the Becoming a Better Developer heading in the right navigation.

Last Valentine’s Day my wife gave me a gift certificate for a massage. Nearly a year later (obviously a busy one) I finally redeemed it, and had the most productive day I’ve had in a while.

I’m a pretty healthy guy with no medical conditions or injuries, and I only occasionally eat my weight in carne asada. But I have aches and pains just like anyone else who sites in front of a computer all day.

My massage therapist (whom I mistakenly called a masseuse…oops!) gave me quite an education while I was there. She began by asking about my breathing; most people with desk jobs tend to have very shallow breathing while seated. She drew my attention to my breathing as she worked on my neck, chest, rib cage and, oh yes, the back! Anyone out there with neck aches? Rounded shoulders? Pain in wrists & forearms? Yeah, I thought so. You can have the best ergonomic workstation in the world, but our bodies need care to compensate for endless hours in a chair. Massage with an eye towards specific work in these problems areas can go a long way towards longevity in this field.

Continue reading →

Source Control for Micro-ISVs

I perform a good portion of my ASP.NET consulting work as a one-person team. After resuming contract work late last year I was faced with a challenge: get a “real” version control system in place. Of course, anything’s better than FTPing code off-site three times a week.

My big hang-up was set-up and maintenance time. Three years ago I spent 8 hours trying to install and configure CVS before bailing on it and purchasing SourceGear’s Vault, which I had up and running in about 20 minutes. At the time a five user license ran $599, which I consider a decent trade off for 7.5 hours of work.

This time around some things had changed: Vault licenses are $289 apiece which means expanding would be painful on the wallet (when coupled with the cost of bug tracking licenses, development tools, etc… this requires a substantial investment to bring on a new developer). In addition, there’s nothing I hate more than maintaining my own servers. My DSL has gone down once a week for the past few years, so if I had attempted to host it myself anyone trying to hit my servers from the outside world would be cut off until I rebooted my router. And like anyone else who gets busy writing code, I don’t perform backups as often as I should.

In my opinion, as a 1-3 person shop I’m much better off leaving my web, email and FTP hosting to professionals. So I began toying with the idea of hosting my source control off-site. This is a concept that has always set the hairs on the back of my neck at attention, for obvious reasons.

I did a search for “hosted source control” and noticed OrcsWeb has Vault hosting for the full price of a Vault license up front, plus $40 per user per month. Ouch…at that price I’d prefer to do it myself, drawbacks and all. I also found wush.net, who does Subversion hosted source control and has an insane back-up schedule (a back-up after every check-in). As I performed my final pass through of the search results before signing up with wush.net I noticed one of the companies doing Subversion hosting was DreamHost, the company I use for Linux hosting.

I’ve been with DreamHost about 18 months. Their reliability is awesome, and their tech support fabulously knowledgeable and easy to work with. But I never realized that my web hosting account, which I pay $16/month for, includes north of 350GB of storage. That’s approach half a terabyte. And it includes unlimited Subversion repositories. That is nuts!

After a brief email exchange, I learned that while DreamHost doesn’t back-up every 9 seconds like wush, they do keep my data from 1 and 2 hours ago, 1 and 2 days ago, and 1 and 2 weeks ago, and I can see the Subversion files when I FTP into my web server — a shared hosting package, mind you, so I can back them up manually if I want, or write a cron to do it for me.

After installing TortoiseSVN and the Ankh Visual Studio plug-in I was checking in my first project within 20 minutes. A few hours later a developer who’s contracting for me was pulling files down and we were off to the races. No 8 hour install time, no worrying about backups, no downtime, and no additional cost. I’ve been up and running for 4 months now without a hiccup.

As long as I don’t run over my 350GB storage limit I’m sitting pretty. Let’s see…that comes out to about 3.5 billion lines of code…

[tags]source control, subversion, svn, micro-isv, startups[/tags]

SPSS and My Outrageous Software Licensing Experience

My wife is getting her PhD in Psychology, and a few months ago she was in need of a statistics program called SPSS. There are many questionable avenues one could travel to obtain a copy of this software, which costs over $600, but being a developer myself I purchase all of my software legitimately.

I was lucky; I found a used copy of the student version on Amazon for $87. But my wife soon found that it lacked the features necessary to run the stats for her dissertation. So back to Amazon I went, but, unfortunately, the full version was nowhere to be found.

The Sale
After over an hour of searching and three phone calls, I found out that she didn’t need to pay for the full version (which runs $600), because there is something called a “Grad Pack” that would provide her with the full version for right around $200. “Piece of cake,” I thought, “I’ll buy this copy and re-sell the student version on Amazon.” Things were looking better and better by the minute. Until I posted the student version on Amazon.

Continue reading →

Local Job Market Reports from Dice

Dice just released their local job market reports for Q4 2006 for twenty U.S. metro areas. Some highlights:

Baltimore, MD
“We see a need for project managers, senior quality assurance/testers, web developers, and software engineers. Help desk and desktop support work is also starting to come on strong.”

Boston, MA
“…in-demand job titles: business analysts, project managers, developers (JAVA and .net), systems administrators (UNIX, Windows, DBA), systems engineers, network engineers, IT security personnel, and storage consultants.”

Chicago, IL
“[most in-demand are] project managers, developers, network engineers/administrators, SAP, QA, and programmers specializing in .NET, SQL, JAVA, J2EE, and C++.”

Denver, CO
“…the most requested skill sets are .NET developers and Oracle/SQL server DBAs.”

Detroit, MI
“…the most in-demand positions include all levels of consulting and project management, SAP, Oracle, system analysts, and network administrators.”

Hartford, CT
“Who is most in demand? .NET web developers, application developers, business managers, and project managers…”

Los Angeles, CA
“What’s hottest right now? According to MacKinnon, it’s project management and business analyst positions.” (Although my experience is that experienced .NET developers are in huge demand in L.A.)

Silicon Valley, CA
“…heaviest demand for: .NET developers, software developers, business analysts, project managers, QA experts, desktop support experts, data warehousing experts, and interface developers.”

How to Attract Software Developers that Fit Your Company

I’ve worked for startups and stalwarts, small shops and large corporations, firms where software is the means to an end, and firms where it was an end in itself. After years of exploring what I love about building software I’ve realized that coding for a 17-person dot com is a far cry from building enterprise software for a 300-person credit card company. It only took me eight years to figure out why.

There are a myriad of articles on interviewing, evaluating, and hiring software developers, but a topic that’s rarely discussed is how to attract software developers that fit your company’s environment. With the current state of the software job market, it’s critical as a hirer that you determine not only what type of developers will be happy in your environment (your “developer demographic”), but how you can become more attractive to that particular slice of the market.

Your Developer Demographic
As an example, IndyMac and Countrywide are large financial institutions with development offices in Los Angeles. They attract people looking for stable jobs with good benefits where they can code 9 to 5 and then go home and not think about it from 5 to 9. I envy people who do not grow bored with this environment; I really do. Life would be much, much simpler if I could handle it.

There are also tech startups that attract caffeine-junkies. Long hours with potentially large reward, and the prospect of building something really cool in a short amount of time that could make a difference in peoples’ lives. Or, more likely, be relegated to the failed startup scrap heap. These companies should be looking for people who love using new technology, are typically younger, willing to take risks, and willing to shoot from the hip.

These may be extreme cases, but they illustrate the point: certain attitudes and personality traits play nicely with certain environments. Often, a developer who thrives in one environment will find that she slowly withers away in others.

The Three Dimensions
To get more specific, there are three dimensions to a company that most affect the internal environment for a software developer. It’s critical that you know which of these your company falls into, and not only market to, but ensure you can retain developers who fit that demographic. The descriptions of the software developers who like to work at each corporate classification are generalized, but they serve as a guide to get you thinking about the personality of your ideal candidate.

Your company may not match exactly with one of the choices below each dimension, but do your best to categorize it. Many companies start off as one thing and transition to something very different in the first year or two.

 

  1. Size
    • Small – Some small companies are startups, and some are 10-year old, profitable, mature businesses that make money hand over fist with 9 employees. Software developers who like small companies are typically social, they like the vibe of knowing everyone, going to lunch with the same people, and knowing that they contribute a great deal to the success or failure of the enterprise.
    • Large – The bulk of corporate development is for larger companies. They tend to have big teams, lots of process, and decent-sized QA and Change Management teams. Software developers who like large companies tend to enjoy more process, like working on larger teams where they can either lead or be led, and enjoy the possibility for growth that comes with a large organization.
  2. Chaos Level
    • Stable – Stable companies tend to be, um…stable. They have good benefits, and employees can often get away with working 8 or 9 hour days. Developers who prefer stable companies are likely a little further along in their career, may have a family, like the consistency of coming in to the same office each day, and enjoy their time out of the office when they don’t have to think about software.
    • Startup – Startups tend to be more risky with the possibility of more reward. The salary may not be as high as that of a stable company, but the stock options will be worth six-figures if you can get your bleeding-edge online calendar out the door before Google’s. Benefits tend to be spotty. The hours are long, but it’s more than worth it for developers who are passionate about technology (read: bring books about ASP.NET to the beach), love building software that matters, and enjoy the camaraderie of working on a team of people who share their interests.
  3. Focus
    • Software (or a technology that relies on software) - These companies rely on software for their main source of revenue, whether they sell it (Microsoft, Intuit), give it away (Google, Craigslist), or offer it on some type of “pay to play” basis (eBay, salesforce.com). Technology firms that rely on software are companies like Palm, Jenzabar, Apple, or the guys who make the fingerprint readers I keep seeing at data centers. Software may not be their main source of income, but they are technology companies and software is critical to their product. Software developers who prefer these types of companies enjoy being around other software people; they like the idea that technology is at the core of their company, and they love that they work on real products that people use. In addition, they relish the fact that software firms tend to live towards the cutting edge and are able to constantly upgrade their skills to the latest and greatest.
    • Everything Else – These companies make up the majority of companies in the world; their main source of revenue is something other than software – credit cards, lawn furniture – you name it. “Everything else” companies use software to support their business: to track widgets, support their call center, and balance their books. The majority of corporate software jobs are working for companies under this umbrella. Software developers who enjoy this type of company like building applications to support accounting, management, and the people who produce or sell the company’s main product, and they are either very content to know they can go home at night and not think about developing software, or they go home at night and all they think about is they day they can leave the company and work for someone like Google.

Your Company, Your Developer Demographic, Your Job Description
Before writing your job description think hard about where you fall in each of the dimensions. Then think twice as hard about the kind of developer who will be happy at your company. Don’t kid yourself; you can convince the 24 year-old tech hot-shot to work for your financial services company by offering him a huge salary, but he’ll be gone in 9 months because you’re using three-year old technology and developing boring (from his perspective), back-office software.

Once you’ve determined who will be happy at your company, write your job description with that person in mind.

You’re a large company with great benefits? Spell it out in bullet points: plain, simple, and official. Play up your stability.

You’re a small startup with no benefits? Use a casual tone and create excitement. Make that 24-year old hot-shot be dying to work for you.

 

Even if he has to pay for his own health care.

[Digg this]