Things That Will Help You for the Smooth Running of a Company

I have been working for awhile, and as a developer these are the things that I think will boost the productivity especially if its a start-up. These are some of my thoughts there may be more things to add ( missed once ), or I may add later when I experience those, so on the future if I am starting a startup, that will help me :) . 1 ) Project Management Tool : The one the first thing we need is a project management tool. I am in favour of redmine.org, though its on Ruby on Rails. Hard for a PHP Developer to setup first. But it has lots of features. As I am a PHP Developer , I loved if I can make a port of it . Writing a project management tool is one of my dream. You can view source, see commits , create issues, dead lines, activity oh my awesome . No words simply awesome. 2 ) Operating System : A flavour of Debain. Probably Ubuntu ;) . If yours is a start-up, then moving behind a properitery software like Windows or MAC will eat your money. Not just money, the productivity decreases a lot. I have experience working on Windows and GNU/Linux OS. The Windows-7 eats up a lot of memory . No I am not blaming Microsoft , don’t think like that. But when it comes to performance and productivity its easier to work on command lines. A good example is mysql import of a database , export of a database . Deploying to production etc. So the developer will be more familiar than seeing it for the first time. As a developer, never go for a designing level tool like Dreamweaver to code your PHP. I don’t have any issues, but it will be hard to move once you are used to it . May be you will introduce the term user friendliness :D . I remember Richard Stallmann saying about it :) on an event in Calicut. Go for Netbeans, Eclipse PDT or Zend Studio or your loved once ( After its upto you who uses it ;) ). A good choice is let your developer move on to use his favourite distro and setup it . Just give the necessary hardware :) . 3 ) Version Control System : Of-course a VCS is necessary . I usually go for git, until I heard an interesting speech about Subversion 1.7 and the future features by Senthil Kumaran S. Yes he made it more clear where to go for SVN and GIT. If you have collobaration with other companies and only some parts need to be gone out, go for SVN. The problem with git is all will be having the working tree . ( Correct me if I am wrong ) . Tracking the commits is easy and we can monitor the activity in redmine … Wow isn’t ? 4 ) Clients : Without Clients , we don’t need all these tools , so yes clients play a good role. To make a client/ customer happy is the goal of the organization. Organization means from top to bottom. There will be always communication issues when you work from different places . Yes after all we are humans, ego , anger so and so .. Client has ideas , but developer need to execute to the awesomeness. How can we make it ? When I learned about Software Engineering on my 5th semester B.Tech it was the horrible subject I have ever seen. Lots of theories, and sometimes I even never understood where I want this . Yes those olden days :) . Yes so software life cycles play a good role in the process. But we should build the process, and not just follow some process vaguely . You must be aware what we are going to deliver etc . So a good thing is create a mock up . Yes lots of open-source tools available one I like to mention is a Firefox addon Pencil . You can grab it over http://pencil.evolus.vn/ . So wireframed :D. Now you know the steps fields and everything . Execute . Split into small tasks, create a dead line for each task. Yes I know its hard to do, eats so much time , but this always brings a good product . Suggestions and improvements will make a good product. Go with the trends than the old ones . For eg : Still developing with old 5.2 frameworks when we have the awesome 5.3 Framework ? 5 ) Database : The most horrible one I have ever seen is migrating database from development to production. Yes I know you may tell about Doctrine Migrations, Db Deply etc http://dbdeploy.com/ . If you are the administrator of the server and is able to install softwares , then don’t hesitate to switch from DBMS to Mongo or Couch if its suitable . There will always occur a time to port from one to the other . Go for utf-8 collation, if its international , InnoDb for relationships, MyISAM for fast text search so and so . Know what you need, DB is the foundation , so once you laid , its always good that there is no changes needed, or atleast least . Don’t forget to choose the right type for the field. I have seen people adding VARCHAR instead of DATE even the type is supported . What to tell Fuck ! . 6 ) Frameworks : Ofcourse not the last , but frameworks helps us a lot . If you start maintaining a website you will really understand the pitfalls. I learned many things looking over the code. There is always good and bad done by others. Looking closely and learn the good and improving the bad help you a lot. For eg : Lets assume a newbie coming and starting a sample blog, if he is using a framework , it may be automatically adding the necessary things to protect CSRF attacks, sometimes validations stuffs etc . This helps a lot even he is not aware what CSRF is. Modelling is hard, love active record implementation .. But :) . 7 ) Good Developers : Good to have self motivated developers. Go from Juniors to Seniors . This will increase productivity a lot. If you have ever wondered how productivity increases , then I can show its easy. Juniors can work on the edit / update / delete / view the borring functionality developer needs to do. There by learning good things for a Junior . Seniors can concentrate on API design or any other logic implementations . 8 ) Unit Testing : There is a huge advantage for unit tests. According to my knowledge there is 1% of the companies write unit tests . Unit testing is always a great boom if it needs to be maintained. I know I have been blamed even I wrote a tutorial on Zend Framework. But I am happy for that , for I looked or started learning from it. You know what breaks , and where it breaks , awesome !! .Always push your developer to write unit test, never go without it :D . 9 ) API and Documentation : Always good to have the methods and classes well documented , there should never arise a confusion why I wrote it . 10 ) Work Space and Atmosphere : i ) A good atmosphere and calm place always brings creativity . I remember the post on Joel on Software . Yes awesome one, love the way . ii ) 5 day work and Flexibility : We all are humans , working for 6 days on a tight schedule will loose our creativity and innovation. So its always good to go for 5 day working company. Peace of mind will bring more productivity and innovations. About the flexibility , some people will love to work on nights , but some on days, some may want to go in the middle. If the tasks are being split and there is no dependency for other people , then flexibility is a good option else mmmm it sucks. Yes I know all these eat up time , but for a better maintainable software time it needed :) . Lets not use and throw the product, like use and throw. Don’t forget to contribute back to the open-source tools you use, either by code or $ . You earn from it , let those who develop it also make a living , be human. Note : Please add in your comments if I missed anything , I can add to this . Thanks

project-management, startup