Category: Software Principles & Practice

How to be A Team-player in an Agile Team, Part 1

by Frances Advincula

The  last few days was my first foray into the agile practice of the planning game, wherein stakeholders, programmers, and the rest of the team go in a room and brainstorm, think, talk, and fight in order to come up with what we are actually going to build. It was really mind opening to just see how the dynamics work — the software architects and programmers tend to really have lots to say, because, well they’re the ones going to build the software. On the other hand, it was also interesting to see how the QA and the documentation team asked a lot of questions, and usually ones that customers will most likely be asking. It really reinforced me once again how great debate and teamwork ultimately leads to a better product.

Seeing the value of a synergistic team, I thought I would expound on my previous article on how to work more effectively with your team by interviewing a technical writer and a scrum master (who we will keep anonymous for this post).  Our technical writer Bonnie Doyle Chase has worked various documentation and product management positions. Follow her grammatically correct tweets at @bonniedchase.)

 

 

 

 

On the Value of Documentation

Let’s start with appreciating the work of the technical writer on your team.  I think it would help us, as developers, to know where they are coming from, so that we can work more productively with them. 

I know sometimes developers tend to brush off doc as “just doc”. What do you have to say about that?

We hear the myth time and again, “no one cares about documentation.” I brush these comments off because as I see it, no one knows they care about documentation.  I believe this stigma comes from the amount of bad documentation people have been exposed to in the past. They didn’t have good technical communicators writing quality documentation.  And there are still writers out there perpetuating this myth through bad documentation. However, there is a new generation of technical communicators out there who I like to call Docvocates. They are the ones who are actively working on eliminating this myth by producing quality work and speaking out about what we really do. I hope we can change the way people view doc, but it may take a while. These are what I view as the top three benefits of good documentation: 

    • Eases cognitive friction
    • Improves the chances of product success
    • Reduces the number of support tickets 

The proof is in the metrics. The thousands of visits we get to our documentation site, the emails we receive from customers asking for more information on a product or process, and the research completed in the field all point to the value of documentation. A lesson I’ve learned in my field (which could apply to many others) is this: Know your value, even when others do not. People read documentation; they just don’t like to admit it.

Is there anything you wish developers knew about documentation?

Technical writers don’t want to be developers. I make this statement because if you look at the history of technical communication, the initial writers were developers and engineers. It wasn’t something that people went to school for, and it wasn’t necessarily something many developers and engineers wanted to do. Sure, that is still the case in some companies that are behind the times, but for the most part, technical communication is recognized as its own profession and academic program. The field has made tremendous strides over the last decade and will continue to do so in the coming years. And it’s not just about writing. For a lot of technical communicators, writing is only 10% of what they do. They are information architects, document and web designers, content strategists, and usability specialists.  Technical writers need developers for their subject-matter expertise, and developers need technical writers to bridge the gap with their users. While they don’t want to be developers, there is a relationship there that will always remain and should be fostered.

If developers could do just one thing to improve the process/help you perform your job better, what would it be?

Give technical writers time. Whether they need more information about issues to write release notes, or information about functionality to write the doc, take some time to answer questions. Doc teams obtain the technical information from developers and turn it into something understandable for the user. The longer developers take to respond, the shorter the time writers have to do their jobs. That timeline impacts the quality of the work, and it impacts how users view the product.

In your opinion, do you think doc has a place in startups?

Yes. Sam Carpenter will do a much better job of telling you why: Why Startups Need Documentation.

 

On the Value of Project Management

I also just started my masters at Johns Hopkins, and I’m taking a class in project management. Let me tell you — I have never appreciated my managers more! Between responding to request for proposals, creating work breakdown structures, really, my head just spun! With that in mind, let’s see how we can cooperate better with our managers (I noticed we developers sometimes can be quite anti-management.), which will ultimately help make the team more successful. 

Is there anything you wish developers knew about your job?

I do wish that developers understood the importance of project tasks that don’t include coding.  Most developers are good with this, but some don’t understand the importance of things other than coding.  I know things like time tracking are not that exciting, but accurate time tracking is extremely important as far a project reporting goes. Which eventually rolls all the way up to asking for more funding next year to increase the team size (or to keep it the same) so that we can continue to deliver great code.  It’s not enough to deliver great code. It must be on time and on budget as well.

If developers could do just one thing to improve the process/help you perform your job better, what would it be?

Communication, some developers get offended when you ask them what they are working on or when they will be done. Estimates are hard to give, and I understand that, but we also have to give them. We can handle it when we are wrong with things such as change control but often developers hate to be tied to do a time estimate. 

Is there anything you wish they would stop doing? 

For the most part I have always worked with great developers. One thing that is hard for them to do is to deliver code that is good enough.  We should always strive for great code, but you can spend too much time tweaking code. With us trying to hit market demand we must be agile and fast. In no way should we ship bad code. Sometimes though we need to ship good code… not excellent code. This is a very hard line to decide what is good enough.  It’s very hard to tell developers that as well.

Also, I know that QA and documentation are not developers’ favorite thing to do, but they are necessary evils and it makes my job easier when developers just do what they need to do instead of belly ache about it. :)

 

I hope you have learned something from these interviews as I have. I know I am very guilty about some of these sins! I especially hate giving estimates, but like the interviews said, we must all do our part to ensure that the team succeeds as a whole.

One more thing, although I am very disappointed that Femgineer wasn’t mentioned, here is a goodie-bag for your women-in-tech resources fix. Happy weekend, Everyone!

 

Frances Advincula writes the series Frances Fridays. Frances recently graduated with a degree in Computer Science with specialization in Software Engineering. She now works as a Software Developer for Accenture (Software). A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.

 

 

 

Enhanced by Zemanta

Post to Twitter Tweet This Post

Learning JavaScript: Resources for Future JS Ninjas

 If it is possible to make yourself into a great hacker, the way to do it may be to make the following deal with yourself: you never have to work on boring projects (unless your family will starve otherwise), and in return, you’ll never allow yourself to do a half-assed job.  - Paul Graham

Inspired by the quote above, this year, I chose to focus on my front-end development skills because that is the work I find myself enjoying the most. In a sort of masochistic way, I even enjoy the tug-of-war that sometimes happens between the UX group and the engineering group. I just love the idea of helping solve people’s problems in the most obvious, direct — and beautiful — way possible!

Let’s start with JavaScript this week, shall we? I made the following roundup as a sort of to-do list for myself, but I hope you find them useful as well. If you have more to share, feel free to comment, and I’ll add it to the list. Happy Friday, and happy coding!

 

Videos and Talks

Sometimes, the last thing you want to do after a long day of coding is code some more. Fear not! Adyy Osmani has got us covered.

Talks To Help You Become A Better Front-End Engineer In 2013. The massive collection has a lot on JavaScript including the future of the language, design patterns, architecture, localization, etc.

Need some more? 8 Hours Of The Top 10 JavaScript Talks From 2010 That You Can’t Miss

 

 Books 

If you’ve been reading my posts, you know I like to list books I want to read eventually. I’ve been doing pretty good this holiday season, reading books family and friends gave me for Christmas (I’m such a nerd!).

JavaScript: The Good Parts. I’m reading this at the moment, and I love how condensed and packed this little book is. I especially love the appendices on the bad parts and the awful parts of Javascript. It’s pretty much a “don’t use this” list that will instantaneously make you a better programmer. Bonus: The author’s blog is also a treasure chest of anything JS-related. Be sure to check out the videos –especially JavaScript: The Good Parts, given at Google.

A few others a friend recommended are JavaScript: The Definitive Guide and Secrets of the JavaScript Ninja.

If you’ve also fallen in love with Adyy Osmani’s blog (and as a result, started stalking his genius in the world of social media), you might like his recommendation list of JavaScript books to read. He also has free ebooks and even more presentations available in his blog, but don’t mist his audio course on the fundamentals.

 

Blogs

If your JS craving is still not satisfied, here are a few more blogs for your enjoyment.

A list of 31 JS blogs from Stack Overflow

More suggestions from Quora

 

Other Great Articles

5 APIs that will transform the Web in 2013 Find out what’s new in the new version of JS (of course, I should probably call it by its proper name, ECMAScript).

A Sudden Move: One developer’s journey from C# to JavaScript

 

Unit Testing

Extensive Comparisons of Assertion Frameworks: BDD style vs xUnit style

Mock Type Tools: Comparison of mocking frameworks

If you are using ExtJs, Ext Spec is made specifically to mock with that library.

Bonus: a plug-in to run your tests in Visual Studio: Chutzpah

 

JavaScript Frameworks and Libraries

I love roundups within roundups! Enjoy!

A very extensive guide on the background of MVC frameworks and how to pick the one that will fit your needs the best by Addy Osmani (of course!)

The Big Glossary of Open Source JavaScript and Web Frameworks with Cool Names by Scott Hanselman

 

Tools, Etc.

Chirpy: Minify your javascript.

JsFiddle: Play around whatever framework of your choice fast!

JS cheat sheet 

JSLint and JSHint: Find out potential problem spots in your code.

 

Frances Advincula writes the series Frances Fridays.  Frances recently graduated with a degree in Computer Science with specialization in Software Engineering, she now works as a Software Developer for Accenture (Software).  A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.

Enhanced by Zemanta

Post to Twitter Tweet This Post

My Deep Dive into the World of Front-end Development

By Frances Advincula

When I was young, I wanted to be a fashion designer. But then I grew up and realized I actually have to be able to eat food and pay rent, so I became a software engineer instead.

Frances Advincula's Deep Dive into the World of Front-end Development

Fast forward a few years, and here I was, I thought, forever un-creative in that sense (I, too, rally that programming is in fact, an art. So that sense.)  Until now.  I’m not really sure what happened, but it seems like all of a sudden, I became super interested in the intersection of user experience and programming. I admit, I was always a bit scared to be a “designer”…Photoshop makes me nervous! But that little spot where UX meets code? Yeah, right now, that’s my heaven.

In case you’re interested in it too, here’s a roundup of things I’ve been playing with. If you have any other golden gems that you’ve come across, share them in the comments, and I’d be forever grateful!

On Designing Pretty Things

This great post in Quora lists must-read sites and books, from the classic Don’t Make Me Think to a myriad of other books. Personally, I’m currently reading Designing the Obvious, and it’s a great introduction to the fundamentals of UX.  Also, here’s Joel Spolsky’s book which he posted on his blog, which of course, has great list of articles for software designers.

Besides the obvious Smashing Magazine, here’s what I’ve been sponging on.
A List Apart
UX Movement‘s list of UI pattern libraries

On Building the Pretty Things

ExtJs
Sencha ExtJs is a JavaScript framework that lets you build rich browser applications. (Sencha also has Sencha touch for making mobile apps, and popular ones include Kiva’s.) I’m dabbling with ExtJs 4, for desktop apps, and it’s been wonderful so far. Some don’t like ExtJs (and in turn rave about jQuery, but I haven’t really done jQuery, so I can’t compare.) due to claims that their API documentation is lacking and it’s hard to debug (it can be), but I have no major complaints at present. Also, I really like how ExtJs 4 is applying MVC, which I’ve found is a bit like Paris Hilton — you either hate it or you don’t.

The API can be daunting, so here is what you must know in the order that I found most helpful.
Obviously, start with Getting Started, but in Guides, this is what made the most sense to me:
Read up on the things under “Concepts.”
After you tackle “The MVC Application Architecture”, hop on to “The Data Package” which explains models and stores in depth, and then go read the 3-part series “Architecting your App” under “Tutorials”.

The articles under “Components” is good too; it should be enough to allow you to be confident in searching through the API. The video library aslo has great ones on debugging and theming your app.

Finally, here is a demo for the different types of layouts that you might find useful.

Unit Testing Your JavaScript


As you all know, I’m a big aficionado of unit testing, and ExtJs officially uses the Jasmine BDD framework. I had to do some UI unit testing research way back when I was an intern which obviously I cannot share, but I did run across this site that does a pretty good job of comparing the different testing paradigms and frameworks available.

A rundown and comparison of different javascript unit testing frameworks (xUnit style vs. BDD)
“Choosing a JavaScript Testing Framework”

Twitter Bootstrap
I took an hour intro class in this back in undergrad, and that’s all it took to fall in love with this front-end framework of javascript and LESS CSS. I loved how it’s easy to learn,  and that anyone could actually making beautiful looking sites without having a degree in Graphic Design.

Appcelerator


What if I told you that you could code once and have apps that would run on Android, and iOS. Pretty cool, huh? Beloved Reader, meet Appcelerator. It allows you to code (using JavaScript) once and deploy in all mobile platforms, with just minor tweaks for the UI — a huge advantage over  separately coding for iOS, Android, Symbian, etc.

I can’t stop raving at how cool this is! I mean, even the company’s motto is “Code strong.” How can you not fall in love?

If you’re curious about Appcelerator, here’s a few links:
Zero to App, a series of videos to get you up and running!
Quick Start Guide, learn the fundamentals of the platform
Building Native Mobile Applications, a comprehensive video series to get you into the “rockstar mobile dev” status!
Titanium Development, a newsletter than rounds up news and blogposts on the topic.

Frances Advincula Software EngineerFrances just graduated with a degree in Computer Science with specialization in Software Engineering. She works as a Software Developer for Accenture Software. She also contributes toThe Levo LeagueWomen 2.0, and STEMinist.  A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.

Enhanced by Zemanta

Post to Twitter Tweet This Post

Golden Nuggets from Programming Gurus

In my last article, I wrote about lessons I learned as a young woman in my first engineering job fresh from undergrad. I thought this week, why not write about things I learned from the exact opposite of that — golden nuggets from programmer friends who have been in the industry for a while. Now, these are just tidbits that stuck to me during Friday night dates, or in conversations at lunch, even over gossip sessions via Skype, but I thought I’d share them anyway. However, be warned: proceed with caution and take at your own risk.

Always assume what the person is telling you about the code is wrong.

Don’t be afraid to ask questions and explore other possible solutions, even if someone more senior than you has pointed you down a path already. Getting a second opinion never hurt anyone, but depending on your company’s culture, be careful about how you approach this. (See the advice on humility below.) Plus, this is where we see a value to being new: you are not familiar with what’s in the box, so you are more apt to think outside of the box and come up with a better solution others may not have thought of.

Also, it’s your name that’s going to show up in the commit logs, so again, always triple check. Ask for a code review and ask multiple people for feedback before you commit anything.

Get Mad.

One of my friends had a less than desirable experience once; upon being hired, he was handed his laptop and pretty much just left alone in a corner without any direction, which is very overwhelming in any new job, programming or otherwise. Well, he got, I quote “really pissed,” and he went home that night driven to learn the code base. A year later, he was promoted to a role usually saved for people with at least 2-3 years experience. The lesson? Find your motivator, whether it’s anger, frustration, some unworked childhood insecurity, whatever, and channel it into making you work harder and with more focus.

Don’t let your ego get in the way.

I’ve heard it so many times among my more experienced friends that the people who thrive as programmers are those who are humble. Why, you may ask. I suspect it is because they aren’t afraid to look stupid so they ask questions everyone else is thinking of, but are uncomfortable to ask. I am almost sure it is because they are okay with making mistakes since they know they’ll learn from them. They are not afraid to learn from others, and they could care less about who gets the recognition, so they get stuff done.

From “How Will You Measure Your Life?” :

“And if your attitude is that only smarter people have something to teach you, your learning opportunities will be very limited. But if you have a humble eagerness to learn something from everybody, your learning opportunities will be unlimited. “

In that note, someone pointed out to me that being humble is not thinking less of yourself, but thinking less about yourself. This is something that I struggle with, I admit. Sometimes, I don’t feel comfortable asking for help because, well, I want to look like I know what I’m doing. I should really take my own advice and realize that it’s not about me, it’s about getting stuff done!

Carry your confidence card around.

On a more positive note, another one of my friends was a bit insecure when he first started working professionally. The other guys were sympathetic and tried to encourage him by letting him borrow their Microsoft certification cards. Of course, he’s now doing just swell, which leads me to wonder if there, is in fact, real value to “Fake it ’til you make it.” I’m not a certified in any shape or form, so I’m thinking of writing down my accomplishments in a little index card and carry it around with me in case of emergencies (You know, when you’ve been stuck on a problem for day #2 now, and code cutoff is tomorrow…). Or maybe that’s being too mushy. What do you guys think? Do you have anything you carry around to boost your confidence in yourself as a developer?

Oh, but one last thing. Some say we learn best by example, and I’m fortunate enough to work with really smart, rockstar engineers, and here is one thing all of them have in common:

They always leave the code cleaner than they found it. We all should too.

Frances just graduated with a degree in Computer Science with specialization in Software Engineering. She works as a Software Developer for Accenture Software. She also contributes toThe Levo LeagueWomen 2.0, and STEMinist.  A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.

Post to Twitter Tweet This Post

Growing Pains? Try Retooling.

Growth is fun and exciting in a startup, but it can also be just a little painful and scary.

Its scary because people can’t anticipate problems that arise from growth such as having customers, supporting them, answering their requests, and fixing the issues they experience with your product.  Or adding employees, training them, educating them on the vision of the company, keeping them motivated and collaborating with each other.  And then there’s the product itself!  More customers are using it, and generating data which leads to a less than awesome experience for your customers.

This isn’t the time to feel overwhelmed.  Its the time to pat yourself on the back: you found product market fit and you’ve recruited some stellar people to help you out!

Now you’ll need to change some processes to handle the growth which can be the painful part.  Its easy to throw money at the problem, but lets just say you you may or may not have access to a seemingly bottomless pit of cash.

Figure out what you need not what you want.

It all comes back to milestones.  Where do you want to be in 3 months, 6 months, and 1 year?  You don’t need to have definitive growth numbers for your startup but you need to put things in perspective.  Lets say you’re shopping around for a customer support ticketing system, and right now your growth is fairly predictable and manageable by a single human being and possibly part time.  In that case don’t buy something that’s going to cost more than what a single customer is paying you monthly.  You might even be fine  doing support via email and phone, and it will probably aid in your customer development process to have someone listening for feedback.  If your customer support person starts to get inundated then its the time to look into a system to organized.

Start shopping for products when you want to cut down on human labor costs that are quantifiable by time and money.  The people you hire are smart, so invest in their productivity and happiness, and don’t let them become drones by having them do repetitive mundane tasks that aren’t advancing themselves or the company.

Building vs. buying?

You’ve isolated a few areas in which you need to put a new tool in place or replace an old one.  As engineers running a company its easy to say: “Oh I’ll just build it!”  Wrong answer.  Yes it might be super easy for you to whip something up, but who’s going to test that new tool, maintain the code base, and add on to it?  If its you great!  You now have a new department: internal tools.  Oh you’re small… well then you just cut down on product development.

Save yourself some keystrokes and shop around for products instead.  As I mentioned before, if you identified your needs then it becomes easier to tell people what you want and to shop around for it.  Yes there are times when you might not find what you’re looking for, and it might make sense to build it in house if its cost effective (cost == time + money).  If you find a product that satisfies 70-80% of your needs and is within your budget buy it!

When I was working at Mint I had the painful task of searching for an email provider to handle all the outbound emails we were sending.  Integration was a nightmare especially given the products that were in the market at the time.  Had I taken a little more time to do research I would have found MailChimp and been happier.  Live and learn.

Fortunately I did learn, a different lesson while working there, put off managed hosting for as long as possible.  Which is why  when I started BizeeBee I went with Heroku.  Could I have written deploy scripts, and the add-ons that they offer on my own?  Sure, in fact I wrote some of them at Mint (sms and email messaging, performance monitoring, etc) in Java!  But going with a solution like Heroku for less than $100 a month gave me the freedom to build, iterate, and launch BizeeBee all in the same year!  Did I mention $100 is also less than the going rate of a developer pretty much anywhere.

How long will the solution last?

Remember the title of this article is retooling.  If your startup is on a growth trajectory it will outgrow tools, and you’ll need to refine processes.  Get comfortable with it.  They key is to identify when you’ve outgrown a product or anticipate when you will.

Sometimes you can live with a less than perfect solution for awhile, especially if its cheaper than the alternative in terms of setup and maintenance.  Just acknowledge the limitations, and prepare to fix them if they cut into progress.  For example, at BizeeBee we have a customer support tool that I built.  Its not perfect,  it drags the system down a little when we run large queries, but we’re operating with limited resources.  I’ve optimized the queries once they really start to impact application performance, but I haven’t yet setup a dedicated database, and optimized the heck out of it, because I have other priorities.  I’ll throw resources at it when it start to cost us customers and time, or isn’t serving its purpose.

ROI

Retooling is not a cost.  Its a cost if you do it prematurely.  If you do it when you absolutely need to or when you anticipate a need arising then it can actually be aid in the growth of the company.  Once again figure out what you need.  Do you need to grow your user base?  Do you need to keep your customer happy?  Do you need to get paid on time?  Do you need your employees to be happy and productive?  Those should translate to what you’re looking for in a solution.

Retooling isn’t just about finding the right tool, its also about finding the tool that will help you you meet your next milestones, and once you reach them you’ll need to retool again.  Happy retooling! :D

Post to Twitter Tweet This Post

Deploy 2010: 3′S to a Successful Launch

I’ll be speaking at Deploy hosted by Seattle 2.0 on November 8, 2010.  Building upon a couple of my blog posts (Pre-Launch and Post-Launch) I will be speaking on the engineering execution for a successful Launch.  Here is an outline of the topics I will cover.

1. Stability

  • Security: store and retrieve hashed password, encrypt sensitive information, field validation through JS, Ruby, Java, and DB constraints
  • Bugs: prioritize mission critical vs. look and feel
  • Background Processes: nightly cron jobs, data imports
  • Browser Interoperability Issues: IE Hacks, Litmus

2. Scale

  • Identify bottlenecks through performance testing: JMeter, New Relic, profilers
  • Front-End Optimizations: JS compression, sprite images, measure page load and rendering times
  • Back-End Optimizations: index database tables, avoid costly joins, identify “growth tables”, lazy loading and load fewer columns, caching, process data via db instead of loading into business logic
  • User Experience: design around slow processes

3. Support

  • Logging
  • Error Messages and Error Handling
  • Debugging Tools: scripts for redundant queries, DB admin

Post to Twitter Tweet This Post

Post-Launch Prep

This is a follow-up to my prior post Pre-Launch Prep.  First, pat yourself on the back for making it through the launch!  Now let’s focus on next steps.  The product team’s job is to create and design features that will keep users engaged, and engineering team’s job is to make users happy.  Happiness == (bug free  && accurate data && responsive site).

 

1. Squash big bugs first!

Grep the logs and count the number of Exceptions or Errors then have it!  Best to create a nightly script to tally up Exceptions and Errors so that you don’t have to type the same grep command everyday.  You also want to check the user forums for discussions on bugs and talk to customer service representatives.  But before you begin doing a big fix make sure that the bug impacts a majority and not a vocal minority.

2. Get down and dirty with data.

 

Depending your product you might have data accuracy issues.  The easiest first step is to hit the production db and make sure the data that is being pulled in is correct.  If it is then you know there’s an issue farther upstream i.e. business logic or rendering.  If the db is wrong then you’ve got an issue with storing data, which could be caused by a broken link somewhere in the front to back-end flow.

3. Prioritize performance.

Everyone is always touting the vices of premature performance optimizations, which is a valid point, especially in a startup where you are resource and time constrained. You don’t need to optimize from the start, but you do want to build infrastructure to measure your site’s performance.  Performance is both a front and back-end issue.

  • Front-End: your page load time is abominable because you’ve got lots of graphics that haven’t been sprited, have browser interoperability issues, or network latency sucks because your user bought the cheapest DSL package…
  • Back-End: sure you’re using ajax on the front-end, but if each request is hitting the db and you’re pulling in thousands of records no point in being asynchronous…

Figure out where your bottlenecks are, and then tune it up!

Enhanced by Zemanta

Post to Twitter Tweet This Post

Pre-Launch Prep

I’ve been advising a few pre-launch startups that are getting ready to do their first ever product launch.  From first-hand experience I know that the first product launch can be nerve-wrecking.  You expect the product to be pixel perfect, and all the features to be fully functional and bug-free.  But there is such a thing as spending too much time on perfecting the product, and forgetting that you need to be able to support load on the system.  What good is a shiny product that people can’t even sign up for because a server has gone down, or their signup process takes on the order of minutes or hours!

Here are a few tips I’ve been giving people to help alleviate their pre-launch preoccupations:

  1. Logging.  For good developers this should be a no-brainer, because they would havetested or debugged their code and would have included logging to do so.  For Java I use log4J, Ruby has its own class Logger.  You also want to make sure you are rotating the logs daily.
  2. Keep an eye on Exception and Errors. Once you’ve got your logging in place create a simple shell script to grep the logs and tally up errors and exceptions.  You can set this up in cron to delivery the logs to your email every hour or day.
  3. Fix Showstoppers. These are bugs that prevent a user from signing up, or are glaringly obvious and create a negative and lasting impression on new users.
  4. Monitor Your Servers. Tools like Nagios or Ganglia.
  5. Monitor the drop off points. There are typically three: coming to the site, sign-up, and then performing the first action (depending on your product’s features).  To do this you will need Google Analytics.
  6. Load Test. Test the limits of your system so that you know how much load it can handle.  JMeter is a good tool to use to do this.
  7. Load Balancer. If you are responsible for your servers then I’d highly recommend doing this.  Check out this intro lesson on load balancing.

Hold off on all new feature requests!  First impressions count for a lot, and whats more important than being feature rich is being able to have a site up and running.  What good are more features if users can’t even get through your front door!  Focus on supporting the new and incoming users and giving them a worthwhile and timely experience.  Stay tuned for a follow-up on what to do the morning after…

Enhanced by Zemanta

Post to Twitter Tweet This Post

Femgineer Goals for 2010

Every year I make the usual new year’s  resolutions to be healthier, friendlier, calmer, cheaper, smarter, and so forth.  But, I don’t actually set goals for how I want to become a better developer!  So I decided that I’d put together a list of skills I want to have, and goals I want to accomplish by the end of 2010.

I’m also going to post the best tutorials and troubleshooting tactics I come across while meeting my goals.

1. Learn Ruby on Rails

2. Learn Objective-C and Create an iPhone app

3. Learn Adobe Air

4. Read 3 books on software architecture

5. Attend at least 1 developer conference

Enhanced by Zemanta

Post to Twitter Tweet This Post

When to Build and When to Buy

I have posted the presentation I gave today at Code Camp here.  Hope you enjoyed it, and please feel free to email me feedback!

Enhanced by Zemanta

Post to Twitter Tweet This Post