A byte about me
I left my job a couple of months ago as a Junior Software Developer with the great people over at Cranium Cafe, in order to pursuit one of my other ambitious ideas of being a personal software development consultant. With only 1 year and 4 months of experience in writing actual production code, I will considerately call myself a relatively new software developer in the software industry. Besides the actual work that got me paid, I completed a series of other projects in school like this awesome calorie counter along with this classified notification system. What I am trying to say is that I have been coding for around 2 1/2 years now, but besides code I have completed IT projects in the past for some of my clients, making my transition over to a consultant a bit smoother than expected.
I looked around my community to find awesome people that wanted to create software projects, this leads down the road of the entire startup seen. I participated in multiple coding events codeday, provo startups weekend and pushbutton. After meeting and greeting a couple of startup owners, some with great ideas other with interesting concepts. I quickly start to pick up that they are people out there really wanting to make a difference with the product they are making and others that are just looking to make a crap load of money and “Exit”. After all this I found a company that had about the right balance of wanting to make a difference in something that I was interested in which is fitness but yet had a good strategy to have a sustainable company. Then voila we find coolefitness.
The project
I talked a couple of times with the owner of coolefitness about the product he envisioned and what he wanted to create. The current project was started in late 2012 and speaking from a technical point of view the system had many issues, and the owner talked about the issues with the system. Since he is the only one trying to make this idea a reality the project had moved between development shops and countless developers, allowing for very strange spaghetti code being created. The project was growing in size and complexity and if i was to take on this project I had to pay the price. After a discussion with the company owner we arrive to the present time, to keep the project moving in a fast MVP a complete rewrite of the project had to happen using modern tools and mythology to overcome some of this problems. Since the company wants to have tight iterations of the project and move at a fast pace to keep up with customers request for improvements, the system will have to be able to be tested and documented which none of those two vital components where in place.
This is where I come into play, the project was to implement and overall migration of code over to new framework which we choose laravel along with angularjs and bootstrap. But the project does not end there, I needed to create documentation, system requirements, user requirements, redesign the database schema current design had issues, create UML diagrams of the major components of the system along with current projects features and new requested features for example a payment gateway to have an overall robust system that is unit tested, did i mention i went ahead and planned to complete all this in only 4 weeks?
-
Expectation management
Expectations will equal pain if not taken care of correctly right of the bat, when starting a new software project. For this project it was simple enough to just complete the migration over in 4 weeks and then get compensated with some equity. Here are some of the parts that got handled day one of the project creating a contract, creating a project proposal and a project deliverable dates and from the first looking at this I felt that I did a good job of setting up expectations for me and my client
- Creating a contract This part has held me back in so many projects, well I used it as excuse not to take on certain clients. But no more I needed to create a contract for this project. This was simpler then I originally thought because the contract is what the owner and you as the contractor agree on the simpler it is the easier it is to agree upon something that both parties are in content with. The owner wrote up a contract which just stated that i would work a minimum of 8 hours each day for 5 days and along with that our meeting time which was every day for the four weeks at 8AM via google hangouts except for the weekends.
- Creating project scope knew that this was going to be an important part of the project. Why? well because everyone has ideas for improvements and new features so if you are not the one that is creating the actual code the scope can quickly get out of hand. This is why I made it strictly clear in the beginning that if we were to fall out of the scope an entire new evaluation of the project had to be done.
- Creating a project proposal Again another part that is overlooked in software projects, how can you build something if you don’t know what you are building? This was a vital part of this project I knew that I had to spend a good amount of time trying to figure out what to build and what is important for the business and users. I went ahead and created a user and system scenarios along with a new database design. I must say this is where I really shine this is probably one of my favorite parts of the entire software development stack.
- What would I do differently? If I could do it over again i would be even more specific with every single part of the system that needed to be created and actually create a better design on how all this parts will interact with each other. But most importantly find out more about the business in order to build the correct product that needs to get built.
-
Determine Hourly rate / project cost
Going through this entire project from beginning to the end, I have picked up a couple of valuable lesson and one of them being able to actually tell how long a project is going to cost and how many labor hours will be involved in actually doing what needs to get done. One of the most important things that I got out of this would be to do the following, if you expect something to take 3 hours you should multiply this by 2 and thats around how long it will take. For example in this project I had never built anything using laravel and I expected for me to learn and be productive in the framework with in 16 hours of going through the documentation it was more like 32 hours of looking at the documentation for the framework. Same goes for price I expected the value of this project at my hourly rate to be around 10K that’s 133.50 hours in total with each hour being billed at $75 an hour, but at the end of the day in order for the software to do everything the owner want’s it to do it’s going to be more about 20-30K to get his vision of the MVP item to actually start making some real money, if he was to hire someone that actually cared about the software project or a decent developer.
-
Learning on steroids
Now I know for a fact that really I have felt that I needed to take on a fairly large project, in order to get some more experience and if you were like me most of the programs that you have written do not extend a more than a couple of classes and methods. Here is where getting a client can put you in a place of learning like you have never felt before! Sometimes I tend to push learning something new into the it would be nice to learn and maybe one day I will get to it. Maybe one day I will learn that new shiny framework Laravel, maybe one day I will create an interactive app using angularJS. When working with a client that day arrives sooner than later and not only is peer pressure forcing you to code and learn but the results and responsibilities that are yours must be delivered at no exceptions.
- Results driven One of the parts of this project was that every single weekday we had a meeting to see what needed to get done, how it was going to get done and where the project was heading. We call this that AGILE DEVELOPMENT, where interactions with users are valued.
- Being held responsible to complete tasks Not having no one to hold your hand guide you on how to solve a problem can be a scary place to be especially if you are at a position that you are not qualified to be in. This is what we call being knees deep and being well over your head, but in order to experience something completely new, guess what you have to do things you never done before. This project allowed me to be responsible in completing what I set out to do. That being said some days I would kill it and do work that was not due till a couple of days from when it was suppose to get done and others I would be stuck at a syntax error for hours.
- Dealing with 1.7 Million lines of code It’s amazing and yet fun when you think about it, for this project I used many different parts that were built by the framework creators and API’s in order to get done everything that I did in that short amount of time but I would have to say that it would of took me much more longer if I did not have the infrastructure from all the those libraries that were used. Now saying that I can completely see why someone new in this field would give up so quickly if they were asked to use 1.7 million lines of code and code with intent of creating a product that would generate large amount of capital. So how did i deal with it? Well just like in the real world we abstract out concepts into simpler forms of thinking for example think about your car, you don’t know exactly how it takes you to places all you know is that it get’s you there just feed it gas and maintenance.
-
Price of lessons
Here we go probably one of the most important parts of this project, How much did you get paid? well in currency it would be NADA, sure we came up with an agreement of getting paid in equity but I will just take that value as it is which to me is nothing, I can not give my car equity to take me places nor can amazon accept equity, but what I can use is what I learned with working with clients and how to evaluate the pace that I work with along with what parts of development that I am really good at (software requirements).
Well since you did not make any money, how much did it cost? Now since I did not earn any sort of capital from this project then it definitely did cost me a certain part of my resource which currently is TIME. In total I burned a little over 172 hours and $920 in living expenses which brings this project at a total cost of around 14K. That is 4K over budget and a very large price tag to earn experience so be ready to spend. If I was to work again for equity I would heavily judge that decision especially if you have paid work that is waiting on you.
Is equity a good choice?
This is going to heavily dependent on the type of person that you are and the type of client that you take on for example a founded and not funded client makes a HUGE difference.
I Got what it takes? There are a couple of parts that have to be taken into consideration for example age, savings account balance and time available to work on project for example, I had the money and time to try something like this. But if I had been attending school or having 9-5 job, I would of have to gone to extreme lengths to try and do something like this as a“side project”.
I want the equity! If you decide to travel down this road there are a couple of points to keep in mind when working for equity. The two types of equity tend to be well equity and equity with compensation and deciding which one is better than the other well that’s the a fairly risky decision that you have to take. The best option would vary based on the project but if you where to look at it straight from a contract point of view than equity would definitely would be out of the picture. This is because the contractor knows if the company does not succeed, or take a very long to start making money than it might just cost you years of time on a investment. But most importantly a contractor knows that if they take equity as a payment type then they are going to be putting themselves in a position by taking a serious pay cut and be prepared to put long hard work into raising the value of the equity through your actions in order to build some massive wealth.
Let’s take a look!
All right i know that some of you might want to check out the project, if you are interested in seeing the application go over to seesss.com and take a look around, sign up for free and try out some of the features. Of course some of the parts our blocked off from normal users for example the administrator panel. Some of the parts that did not get implemented here are the prototypes for those.
Here are some of the screen shots of the actual admin panel where I spent a couple of weeks working on.
That’s all great, let’s see it in action
I always had a passion for the field of STEM (Science, Technology, Engineering, and Math) and I knew I wanted to do something to make a difference in the world. I just didn’t know where to start. I was an immigrant in a new country, grew up in a tough environment, and wasn’t sure how… Read More