Saturday, March 16, 2013

Business and success

This is not a tutorial but it's one of those things university professors neglect to tell future businessmen. Professors are professors - they will teach you about business, economy, market, and management - all valuable and helpful but not nearly enough. Don't kid yourselves - getting a degree at a university doesn't automatically make you an expert or a businessmen or what have you. It's a good place to start your journey and get some insight. Nobody can teach you about starting a successful business - because everybody is not you. You need guts to do it, sometimes you need luck and to be in the right place at the right time, you need resources and to be resourceful at finding those. You will need money (regardless of what you're doing, trust me you will need it). And you need an idea or a solution to a problem. And you need humility - you need to recognize the fact that you may not be the best in the world and you won't get things done, well, just because it's you and you believe you're awesome. So lose the sense of entitlement if you have it, and let's talk about where is a good place to start a successful company.

Idea

 
First of, think about how many other companies there are out there doing the exact same thing as you. And I mean really think of them - some are very established with years of experience and excellent experts - they are renowned and trusted by the customers. People don't have to give it a chance - they know that if they pay an X amount of money they will get what they bargained for. You, as a starting company have to work hard to convince those people to come to you instead. So, you must offer something special, something that others don't have. And for the most part "oh we do the same thing as all those other companies do, just better and/or cheaper" is not the answer. That's good if you already have a name and some clientele.

A smaller example of it is a blog - you can have the best design and awesome development behind it but if the content or the idea is bad people won't go there. Same with computer games - bad graphics are more excusable if the content is good. Same with apps, programs, websites. You need to have a good solid idea behind all that. And that isn't going to be that easy.

Sometimes a good idea is a new solution to existing problem - something revolutionary and innovative. So, start looking for a problem that people face. There can be a number of solutions to it but none of them are good enough. Take a look at it from a different angle, think outside the box.

Research


Alright, now say you have a great idea, or a fresh solution to a problem. Next step? Get a reality check. Is it doable? Do you see a way of doing it? Talk to some experts on the field, do some research, find out if anybody else has already figured it out, know your competition. If experts say 'yay', and get all excited about it, then you're on the right track. Now think about time. How long will it take to turn your idea into reality? Maybe by the time it gets done nobody will care about it? If that's the case either find a way of getting it done faster or maybe let it go and think of something else.

Research should never stop - you need to be up to date on what's out there, on the tools you're using, on people you have, competition, reviews, market, economy. And most importantly always look for ways of bettering your product or idea. Don't immediately throw everything out the window though - stay on the track and just know what could be done to better but take into consideration your resources and clients. Just know about possibilities and paths you can take, think, and decide whether or not to take them.

Implementation


Implementation of the idea is very important. Think about who is going to use it, who it's for. You can't please everybody. But if 790 customers out of 800 love it, you're doing great. Focus on them, Don't focus on the 10 that hate it.

During the development phase you will be constantly faced with making decisions of what's important and what to sacrifice. It will be easier when you know who your clients will be. One important thing to remember though is it's better to deliver something quick and let people use it and THEN add features and better it, rather than releasing something perfect 5 years after you had the idea. However, when you release the first version, you need to have the key elements in place. You need to recognize what is key and what's a "I would love to have that added!"

Team

Think of who do you need for getting this done. And who you need to put a focus on. Something heavy with graphics? Get more designers. Something complicated and functional? More developers. And when you have your main people on the team talk to them, ask them for opinions and thoughts. However, don't immediately change everything because so-and-so said it was a good idea. Just think about it and make a decision.

Also, if it's something specific get a couple (or one) experts on the field - somebody from your potential clients who will be using your product and knows about the industry where your product belongs (as in doctors, teachers, etc). Alternatively you can have one of your people go study the industry - and it will be important to have somebody who both knows the industry and is directly responsible for creation of the product - but don't overdo with this. If it's a programmer then they better spend most of their time programming and not learning about how to breed fish (it's an example :) ).

Marketing


Once you have your shiny finished product you can start marketing it. A lot of people start marketing when they just have an idea. Talk is cheap - everybody is bursting with ideas. It's difficult to sell it though. It's like a designer with no portfolio trying to convince you that they are the best and the right person for the job.

What I'm saying is when you start marketing, you need to have something done - and not just a pretty picture of what it could be. A very basic product - but product that works.

And your marketing should be aimed for finding at least one client that will love the product, buy it, use it, tell everybody else about how great it is. Aim for that. Go door to door if you have to. Marketing can be very expensive and you need to have some income before you can start spending. Start small. Find clients. If you have a product that's great for certain people you have to find them and tell them about it, rather than trying to tell the whole world about your product and hoping that your clients will find you.

Extra mile


Say you have a company that seems to be on the successful track and is growing. Are you growing with it? Or did you stop somewhere and decided that everything is good you should just sit back and let it be and collect the profit? The chances are that's when things will start falling apart. If you are the businessman, the owner, the one with the idea then it all depends on you in the end - not on the marketing people, not on experts. Nothing in life stays the same - everything changes and your company will need to adapt to various outside factors. And since you're the one responsible for your company you need to be aware of those factors and watch them and know what's coming or at least try. Update your tools, make sure your experts didn't get rusty and follow up on their field. Go to start up business conferences, look around, see what others are doing, what new things are out there and so on. Stay on top of things!

 

Monday, March 4, 2013

Web-servers and database set ups

This is not going to be an in-depth post for advanced folks. Rather, this is a post for beginners to help them make heads and tails from all the things that seem to be so complicated. Or this can be treated as a base or auxiliary material after which you should go hit up Google for more information. You should just get a basic understanding of how things work out of this post.

Alright so. Database is a place where you keep your data - the stuff that you will need repeatedly or that will need to be updated or added in the same format. You can create many tables in a single database. And each table can have as many columns as you want. Each column needs to have a type - string, integer etc, can have a limitation of how many characters long will the type be like varchar 255.

For example if you're making a category menu for your website I'd rather put it into a database - this way I can easily change and add categories without having to go into the code, finding the right spot, and modifying the same code in many files.

Anyway. So if database is a place for data it also needs to be somewhere - needs to have a physical location just like anything. So, when you go host a website that provides you with a databse of any kind you should get an email from them letting you know the HOST name of that database, and other information. In this case setting it all up is easy - you either get an email or you can log in to the website that's doing the hosting and find all the info you need.

Now say you don't have a website, or didn't get a database with it but suddenly you need to test some stuff out with databases.

No problem there - go download WAMP servers (or something similar. WAMP is my personal preference) and install it. What happens is it creates a virtual server - in reality the server is on your computer there is a folder where all of the data, files, etc is stored. Now RUN the servers. This kind of server is accessible only on your computer - locally. Since it's local it got the name localhost.

Once this is done open your browser and type in localhost in the address bar and hit enter (or get there some other way). Go to phpmyadmin. Create a database there - can be empty (no tables).

On the right of your phpmyadmin homepage there is all kinds of information:

  • Server: localhost (localhost via TCP/IP)
  • Software: MySQL
  • Software version: 5.5.24-log - MySQL Community Server (GPL)
  • Protocol version: 10
  • User: root@localhost
  • Server charset: UTF-8 Unicode (utf8)

  • This means your HOST NAME or SERVER is localhost.
    Your database is MySQL (there are many other databases like Django etc. MySQL is a database but not all databases are MySQL :D )
    and the default user is root . root@localhost is the same as myName@gmail.com gmail is the SERVER and myName is the user. so if you're logging into gmail you only input the name before @. but if you're giving your email to somebody it will be the whole thing. Remember that localhost is running locally :)

    By user they mean database user. Like admin or just somebody who is allowed to view or edit the data in the database. This is not a user of your website that needs to register. Different things.

    By default the password for root user is empty.

    So this is enough information for your page to be able to connect to your database. Here's an example in PHP:

    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');

    $dbname = 'myDB';
    mysql_select_db($dbname);


    Of course you can just do :

    mysql_connect('localhost', 'root', '');
    mysql_select_db('myDB');

    MySQL_connect is a function that takes STRING arguments so everything is in quotes. Since there is no password you write an empty string - '' or "".

    If you are using a framework or software where you're give fields to fill out you write all of that without quotes. Here's a wordpress example:

    Database Name: myDB (your database. can be empty but must be in existence :) )
    Username: root
    Password : (leave blank)
    Database Host: localhost
    Table Prefix: wp_ (your tables in that database will always start with wp_ )

    This is a very basic set-up and is quite simple you need at very minimum 4 things - server / host , username, password, database name. That's it. Usually there are tooltips or descriptions that tell you what the field needs to be - make sure to read it. Don't panic if something doesn't work - maybe you need to provide additional information like port number or what have you. Read the documentation, look things up on your localhost, just Google for a specific question. Trust me you're not the only person with that problem - There are communities online where you can ask questions and get answers and solutions and if you Google for something you will most likely come across a solution exactly for your problem :)