What goals were you working toward?
What can you do?
What do you want to do?
Improve the way we do things
- I enjoy developing tools that would help developers and systems engineers with their day-to-day work.
- Day to day, we encounter gaps within our workflow. Often times, people take manual steps to fill this gaps.
- Say you want all developers to use a certain version of a software
- Or, when you deploy code, you need to run several automated test
- Or, you need a way to centralize logs for all products in your portfolio
- how would you accomplish this.
- How do you roll out a systemmatic, consistent pipeline of delivering software?
-
How
-
I develop tools to bridge the gap - I am that missing piece.
Automation
- When you’re not automating the process, you’re creating manual one. These manual steps usually require communication from a person to another.
- As the path of communication gets wider, the original set of instructions or documentation are misinterpreted, miscommunicated, and not maintained.
- Computers, on the other hand, are way better at running repetitious tasks accurately. We should write scripts to automate any manual process in our release process.
- Commit the automation script in source control for other developers to collaborate and improve the process.
Documentation
- My old manager who had since retired used to say: What if you get hit by a bus the next day?
- I am a big fan of doumentation and keeping up with documentation.
- In my opinion, code is only complete with good documentation
- Anyone should, in any region of the world should be able to read your documents and understand what's happening
- this includes diagrams, images or even videos
Leadership
- At Pearson, I am not only developing code but also leading a team
- I hate the culture of one-man-army where one person has the knowledge of the software since he is the only person that wrote it. I think a good software if never final. It's always evolving. And is should. But it must be a collborative effort. Where ideas are opposed and agreed upon.
- I also don't encourage tribal knowledge. This is when a particular skill set is only shared among a group of people. As a leader, I hate passing of a information. This is where I encourage documentations and healthy debates.
- As a leader, I also want to enable others to innovate (not just for myself). I want to create a culture of experimentation where people can try and fail. I do this a lot with my team.
- As a lead, I proposed that each member should work an project apart from day-to-day projects (Jira stories), as a result, we found a way to cut our operating cost by 70%
Deploying through the pipeline involves three main phases:
- Building the infrastructure — provisioning and managing the environment in which your software will run
- Installing the software and its dependencies — installing the correct version of the software into the infrastructure
- Setting up configuration for software — configuring your software and database, including any data or state it require
Experiment
- Treat everything as an experiment. There are no failures only failed hypothesis. We keep trying and experimenting until we get the desired outcome.