Posts A Year (or two) in Software Development
Post
Cancel

A Year (or two) in Software Development

Here we are again after a year (or two) of being a profesional software developer. I would like to highlight the terms developer, engineer, coder, programmer, etc. They do have different meaning as I found out after being one of each but in this post whenever I refer to this term I mean the same (the person that solves problems through code). The post’s arrangement will feel familiar to someone who have been working on the Scrum framework. It is modeled similar to Sprint Retrospective (retro) which happens every end of the Sprint. The goal of it is to identify and assess the events that happened during the Sprint whether it might be good or bad. In the end a commitment or goal is set to be achieved for the next Sprint. And this structure fits perfectly for a reflection of a software developer.

What went Well

Team Celebration

Software Development is Fulfilling

I think this should be a given to any software developer but developing in a production environment feels a lot different than developing a side/hobby project. The main driving factor was impact. Having actual users of an application you’ve developed feels like an accomplishment. Hearing the impact that it provided to whether it may be on their business or their personal goals feels incredible. The simple lines of code we write create steps for others to reach not only their goals but also ours along the way.

Software Development is Technical

Being in a company that prioritizes quality code was a big jump start to my career. Learning the bells and whistles of coding/technologies in a matter of a few months was overwhelming but rewarding. The gang of four and enterprise architecture patterns was an example, it is learned by other developers through experience in different projects/jobs or sometimes not at all. This was exposed to me early on and paid dividends immediately. Creating a strong technical foundation in my view is a must before diving into complex technologies, since these complex technologies were formed by combining simple concepts. Knowing the latest and greatest of technology is knowledge but knowing the basics of how it works provides wisdom.

Software Development is Software Development

Having a job is nice but having a career is better. On picking my first job, I prioritized companies that will nurture my technical capabilities - and landed on the best one. I view career growth based on technical influence. Initially ones technical influence is on the code standards they write and contribute. Going up the ladder their technical influence will move up to deployments, automations, and configurations. Next, is that their technical influence will be at the architechture of the project. Lastly on the top, their technical influence would be bridging technology and the business. I was very lucky enough to influence project architechtures in a relatively recent career.

What went not so Well

Confused Artist on a Blank Canvas

Software Development is Fulfilling

Writing new features was fun, fixing bugs within in a sprint on a nearing project deadline on the other hand was not. These are painful to work on compared to writing a new feature on clean slate on a project that is well estimated. Unfortunately, bugs, scope changes/additions, deadlines, and legacy code are inevitable. This was an eye opener to me to what impactful or meaningful work means. During these delays, a lot of workarounds must be done to cater to the deadline. This can mean juggling tasks or worst is rushing out work. I value every line of code I write, I try to give an elegant and succint solution to a problem. But in a scenerio where a choice between meeting the deadline or rushing out work is the only options, business always wins.

Software Development is Technical

The naive view that I have about software development was challenged when I started my career and was shattered today. I view software development as technical (coding) before - mostly technical. After a year (or two), software development is 70% people, 30% technical. As a junior, I would be lying if most of my time was not on coding but the most impactful moments or hours were not always on coding. The meaningful time we spent on collaboration (team/client), planning (sprints/projects/demos), and management (team/issues/blockers/career development) were greater than that of coding. At the end of a commit, coding was simply applying a solution crafted beforehand by a team.

Software Development is Software Development

Generally speaking the career path of a software developer branches into 2 paths, technical or management. Back then I was heavily invested to the technical path and still is today. But as I mentioned on the point above (Software Development is Technical), technical is only one part of the story - a small part of the story. Management always seem dull in my view before but radically changed when i experienced it. I wouldn’t say that I dive in through management but more of dipping in it through the workflows that I mentioned above. The new found fulfillment that I experience when I was given a chance to empower, teach, collaborate with others questioned my very career choice. Today, I am on a limbo whether I would utilize my technical strengths or explore the management path.

What we can do Better

Businessman Planning

Software Development if Fulfilling

Ownership is important, why? Because we are humans. Formulating and applying the perfect solution is fulfilling and for software developers we also try to forsee if it can handle the future. Taking pride in our work builds our brand, our identity as a software developer. It shows our opinions on how to implement solutions. This great and all if we have full control of time, because it will take time. Unfortunately, uncertenties are certain. But - what we do have full control of is the present. What we can do is design a “just enough” solution to cater the present and a “placeholder” for the future, accept that there will never be a perfect solution in software development, and invest into continuous improvement. In the end of the day software development is not about writing the perfect solution that no one will ever see, it is about the value that the solution will provide.

Software Development is Technical

I was very lucky to enough to have landed in an organization filled with talents brimming with passion technically. The habit of knowing the latest of technology was a norm. But knowing everything in technology is impossible since it rapidly evolves. Constant change is engraved in technology through continuous delivery. Technically, we dont have to be experts at everything but we should atleast be aware of the ecosystem. We should strive that our solutions are not biased to things that we only want to know.

Reiterating back to the first line. Those people provided growth not only technically but also interpersonally. Work is work unless others and you decide to go beyond that. Professionalism and friendship builds amazing things. It can also be easily invaded. We should strive for a clear explicit boundary between it. In the end of the day we are humans. You are a clay to which the environment is the mold.

Software Development is Software Development

Working with our strengths, an age old wisdom. More often that not it is true. Technical fields has always been my strong suite and that wisdom drove me to where I am now - and never have thought to question it, until now. What happens if we reach the pinnacle of our strengths or at the very least our goal to our strengths?… We explore. My view was never to be the best technically but to be good enough. It is to have foundational knowledge that can be easily expanded because the heights of once achievement depends on the cultivated foundation.

Software development encompasses multiple fields since software is now everywhere. We could be dealing with logistics, healthcare, banking, people, etc. There is so much to explore in one field and working with our strengths I think is still premature to apply now. I still want to cultivate my foundation before building upwards toward my goals.

Goals for the Upcoming Years

Throwing a Paper Plane

  • Focus on outcomes rather than perfect solutions to give importance to what really matters.
  • Be malleable rather than biased to grow with the environment.
  • Make mistakes rather than playing with strengths to explore and broaden the foundation.

Search Results