Saturday, December 8, 2012

Tips for Staying Sane in a Startup

I have been a part of a few startups and startup attempts and this is what I have learned along the way to not lose your mind. This is what I find to help in my humble opinion.

In general it all rests on the premise that a startup is "A Marathon, not a Sprint"

1. Moderation- We all hear about overnight Tech Startups that make it to fame and glory overnight. However that is more of the exception than the rule. Most startups will have to work long and hard to get something that's even remotely presentable to investors. In this case, its important to not lose enthusiasm for the project you are working nor burn out.Whether you are working full time or part time at this startup, make sure if you have other things that occupy your time, fiends, hobbies, a social life, etc... This will relieve stress, keep you grounded, and will refresh you to be able to keep on going. Dont obsess about the startup only, you will in fact stop caring, be depressed, etc....

2. Ups and Downs - Being in a startup is an emotional rollercoaster - one day you have an idea that you think is the best thing since the wheel, the next day the idea sounds silly and trivial and your best developer has just quit. Oh no! Its important to remember that this will happen often so be prepared for the unexpected. But never freak out.  I learned that it comes with the territory and the romance of a startup. Its important to be limber and to adapt. If your lead developer has quit, redefine your scope, figure out why he/she quit, and hire someone else. I believe it builds character. Whatever you do , don't lose heart! Who said anything that was worth it was easy. If startups were easy, then everyone would have their own startup and become the next Mark Zuckerberg. Perseverance means more than talent here.

3. Be Realistic - If you are working full time at your money making job and have other responsibilities such as family and other commitments, be realistic about how much time you can commit. I made this mistake,  however in my case, I tried to fit in volunteering, graduate course, work full time, exercise time commitment, and also a social life. I was able to keep this going for about 2 months before I just snapped one weekend and I didn't want to do anything. Consider this a time management and priority self exercise. Lesson I learned, do only a few things to do them great and give myself room to breathe vs trying to do everything and  do them half-assed and burn out. Ultimately I kept myself to doing my job (obviously), gym, social life, and the startup work.

4.Remember the Goal - Often times it will seem like there is no end in sight. You have been working at this in your spare time for a while now, cancelling on social events, friends, other hobbies, etc... In this situation its easy to lose interest and say "nothing is coming of this", especially when you see Instagram built and sold in 6 months for a billion dollars yet your startup has been going on for years and no tangible results have come from it. Don't lose heart!  Those types of occurrences are exceptions and certainly not the norm. Remember the objective you had when joining or starting this startup. An analogy to this is in school/college when you were studied for an exam it was sometimes difficult and long winded and just plain ol boring. You didnt think you were getting the material or that other students have easily mastered this while you struggled. But what usually happens?  You take the exam, do much better then you expected, and feel (hopefully) a feeling of achievement and accomplishment. Startups are no different - they are a testament to your perseverance. Consider a startup a test of your willingness to forego instant gratification for a better reward and accomplishment later on. I definitely believe its worth it.

Thursday, November 29, 2012

Short Circuit

So lately I have been getting more and more interested in doing more and more DIY projects. I have been so deep in the pure software world for a while i am looking to get into the physical computing domain a bit more.

For anyone that has similar interests, here are some sites that I find helpful:

How to Build a Robot Tutorial - Society of Robots
Arduino - HomePage
Instructables


Still kind of brain storming what I want to make as my first project. Probably a small simple robot to do the basics, like vacuum my floor.

Give me some inspiration - what cool DIY electronics have you built?



Double Checked Locking Singleton Pattern

The Singleton Design Pattern is one of the most used patterns for providing a single instance of an object. It is thought to be made Thread-Safe by having Double-Check Locking eliminate the possibility of having 2 instances of the object made by 2 separate threads. While this is true, it does still allow a possible memory exception. The following paper http://erdani.com/publications/DDJ_Jul_Aug_2004_revised.pdf shows that when looking to use a Singleton, there are alternatives that provide better thread safe protection.




Computer Science vs IT

Most people assume that all "computer people" are all the same. They all do the same work all the same way.  For those that do care to know the difference, the work they do is related and sometimes does overlap but there definitely is a subtle difference.

According to Wikipedia the definitions of each are

(IT)Information Technology -   In a business context, the Information Technology Association of America has defined information technology (IT) as "the study, design, development, application, implementation, support or management of computer-based information systems".[5] 

http://en.wikipedia.org/wiki/Information_technology

(CS)Computer Science - Is the scientific and practical approach to computation and its applications. A computer scientistspecializes in the theory of computation and the design of computational systems

http://en.wikipedia.org/wiki/Computer_science

What this means is that IT is typically geared towards a specific organization and the systems that support it. This includes but is not limited to networking infrastructure, email systems, databases, security systems, application development, data retrieval, and data manipulation.

CS is a more scientific approach to computation in the sense that it works alot more with the mathematical and data algorithms to find the most efficient way to do something. it looks to find novel innovations to computation to achieve new results. This can range from developing a new processor, to devising a new search algorithm, performing simulations. Some sub categories that are part CS is Artificial Intelligence, Computer Architecture, Computer Vision, Robotics, Compilers, and Network Architecture.

Id like to think that for the most part is that IT professionals learn how to best utilize and improve existing Technology while Computer Scientists work on developing new Technology.

Both may require programming so in that capacity they are similar but how, when, and why may differ greatly between the two. Purely Theoretical Computer Scientists may only speak in mathematical notation never really programming.

Both serve specific needs but those needs are very different. So ultimately its pretty inaccurate to lump Electrical Engineers, Computer Scientists, and Information Technology professionals into a single umbrella of IT.