Enabling process driven systems development and best practices at a tech. startup
It was just over two years ago when we started ESOFT Technologies. I was assigned with more than a project; I was supposed to build a company. Every good company at a high level needs three things to work well: right people, stuff people want to buy and great processes to drive the first two. This write-up highlights how to enable processes in a software house. A lone code ninja could use a few of the following and get away with it, but once the project needs more and more people to build or maintain, that’s when having clear process driven development matters.
Basic must have’s at a tech. startup:
- Include 1–2 days orientation programme for new employees where they are introduced to each other and see projects under maintenance or development. Let them ask questions.
- Train new employees on tools and technologies when they join as necessary as per selection evaluations.
- Cool development setup.
- Team culture by sharing and caring.
How to start R&D software and electronics projects
- Figure our tools, technologies such as programming languages and frameworks, electronic modules prior to beginning design and development to reduce re-engineering/ changes which increase costs after initiation. In essence a detailed requirement analysis and solution analysis. This can also entail use of interviews, site visits, document scanning, technological feasibility analysis, CBA, Compare and contrast.
- Develop a MVP (Minimum Viable Product) and run it as a trial with selected users to see if the value is captured enough to attract customers.
Basic documentation required for a project
Note: Not so boring when you have others who suffer equally :)
3. Business Wiki including project Charter. First increment plan including What, how, when, by whom (use cases if using SCRUM), Indicate Security Clearance levels.
4. Add a separate Technical Wiki where team members contribute architecture/s, development methods, comments, classes, and how the program works. Add use cases of all usage scenarios. UML, ERD, UI/UX prototypes.
Note: Use standard Formats to enter engineering/ developer documentation
And we use SCRUM on all our projects.
Testing and QA
5. Testing focus to increase quality of products, reduce deployment bugs and live issues. Ensure proper unit testing (using protractor, karma, junit, phpunit etc) is carried out and later black box testing is carried out based on the use cases. Ensure documentation systems are integrated such as PHPDoc, Javadoc.
Note: Ensure no new development occurs during testing — lock code base
6. Figure out repository management such GIT or Mercurial, Versioning, Namespaces, Dependency mgmt., Task runners
7. Coding Standards such where to use camel case, pascal case, Database design/ noSql data structure designs, ERD development.
8. Load handling, lazy loading data, load handling methods
9. Keep separate R&D/ Development/ Live code bases
Security and Data Recovery
10. Access Control: FTP, email, repository access, physical machine access, HDD removal, physical premises access, inventory of systems access and hardware allocations
11. Implement Firewall, Proxy, Public IP, Access control, permission request procedure.
12. Access and security of Email and Information: who should be in CC of emails, disclaimers, information access policy development, information sharing and confidentiality regulations development, system access/ revocation procedure development. Update PM, Tech Lead and other project members when received issue, update or any other modification. Implement email groups for projects, availability checker/ ping alerts for websites and other services.
As a young guy who has no prior experience at large tech. companies, I had just met a huge blocker when confronted with the need of processes. But we had a great team of engineers with range of experiences in our team, together we got the above process highlights done in a week of discussions. What you should do after is go in detail to each point and define which tools and systems are used and how. And we have never looked back. Continuous process improvement is a part of developing bleeding edge systems and products, especially as our products and services are from such disparate market segments.
Keep in mind ETs team has never been larger than 10 software engineers and UI/UX developers. So be sure these will evolve as we grow. But I hope it would help new companies to start with a solid base of key areas to deploy processes which can drive projects to a successful life. This way your PM can also enjoy their projects rather than be managing chaos.