Progress over the last week or two on “Building a Software Company”
- Clearly articulating the goal
- Software development knowledge
- Building reusable code blocks
- Security stuff
- Talking to users and experts
1. Clearly articulating the goal
My goal is to build a profitable software company that people use and are willing to pay for.
I think I had this idea in my head, but I finally put it to paper and wrote out what I want to do.
2. Software development knowledge
I don’t know for sure which product I’ll release. However, I’m getting better at product building.
This includes understanding PHP and SQL better, as well as how to create the HTML and CSS structure so that it is as clean and easy to replicate as possible.
Fully-aware that the first applications I create won’t be production ready, I do know that I will have a bunch of modularized features that I can use across any application, and these tools will help me get off the ground much quicker.
Everything I build today will help me release new products tomorrow.
FWIW, anyone could use these code blocks that I’ve created to get their own application off the ground faster.
This includes stuff like a login/logout system, form submission, database implementation, upload / download handling for documents, etc.
3. Building reusable code blocks:
- How to build login / logout features, and have successfully created this in my application. I figured out how to restrict access to data based on whether or not the user is logged in.
- Next, I must figure out how to associate roles with the user, enable an admin to provision these roles, and grant / restrict access to different parts of the application based on role. I know the general path to get there, just need to spend the time working through implementing it.
- How to duplicate the core platform of my application and quickly get the new database up and running and tie the front end to the database.
- How to quickly automate style and design: There’s something called a “classless style sheet”, which enables you to add a single line of code to a page and that page will display to the user with the styles (colors, fonts, sizing, etc.) that the style sheet dictates.
- You can further automate this by including the classless style sheet within a header file, and include that header file across your application (with “include” or “require”, explained next). This makes the design process way easier. For prototyping, you can use a CDN, which literally makes it a single line of code with a link. Eventually for the production version of your app, you’ll want to download the style sheet and include it as a separate file, but a CDN works quite easily for testing different styles across your app.
- How to implement standardized components to each page: with “include” and “require” functions within PHP, you can include any file from your directory onto your existing pages.
- For example, you build a file called nav-bar.php, create the nav bar, and then on every other page you “include” this nav bar with one line of code. When you make changes to nav-bar.php, it reflects across every page on which you’ve included your nav bar. The same can be done with a footer and other components.
- Enable users to submit information in text boxes that has new lines. Using the “textarea” html tag, you can do this. It essentially adds the new line “br” html tag to your database entry whenever a user presses the enter key.
- You can also prevent the form from auto-submitting when the user presses the enter key.
4. Security stuff
I spoke to a good friend of mine who has close to 20 years of experience as a security engineer.
He does a lot with security vulnerabilities for software applications. He helped me understand how to use security best practices from OWASP.org.
There are cheat-sheets available here that will help me to further ensure my application is secure. Two examples are preventing SQL injection, as well as preventing users from submitting too many files.
Having spoken to my friend about this, it made me realize how I could have probably spent tens of hours trying to figure out how to make my application more secure on my own, but by simply talking to him, I was able to get the 80/20 conceptually of how to do these things, which saved me a ton of time.
5. Talking to users and experts
I understand how important “getting out of the building” is when building something. Talk to users and experts and bounce ideas off of other people.
Doing so will make sure that you’re building something that actually resonates with users.
It’s important to NOT build something within the closed system of your own thought processes.
By talking to other people and showing them what you’re building, it will help you make sure you’re building something other people might actually use.
I have found several meetup groups and have already started talking to people more often.
This is an ongoing thing that you pretty much need to do constantly. Feedback is so valuable.
In conclusion…
A lot of this is simple stuff, but critical to build when you’re creating an application from scratch.
Having built many websites with tools like espressoinsight.com/ and Squarespace in the past, many of these features are taken for granted.
Building all of these things one by one really gives you an appreciation for how much thought goes into the software applications we all use every day.
Leave a Reply