Thursday, March 22, 2007

Interesting article on software development experience

Top ten things ten years of professional software development has taught me

Posted: 17:44

Edit: My old server didn't really have the power to feed all the visitors. This is a static copy of the blog post. Unfortunately, no comments can be accepted.

I was reading this top ten list yesterday, and I thought I can problably come up with my own list of things no-one told me before I started developing software for money. This is my list.

  1. Object orientation is much harder than you think
    Maybe it's just me, but coming from Computer Science class I thought that OO was easy. I mean, how hard can it be to create classes that mimic the real world? It turns out that it's pretty hard. Ten years later, I'm still learning how to model properly. I wish I spent more time reading up on OO and design patterns. Good modeling skills are worth a lot to every development team.
  2. The difficult part of software development is communication
    And that's communication with persons, not socket programming. Now and then you do run into a tricky technical problem, but it's not at all that common. Much more common is misunderstandings between you and the project manager, between you and the customer and finally between you and the other developers. Work on your soft skills.
  3. Learn to say no
    When I started working, I was very eager to please. This meant that I had a hard time saying no to things people asked of me. I worked a lot of overtime, and still didn't finish everything that was asked of me. The result was disappointment from their side, and almost burning out on my part. If you never say no, your yes is worth very little. Commit to what you can handle, and if people keep asking you for more, make it very explicit that this would mean not doing something else. What I did was to have a list of stuff that I needed to do on a piece of paper with me. When someone asked for something, I showed them the list and asked what I should bump to have time to help them. This allowed me to say no in a nice way.
  4. If everything is equally important, then nothing is important
    The business likes to say that all the features are as crucial. They are not. Push back and make them commit. It's easier if you don't force them to pick what to do and what not to do. Instead, let them choose what you should do this week. This will let you produce the stuff that brings value first. If all else goes haywire, at least you've done that.
  5. Don't over-think a problem
    I can spend whole days designing things in front of the white board. That doesn't mean it will be any better, it just means it will be more complicated. I don't mean to say you shouldn't design at all, just that the implementation will quickly show me stuff I didn't think of anyway, so why try to make it perfect? Like Dave Farell says: "The devil is in the details, but exorcism is in implementation, not theory."
  6. Dive really deep into something, but don't get hung up
    Chris and I spent a lot of time getting into the real deep parts of SQL Server. It was great fun and I learned a lot from it, but after some time I realized that knowing that much didn't really help me solve the business' problems. An example: I know that at the table level, SQL Server will not take an IU lock - it will only take a IX lock. This is a performance tweak, since most of the time, the IU lock will have to be escalated into a IX lock anyway. To find this, I spent countless days experimenting, I read loads of material and talked to Microsoft people at conferences. Have I ever had any use of this knowledge. Nope.
  7. Learn about the other parts of the software development machine
    It's really important to be a great developer. But to be a great part of the system that produces software, you need to understand what the rest of the system does. How do the QA people work? What does the project manager do? What drives the business analyst? This knowledge will help you connect with the rest of the people, and will grease interactions with them. Ask the people around you for help in learning more. What books are good? Most people will be flattered that you care, and willingly help you out. A little time on this goes a really long way.
  8. Your colleagues are your best teachers
    A year after I started on my first job, we merged with another company. Suddenly I had a lot of much more talented and experienced people around me. I remember distinctly how this made me feel inferior and stupid. I studied hard, reading book after book but I still didn't catch up. They had too much of an advantage on me, I figured.
    Nowadays, working with great people doesn't make me feel bad at all. I just feel I have the chance of a lifetime to learn. I ask questions and I try really hard to understand how my colleagues come to the conclusions they do. This is why I joined ThoughtWorks. See your peers as an asset, not competition.
  9. It all comes down to working software
    No matter how cool your algorithms are, no matter how brilliant your database schema is, no matter how fabulous your whatever is, if it doesn't scratch the clients' itch, it's not worth anything. Focus on delivering working software, and at the same time prepare to continue delivering software using that code base and you're on the right path.
  10. Some people are assholes
    Most of the time, most of the people around you are great. You learn from them, and they learn from you. Accomplishing something together is a good feeling. Unfortunately, you will probably run into the exceptions. People that because of something or other are plain old mean. Demeaning bosses. Lying colleagues. Stupid, ignorant customers. Don't take this too hard. Try to work around them and do what you can to minimize the pain and effort they cause, but don't blame yourself. As long as you stay honest and do your best, you've done your part.

How To Market Your Web App

Written by Emre Sokullu / March 22, 2007 / 10 comments

So after 1 year of fund-raising, planning and development, your shiny new beta web app is finally ready... and now you think it's marketing time. You want to reach thousands of users as quickly as possible. Aha, you think, the cheapest and shortest path is viral marketing - via blogs and social news sites. So you turn to your favorite sites like digg, del.icio.us, TechCrunch and (of course) Read/WriteWeb. Somehow your email to Michael Arrington or Richard MacManus gets noticed above the hundreds of others, so your site gets featured and then other blog coverage follows! Yippee, this is the fame you were waiting for! But a few days later....absolute silence. No one is talking about you anymore, the activity on your site diminishes to nearly zero, and the new 'poster child' web 2.0 app is something else.

Like a nightmare, isn't it? But unfortunately, this horrible peak-then-slump scenario is very common in the web 2.0 era. The Alexa graph below illustrates this with a well known example, in this case following a TechCrunch write-up:

spotplex

The reasons for this very common pattern are simple to guess. The web 2.0 savvy audience is overloaded with all these fancy new sites that come up everyday; and this audience will try a lot of apps, but not necessarily become a permanent user. That's why you are very vulnerable to get quickly forgotten, if you don't offer them something very useful and enduring.

The upshot is that timing your app/site promotion is very important. Even though popular blogs and news sites are a great way to attract community and VC attention, you should know when to show yourself. Below is a categorization that we suggest all upcomers consider before any marketing push...

The WAIT List

The Wait list consists of sites that should be more patient to market themselves. This is certainly the largest category, with these 2 broad types of web 2.0 sites:

  • Social / User Generated Content Sites
  • Verticals

Social sites need existing user activity before getting promoted. For instance, a social networking site with no members won't be interesting at all. So if you get dugg, sure you'll get thousands of people arriving to check out your social network - and maybe even sign up. But more likely they will be disappointed that not much activity is happening, so they will leave your site with bad memories and may not come back.

In the case of verticals, the problem is more about competition. Rather than immediately publicizing your site, it may be better to focus on differentiating yourself from others and gradually building up a user base.

Also, most of the sites that fall under one (or both) of the above 2 categories require you to sign up first. But generally users will be reluctant to join ghost sites.

The best way of marketing for sites in the WAIT list is to focus on their niches, spend very little and attract targeted masses over time. One example comes from the March 2007 issue of Business 2.0 Magazine. A company called Betty, which sells dye for "the hair down there", spent just $2000 for space in a Las Vegas beauty tradeshow brochure and created enough buzz from that to get featured on the Jay Leno Show. The company expects $1 million in sales this year! Other successful examples are Dogster and Maya's Mom - they are both vertical and user-generated sites and they attracted most of their initial user base from pet and mothers magazines.

The bottom line is that WAIT list sites should find their niche, enlarge their user base there, then come to the web 2.0 savvy audience to show off their force and attract VC attention.

Spotplex, the site shown in the diagram above, is a very good example of a site that should have WAITED.

The WALK List

The walk list includes sites that should start promoting their site on web 2.0 blogs from the beginning. Most of the WALK candidates come from Web Utilities. For example:

  • search engines (unless they're vertical);
  • Instant Messaging mash-ups;
  • Webtops;
  • File hosting agents;
  • Translators;
  • Browser add-ons.

The reason why WALK list members are so different than the previous WAIT list members, is that these sites don't need prior popularity. The site's attractiveness depends solely on the quality of their service. So there's no critical mass of user base required before promoting themselves.

The RUN List

This is the smallest category, with perhaps just tens of sites. The success of these sites depends on web 2.0 media, so they should solely focus on getting themselves featured there. Actually most of them are no different than the WAIT list, except that their niche is web 2.0 itself! Two great examples are BuzzShout and Go2Web2. Obviously, the web 2.0 audience is open to such services, so there's no better place for these sites to get exposure. Blog widgets is another category can be added to the RUN list.

Conclusion

There are three main strategies then, to market your new web app or site:

1) WAIT list sites should find their niche, enlarge their user base there, then come to the web 2.0 savvy audience to show off their force and attract VC attention;

2) WALK list sites, such as search engines and browser add-ons, can go after that elusive digg frontpage or Read/WriteWeb feature now [Ed: preferably both!];

3) RUN list sites should do everything in their power to get attention from web 2.0 sites!

What are your thoughts on this - agree, or do you suggest other strategies?

Thursday, March 15, 2007

The 5 Most Common Mistakes Made By Startups


Ben Yoskovitz | March 15th 2007 - 06:43
Posted in Entrepreneurship, Starting a Business, Business

Entrepreneurs are no strangers to mistakes. Mistakes will happen - with considerable frequency - and the value in making those mistakes is learning from them and avoiding them in the future. You can also study the mistakes of others that came before. Plenty of successful entrepreneurs are quite open about mistakes they’ve made, why they made them and what they learned. We don’t need to keep repeating each other’s mistakes over and over.

But, that’s quite often the case. When it comes to startup mistakes you’ll see many companies making the same ones over and over.

Here are 5 of the most common mistakes made by startups:

  1. Staying in Stealth Mode Too Long. New startups seem quite fond of stealth mode (or its newer cousin “ninja mode”), when they’re hiding under the radar but still hyping just enough to try and pique interest. But stay in stealth mode too long and you run the risk of disappearing off the radar. Never mind the fact that you can’t sell your new product or service while in stealth mode and therefore can’t generate any revenue. There are plenty of reasons why startups launch too slowly; really you need to force yourself to launch and get past all the excuses.
  2. Not Focusing on the User. Who are you building your new product for? Who is the precise target? Many startups can give a generic answer to that question, but very few of them are really honed in on the specific wants of their “perfect user.” This is a combination of too little research and too much enthusiasm for what they think is “the next killer idea.” This mistake is compounded if you’re building something that you wouldn’t use yourself. Building something you would use makes things easier - you’re the target user. Otherwise you need to take a much more pragmatic approach.

    As well, many startups take the approach of “being everything to everyone.” That strategy never works. You end up being nothing to anyone.

  3. Trying To Do Everything. If a task isn’t core to your business try and outsource it. Entrepreneurs are extremely fond of saying they wear many hats (which is true!) but there’s a limit to what’s reasonable in the hat-wearing department. Lots of things can be outsourced, and although you’ll be paying someone else to do the work, you’ll be freeing up precious time of your own. That time will be infinitely more valuable than the money you spend.
  4. Not Having Enough Infrastructure. Many startups don’t have the proper tools in place to start their business. Primarily, money and time. It’s getting cheaper and cheaper to start companies nowadays but it’s never free. Lots of people start companies without realizing how much money it’s actually going to take. When they clue in, and decide they don’t have the money to invest (or they’re not willing to part with it), they’re in trouble.

    Startups face similar challenges with time. People often start companies while working full-time jobs. It’s doable but damn hard. And as soon as the startup gets a bit rocky or other interests come into play, the startup company gets shelved or delayed. Paul Graham comments on this beautifully in The 18 Mistakes That Kill Startups. His theory is that people get into startups half-heartedly and that’s what kills them. I think that’s part of the answer. The other side of that coin is that people truly do care and believe in what they’re doing, but they don’t have the infrastructure and bandwidth in place to make it happen.

    Infrastructure issues are also related to a startup’s lack of connections and resources to find good vendors, good hires, mentors and people to rely on. A couple guys in a garage may have a great idea and tons of talent but when they need help securing a loan or handling a business-related task they may not have the network or foundation in place to support them.

  5. Forgetting About Branding, Marketing and Sales. I know there are examples of companies succeeding with a “build it and they will come” approach. Some people argue if you build something people want they’ll find it and plunk down their hard-earned money. It happens. But more often than not you need to develop real, actionable and savvy branding, marketing and sales strategies. You might have a great product and the wrong message. Or a killer software application that no one knows about. It’s rare to have a startup where the founders (or one of them) has real experience in branding, marketing and sales. The result is either all the founders do it (and often poorly) or they all pass the buck.

    You can take a “build it and they will come” approach and hope for the world to pick up your scent and fall in love with you, or you can figure out how you’ll get the message out, what that message will be and how you’ll generate leads. Go with the latter.

The good news is that almost every mistake can be undone, and it’s rare that one mistake kills a startup completely. So feel free to make them - but skip those listed above…

Friday, March 09, 2007

How to Develop Your IT Skills and Raise Your Standard of Living


by Lindsay O’Connor

“Are you dissatisfied with your career? Do you want to make more money? Well, my friend, I’m about to offer you the opportunity to learn how to make more money and keep your career in the IT industry.”

“I’m about to tell you how to make more money, lose weight, and get the girl or boy of your dreams. That’s right, for two easy payments of $19.95, I can show you how to live a better life, have more energy, be happier, win the lottery, travel the world, discover the meaning of life, find the holy grail…blah blah blah…”

You have heard it all before: infomercial, so-called know-it-alls and “experts” who solicit career and financial advance. They say it can be done with little effort and all you have to do is send them some cash. In turn, they reveal the secret to resolving life’s problems.

The truth is: it ain’t that easy, kid. But it ain’t impossible.

The information technology (IT) field is highly competitive, and it’s only getting worse. As more fresh-faced college kids flood into the employment pool, getting a good paying job has become an up-stream swim. Moreover, as the basic costs of living increase, you’re going to need more income to stay afloat.

Career advancement doesn’t have to be aimless pursuit. By staying on top of your game, you can earn more or make splash in better job-ponds.

To make more money, take a trip down one of four roads: get more education, work freelance, start a business, or look for a new job.

building blocks of education

Get More Education

To an employer, the more you know, the more you are worth ($). In the job market, education is king. To an employer, your educational pursuits indicate that you are both serious and motivated. Moreover, as you learn more, you know more, which makes you that more useful.

Ouch! Yes, it stings a little, but the reality is that career advancement means assuming greater responsibility; you have to know how to do more.

Let’s face it: getting a promotion or earning more money at work is a Darwinian pursuit: only the strongest thrive. You must strive to appear to be the strongest, most useful employee with the most to offer. Learning more and getting more education is a sure-fire way to show that you deserve to drive the herd.

There is a couple easy ways to get more education to appear more “useful” to your employer:

Earn a professional certificate: Professional certification implies that a person is qualified to perform a specific job. Professional certificates are supplemental to a two or four year degree. They help to solidify and intensify a person’s knowledge in a particular field.

For computer-fluent individuals, some useful professional certificates are:

Professional certificates are easy to earn, affordable, and can be completed in a few weeks at an education institution, both online and on-campus.

Take a class: It is important to stay abreast of new technologies as they emerge. Perhaps you need only to learn a few new tricks of your trade.

The key here, however, is to inform your boss you’re taking a class. Your boss or supervisors will then be privy to you increasing your working-knowledge of new technology or business models. In turn, they see you as a much more capable employee, poised for promotion.

man with his money

Find Freelance work

A good money-making method is to work freelance. Freelance IT professionals, web designers, graphic designers, and internet marking gurus are in high demand.

Good resources for finding freelance work in IT are

However, if you go down this route, there advantages and disadvantages:

Pros:

  • You (usually) determine how much you want to get compensated for the work
  • You easily boost your resume with each freelance opportunity
  • You keep 100% of any profit earned

Cons:

  • Quality freelance work can be difficult to find
  • The income stream is not steady
  • Freelance work can be time-consuming if you already work another job

Overall, many graphic designers, web designers, programmers, and other IT-folks are able to make a nice nest of cash while they work other jobs. Some people are even able to work solely freelance and give up their fulltime jobs.

money maze

Start Your Own Business

Starting your own business can be an exciting or exasperating experience; all the hard work and sacrifice can either make or break you.

But don’t let that scare you. Staring a business venture is easier than ever before. Here are some tips on finagling this without driving yourself insane:

Start slow: At all costs, restrain yourself from diving head-long into starting a business. You may still need a steady flow of income while you start your business, as you will most likely not have a lot of business at first. Though you may have a genius business plan for making millions, at least initially, you’re going to need to get your ducks in a row.

Spend a lot of time to get the business ball rolling. Don’t quit your day job yet.

Set obtainable goals: As you formulate a business plan, set some small goals. Focus on making extra-pocket money in addition to your current employment salary.

Take a Break: Don’t burn out. Take some breaks. If you work 40 hours a week already, don’t dedicate 30 more hours to your business. Spend the weekend tweaking your business plan. Spend only a few hours on week nights. Spend your lunch hour making client sale-calls. If you start to feel discouraged, take a breather. Put up your feet and come back to it. In the end, you will be able to keep sustain sanity much longer.

ladder of success

If All Else Fails, Look For a New Job

Sometimes, you need to know when to throw in the towel and look for something else. If you’re stuck in a dead-end job, this may be the time. No matter how much education you have, without an opportunity for advancement, it’s hard to stay motivated.

The IT field is very competitive. The key to landing a better, higher-paying job is standing out from the crowd.

Overhaul Your Resume: Clean up your resume. Re-work, re-word, and re-format your resume.

When re-working and re-wording your resume, remember the following:

You are the best at what you do.
You have a proven track-record of success.
You stand out from the rest.

When re-formatting your resume, clear out the clutter. The following elements should be readily apparent on first glace:

  • Name and Contact Information
  • Summary of relevant skills
  • Previous Employers
  • Job-duties
  • References (two to three)
  • Bonus: Personal website

A personal website is a good way to showcase a portfolio and to shamelessly gloat.

Compose a Killer Cover Letter: Many people forget the importance of a cover letter: it is a formal “Hello, this is why I kick ass.”

Compose a cover letter that is straight forward but commands the attention of the reader. When creating a salutation, use the manager’s name instead of “to whom it may concern,” or “Dear sir or madam.”

When writing the body of your cover letter, remember this is the formal declaration of your awesome-ness. Discuss instances in previous jobs where you have been an innovator or problem solver. Many employers want to hire a sharp, forward-thinker. Other tips:

  • Keep it brief! Two pages are too much. Wrap it up in a single page.
  • Spell-check.
  • Grammar-check.
  • Keep it Simple Stupid! Straight forward always wins over flowery language.
  • Be grateful. Thank the person for taking the time to read your cover letter. They probably have to read hundreds. Don’t be another blip on the radar.

Landing the interview

So, you’ve gotten the call to come in and show them your face. Take a shower; wear nice shoes, put on a smile. You get but one (maybe two) shot at face-time.

During the interview the inevitable question is always, “why are you leaving your current job?” Be honest…but not that honest. The last thing an employer wants to hear is that you are on the hunt for a bigger-pay-day. Tell them you are looking for “career advancement.” You want a challenge; you are looking for a more rewarding career. Never say you want to make more money. They already know that, what else can you tell them?

Employers want to know that you’ve got staying power and that you won’t jump ship if you get passed over for a raise. They want to know if you have the ability to rise to challenges and deliver the goods. Most importantly, they want to know if you are worth the salary.

Keep Your Eye on the Prize: While looking for a new job, you may be enticed by a job that is closer to where you live or one with a hip or cool environment.

Be advised that if you are looking to make more money, you are going to have to compromise a bit. If you accept a position that offers a lower salary than what you are looking for, eventually, you are going to have the same financial frustrations you previously worked to resolve.

Essentially, the key is finding a job that offers upward mobility. A little hard work and face-time with the boss will get you to where you want to be.

“Now is the time to make more money and be happier with your career. You can do it, and I guarantee that you too can be on the road to riches.” And if not, in the very least, you will have learned more and done more than the rest of the computer-nerd herd