I made https://github.com/JoshuaEstes/pms to help me learn different shells and to also make it easier to work on the CLI for me. It makes it a lot easier to setup my laptop and such as well. It also helps me manage my dotfiles.
https://github.com/JoshuaEstes/CheatSheets was used to help me learn different shortcut keys for different programs and apps (tmux, vim, mutt, git, etc.). It's just a collection of what I found useful or found myself always looking up the same stuff. Now it's mostly used as a reference from time to time.
It's a mix of ego and people not knowing what they are doing. I had to fight my first month just to get code into BitBucket. Before that, it was a server in rackspace you pushed to as the root user.
Because the CTO only does the code reviews, people create the PR and the CRF. Issue is because it takes so long, the CTO wants merge conflicts resolved before it's reviewed. Problem with that is, no one remembers the context a month (or longer later).
I have A LOT of spare time so I will often help out with doing reviews but because I'm not allowed to merge or deploy code, it's more of helping junior engineers write better code.
Still fighting with the CTO on letting people other than him do code reviews. We don't do retrospectives and code reviews also take months. I also have to fill out a change request form (CRF) that has the git hash, list of files modified, and many other useless and redundant fields that are required.
I've had various mgmt roles as well as coding roles. I like doing both but prefer to only do one at a time. My career has mostly been PHP and eCommerce related. Have done a lot of marketing automation stuff as well.
GD is joke. I worked at a company that would relentlessly take down the negative reviews. Once hired, they would butter you up to get a positive review so any negative reviews they couldn’t remove would be offset. That’s when I lost all trust in GD.
Rarely companies hit this. I’ve done work in a few startups and we never hit that point.
Also, it’s about priorities and goals of the company. Security and control is the main reasons I see companies migrate to data centers. Generally things like GitHub Enterprise are being used.
Your CTO is correct. Generally speaking you start building using the path that can deliver value the fastest to customers. This is usually something like Heroku. At some point you run into platform limitations and have to migrate to another platform. Generally this would be AWS or some other cloud. Eventually you outgrow the cloud provider and go into a data center. By that point you’re talking number of racks vs VMs.
Another thing to consider, as a developer, is how to make your app as independent from vendor requirements. For example, if you build an app in such a way that it only works using SQS you’ll run into issues down the road.
Also, why y’all using dedicated dev VMs? IMHO it sounds like there are other issues to solve before you migrate the app somewhere else. If I was in your position I would work on making the app easier to setup and deploy. Your CTO has a lot to consider and being a CTO at a startup isn’t an easy thing. How long does it take to deliver a feature to customers? How can you help speed that up? What are the engineering goals of the CTO and how can you help with those goals? Make his or her life easier and work with them. Continuing to push an issue like this will cause you frustration and make your CTO dismissive of your ideas and suggestions in the future.
Riding motorcycles has done the same for me. Take a day and just ride around and get lost. You get disconnected from technology and live in the moment. I’ve met some amazing people and I’m involved with a nonprofit biker organization now. Ride safe brother!
Personally I look for small or startup type companies. I’ve learned that VC backed companies are usually cut throat and not creative. You will get paid more, but there is a cost to that. It’s a numbers game with VC backed companies. Burn and churn. Large companies it’s hard to add value. I worked at Salesforce for about a year before I quit. One of the best companies I ever worked at as far as perks go.
I also don’t have a college degree but have the experience to back me up. I’ve noticed at organizations where they hire fresh out of college or bootcamps is just a bunch of people that would rather talk computer science than write code that can be read in the future.
The best companies are hard to find gems that look like shit from the outside. For example, one company I worked for would dispute every Glassdoor review that wasn’t a 5 star saying it was a disgruntled former employee. It was a highly toxic company with amazing reviews on Glassdoor. Compare that with the company I’m at today that has just over a 3 stars.
The best companies that aren’t complete shit will empower you and encourage you to be your best. They understand they hire for your expertise and get the fuck out of your way. They demand results and also realize that results can take time. Not many people are able to work in this type of environment. You’re essentially looking for a company who treats employees like a team. Just like any professional sports team, the worst players are cut. However, the company also understands balance and sees excessive working as a problem. You’re looking for a company where the one doing the hiring is looking for someone smarter than they are.
In my opinion, the best way would be to read the reviews, and I mean really read the reviews you find online. Why are people saying what they say? Are they new hire reviews? Research the executive team and anyone else you can find at the company on LinkedIn. Before you go to any interview do research on the company and come prepared with questions you want answered based on your findings. Ask the company why you should work for them without being direct. Try talking to others who work there and get a feel for their personalities. If you smoke, go find where the smokers are and start conversations with them. If you get an offer, negotiate a contact for 90 days. During those 90 days, you want to keep interviewing the company. How’s the onboarding? Are they setting you up for success? Is there politics? Are there any assholes? Look for any red flags. There might be warning flags but the point is, you both are testing each other out.
Every company will have its pros and cons. I’ve decided to work at smaller companies which pay a little less but I have more opportunities to learn and grow vs a larger company where I’m a one trick pony.
To this day I still boycott anything Metallica. I loved Napster and would run out and buy CDs to support the artists. This makes me happy, but doubt they even care.
I’m self taught and my story is similar, however in my day, there was no bootcamps. I busted my ass at hackathons to get noticed and moved up from there. I’m a high school and college drop out
When I’m hiring for positions I cross out the school or bootcamp “education”. My top priority is to see what you’ve done in the past and what you’re passionate about. If I like a resume I want a code sample, most have their GitHub in it. I review the code and see how well it’s formatted and how it’s organized. It takes awhile, but I think it’s worth it.
So, keep at it, do some small projects on GitHub you’re proud of. Bonus if you can find a project and contribute to it, even documentation counts in my book. Mentors are also helpful.
I use to work at Salesforce/Pardot for about a year. They had A LOT of security in place (VPN, 2FA, etc.) and were managed very well. Deployments weren't automated but everyone that had code in the deployment had to be on deck in case shit hit the fan. I learned a lot working there and having them drill security into my head I was able to use that in future organizations that I worked at.
The startup that I joined after that had passwords stored in plaintext via a google spreadsheet. Code was not stored in VCS and updates were done in production. I helped the organization adopt scrum and added some development processes in place and added tools to help me and the small team (me +2) of developers manage the different codebases a little better. No one wanted to do this but I forced it anyway.
The organization I'm at right now was similar but has a lot of different challenges.
Each organization you join will be different, the culture will be different. Some will be focused on quality and some will not. You need to understand a few things and be able to communicate with executives and/or managers to accomplish your goals.
Executives do NOT GIVE A SHIT about automated deployments, code coverage, code reviews, etc. They view those things as wastes of time and the "code monkeys" should just get back to work. I'm not saying this is the case 100% of the time, but you need to change how you communicate with these people. Explain what tech debt is and how small investments in time can reduce this. Yes, going from 0% code coverage to 80% is going to take time, and this is something you will need to explain to them.
Some devs are similar and I think that's mostly because no one sticks around long enough at a company to maintain their shit code.
Depending on your role you are either in a position to force these things to happen or you are in a position where you need to bring others up to your level. Both are difficult in their own ways and will require a large time investment on your part. However, BOTH will require you to help others raise their expectations.
The other thing I want to leave you with is a conversation I had with a mentor a long time. Being in a similar situation he told me to not hold others to MY expectations. Hold others to THEIR expectations. This comes back to helping others improve. Bring others UP to your level.
If none of this helps, you may want to quit and find another position elsewhere, but keep in mind, this will be something you are going to run into in many organizations and you are going to have to learn to deal with it.
https://github.com/JoshuaEstes/CheatSheets was used to help me learn different shortcut keys for different programs and apps (tmux, vim, mutt, git, etc.). It's just a collection of what I found useful or found myself always looking up the same stuff. Now it's mostly used as a reference from time to time.