Jacob Baytelman

Building software since 1998

Innovations of Tomorrow Projects Contact me

When you are in a startup (1)

When you are in a startup you work differently. Build your minimal viable product much faster with these tips.

Put you HTML, PHP, JavaScrip codes in a single file, put all files in the same directory and forget about model-view-controller. Why? Because you simply save time. You do not need to jump across files and directories. Because you will redo and rebuild your product many times before you finally figure out what your users really like and need. And then you will have time and funds to beautify your code. Or the product will go to trash, and there's nothing to worry about.

Use meaningful names for your functions, classes, variables and don't waste time on comments. Why? Because if you code something like
	function calculate_salary( month, employee_id )
it's just obvious what it means. Compare to
	function do_calc_1(m, e)

Take out all pieces of any repeated code and keep it in a single place. Why? Because it saves your time. But do not create abstract classes / modules if you do not really need them (if you cannot explain why you need polymorphism and encapsulations in your project). So, this is good:
	include 'header.php';
	/* do something relevant to this page here */
	include 'footer.php';

and this is not:
	include 'header.php';
	include 'database.php';
	include 'common_scripts.php';
	include 'user_auth.php';
	// why database.php, common_scripts.php, user_auth.php 
	// are not included in the header.php?
	/* do something relevant to this page here */
	include 'footer.php';

Minimise the use of 3rd party plugins, modules, themes, etc. Once you go in bed with them, it will mean commitment. You will be committed to apply their updates / changes / fixes. You will suffer from their bugs / limitations. You will struggle combining things which may conflict sometimes. You will spend time learning their functionality (God bless 3rd parties who provide decent documentation!). I do not insist on creating everything from scratch, but think, why on earth you load 10 somebody else's javascript libraries, if you use only 2% of what they provide. And you can probably implement the same in just 20 lines of native code.

Do not copy-paste the 1st very found result from StackOverflow. Don't be that lazy, check 2-3 more links, they might be better.

Do not use source version controls (git) if you work on this project alone. No need to exaggerate, you can handle backups on your computer plus some external storage. You will waste time setting up a repository and then you will be doing one single command - commit. So what's the point?

3 environments (development, QA, production) are good for big guys. If there are 3 of you in the startup, and only you actually write code, the sandbox is all yours :) If you have no real users on the web site, you production = your development environment. When you finalise the version and go live, simply clone this environment (copy the Amazon instance). The 1st one will remain production, the second - your development and test environment. Same os, same php, same database, no synchronisation headaches.

No local LAMP environments. Work on the server. Why? Because you will be able to send a link to your boss / customer and show your progress in the real time. Again, no conflicts between different os, php, db versions. No time wasted on synchronisation.

What is first? A prototype on iOS or Android or Windows? A wrong question leads to a wrong answer. All the three platforms are very different. Depending on the needs of your project, some features might be implemented differently. Some others might be even impossible. If you build an Android prototype, it does not necessary mean that you will be able to do exactly the same on iOS. Investigate first and avoid unpleasant surprises.

When you are in a startup (2)

J.Baytelman August, 2015