Showing posts with label Development. Show all posts
Showing posts with label Development. Show all posts

Friday, July 5, 2024

20 Things in my 20 Years

Justin Etheredge wrote a great article in 2021 on 20 things he learned as a Software Engineer. I can relate and still find a lot of these relevant today. Hoping it can be of use to you. You can read the full article here

1.  I still don’t know very much.   

   Lifelong learning is essential in software as there are always new areas to explore, reducing imposter syndrome by embracing the learning process.


2.  The hardest part of software is building the right thing.   

   Designing software requires understanding complex and often irrational environments to meet user needs effectively.


3.  The best software engineers think like designers.   

   Great engineers focus on user experience and usability in all interfaces they create.


4.  The best code is no code, or code you don’t have to maintain.   

   Prioritize solutions that minimize new code or leverage existing, maintainable code to avoid unnecessary complexity.


5.  Software is a means to an end.   

   Delivering value should be the primary focus, not just creating software for its own sake.


6.  Sometimes you have to stop sharpening the saw, and just start cutting shit.   

   Avoid analysis paralysis by setting deadlines and starting to implement solutions to learn and iterate quickly.


7.  If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system.   

   Staying updated with the latest developments in the field is crucial for designing effective systems.


8.  Every system eventually sucks, get over it.   

   Continuous improvement and creating a livable system are more important than achieving perfection.


9.  Nobody asks “why” enough.   

   Questioning assumptions and understanding the underlying goals is critical for effective problem-solving.


10.  We should be far more focused on avoiding 0.1x programmers than finding 10x programmers.   

    Preventing underperforming team members is more crucial than seeking mythical super-performers.


11.  One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be.   

    Senior engineers have strong, informed opinions on tools and methodologies, driving better decision-making.


12.  People don’t really want innovation.   

    True innovation often faces resistance, as people prefer familiar, incremental improvements.


13.  Your data is the most important part of your system.   

    Ensuring data integrity is crucial as it will likely outlast the codebase.


14.  Look for technological sharks.   

    Established technologies that have stood the test of time are reliable and efficient choices.


15.  Don’t mistake humility for ignorance.   

    Quiet team members can offer valuable insights and should be actively engaged for feedback.


16.  Software engineers should write regularly.   

    Regular writing improves communication skills and helps in better problem articulation and solution documentation.


17.  Keep your processes as lean as possible.   

    Avoid overcomplicating processes; focus on building, learning, and iterating in small chunks.


18.  Software engineers, like all humans, need to feel ownership.   

    Ownership over the entire process from design to delivery increases engagement and quality of work.


19.  Interviews are almost worthless for telling how good of a team member someone will be.   

    Focus interviews on understanding the candidate’s interest and fit rather than trying to predict their team performance.


20.  Always strive to build a smaller system.   

    Building minimal viable systems allows for better learning and iteration, leading to more effective solutions.

Wednesday, October 18, 2023

Design Resources

 


Stock Photography

TONL.co is a site dedicated to culturally diverse stock photos.

Broadly is a stock photo library featuring images of trans and non-binary models that go beyond the clichés.

Affecttheverb is a disability-led effort to provide free and inclusive stock photos shot from our own perspective, featuring disabled BIPOC (Black, Indigenous, People of Color) across the Pacific Northwest.

Disability:IN is disability inclusive stock photography.

PICHA Stock is a visual content provider founded on the realization that the perceptions of Africans in the world are not always the reality of Africans or black communities in the world.

Scopio is united through one common theme: Connecting the world through visual storytelling, and giving every creator access to real photos to tell humanized stories.

Body Liberation Stock is stock photography and images for body size diversity and acceptance.

Illustration Guides

Humaaans is a free mix and match design library featuring people with different skin tones, hair styles, body sizes, abilities, and more. 

Black Illustrations is a free illustration library that was created to add diversity to content by showcasing Black people and people of color in a myriad of tasks.

Blush is a free tool that brings illustrations to everyone from artists around the world. The cool thing is that you can customize every piece of an illustration to create your own compositions!

 

STOCK PHOTOS: External sites TonlDisability Inc stock photosBroadly Gender PhotosDisabled and Here Collection. Please read their requirements for credits before using any photos, and consider these photos as an example for creating your own asset library. 

 

 

Src: Collected and shared by someone

Thursday, August 27, 2015

Continuous Delivery


“When you can spin up an application in any environment in your ecosystem with any version of your application code — on demand — that is continuous delivery.” - Eric Shamow
Ref: https://puppetlabs.com/blog/build-a-toolbox-for-continuous-delivery 

Useful Tools you may need:

Version control
Git,
Subversion,
Perforce
Mercurial.

Code review
Gitlab
Stash
Gerrit
Configuration  Management
Chef
Puppet
Ansible
Salt
Cobbler
CFEngine

Metrics/Measurement
Graphite
Logstash
Nagios
Splunk.
Jenkins
Atlassian Bambo
Zabbix - Monitoring Platform

Release and Deployment
Jenkins
Capistrano
Bamboo
Puppet