Terrance A. Smith

Developer & Learning Enthusiast

  • ABOUT ME
  • BlOG
  • CONTACT

Connect

  • GitHub
  • LinkedIn
  • RSS
  • Twitter

One must enter the arena with all his powers at the ready

Requirements gathering techniques for building a solid Backlog

March 4, 2021 Leave a Comment

Software Engineering has become more fluid over the years as Agile and Scrum methodology adoption rates rise. The sheer nature of these methodologies lends themselves to supporting and, to some degree, encouraging change in requirements via incremental development. This phenomenon continues the process of refining the requirements and scope of a project as it progresses. 

Regardless of project management methodologies and how they handle change in requirements, the initial requirements, scope, backlog, budget, and time estimates would have to exist for a project’s commencement. Surprisingly, over 50% of projects miss their mark due to missing requirements not captured during the project’s initial scoping. The fundamental goal of requirements gathering is to explore, research, and document what success looks like for a given project. These requirements will eventually become a backlog of items representing the tasks needed for project completion without future changes. Such oversight can be problematic and have a disastrous effect on a project’s outcome. With the primary building blocks and assumptions lacking, the possibility of massive changes in order course correct will put a strain on deadlines and budgets. This article will outline different ways of approaching projects, requirements gathering techniques, and building a reliable project backlog for project planning, execution, and fulfillment, resulting in a solid foundation for a strong project start.  read more

Filed Under: Uncategorized

Write Strong Bullet Points That Tell Your Story

May 1, 2016 Leave a Comment

It’s that time again, graduation season. As the joys of finishing school fades away, the thoughts of successfully landing a job start to surface. Not too long ago I was visiting the campus’ career center, asking professors to do me the honor of being my reference, and having my resume reviewed by my peers that graduated before me. This was all in an attempt to ensure that my resume was polished enough to make its way to someone’s desk. But how do I ensure that the reader will get passed my experience section before tossing it in the trash?

There are many great articles and books in circulation that cover best practices and tips on how to construct the “perfect” resume. One that would catch and hold the reader’s attention. In my search, I found some of the advice and tips to be palatable, and others not so much. Among those I liked was one that stood out the most to me, and that was Writing Strong Bullet Points. 

Considering the competitive nature of the job market, I personally believe that employers are no longer interested in our responsibilities; they’re looking for results. For an employer to spot those results, they have to be able to easily grasp and understand the Context, Action and Result (C.A.R). For the employer to catch that, you have to tell your story.

RESPONSIBILITIES VS. RESULTS read more

Filed Under: CAREER

The 7 E’s of Mentor Leadership

April 19, 2016 1 Comment

=&0=&

Filed Under: LEADERSHIP, SELF DEVELOPMENT

Journey from Novice to Expert by Becoming a Better Learner

December 26, 2015 Leave a Comment

In my last post, I talked about how adaptability, domain knowledge and the ability to quickly ramp up from project to project are some of the major factors that contribute to being a senior developer. These are all skills that can be learnt over time and with practice.

I’ve since then been looking at new and innovative ways to become a better learner, and was referred to Andy Hunt’s book: Pragmatic Thinking & Learning: Refactor Your Wetware. The book basically talks about how to harness intuition and get better at recognizing and applying patterns. It was filled with so much useful content that I ended up creating a Mind Map to represent my overall view of the valuable information, guides, and advice. 

Among the plethora of information, Andy Hunt gave me new insight regarding what it means to be an expert and an approach to learning in the form of an investment portfolio that will definitely boost one’s adaptability and level of productivity.

 

Novice vs. Expert

There has been much debate on the topic of Novices vs. Experts and what defines the two; especially experts. To gain better insight, we look to the Dreyfus Model of Skill Acquiction, coined by Hubert & Stuart Dreyfus (Dreyfus Brother). The model highlights five stages of skill levels, namely:

Novice: Has little or no experience, can be effective when relying on context free rule & don’t particularly want to learn; they just want to accomplish an immediate goal.

Advance Beginner: Can start to break away from the fixed set of rules and try tasks on their own. They want information fast and still have difficulty troubleshooting.

Competent: They can troubleshoot problems on their own, and begin to figure out how to solve novel problems—ones that they haven’t faced before. They can begin to seek out and apply advice from experts, and use it effectively.

Proficient: They can reflect on how they’ve done, and revise their approach to perform better the next time. They can learn from the experience of others, and know where to stop following the rules. In addition, they need a big picture.

Expert: Are the primary sources of knowledge and information in any field. They are the ones who continually look for better methods, better ways of doing things. They tend to have problems to articulate expertise and are surprisingly  thrown off by the rules.

The sad fact is that most people never get any higher than the second stage, Advance Beginner. In addition, people at lower skill levels tend to overestimate their own abilities – by as much as 50%.

Moving through the different levels, aiming for expertises, requires a change in perspective. One way to acquire that mental shift is through the Shu-Ha-Ri, a Japanese martial art concept, that describes the stages of learning to mastery.  It is broken down into three stages:

Shu – Learn the rules: In this first stage of the process, you’re basically learning the rules or following the step by step guide in that video tutorial. You concentration on following it precisely without worrying too much about the underlying theory.

Ha – Bend the rules: At this point, you’ve completed the tutorial and you’re beginning to branch out and look at other methods/guides as you start to understand the underlying principles and theory behind complete the task and how to put them into practice.

Ri – Break the rules: Now you’ve stopped learning from tutorials and guides, but from your own experience. You’re now starting to create your own approach and applying what you’ve learned to your own particular circumstances.

Another way to sum it up would be Imitate, Assimilate and Innovate. Reaching a level of expertise in a particular field is one thing, but you have to keep practicing in order to remain an expert.

Another way to simulate cognitive shifts in perspective to move towards mastery is through Deliberate Practice. Simply put, deliberate practice is not just trying something out. It involves specifically identifying what you’re going to work on and your areas of weakness, that when bettered will have the greatest impact. Effective deliberate practice should have well defined tasks that are appropriately difficult or challenging but doable. In addition, it needs to be supported by an environment that supplies informative feedback that one can act on. Lastly, it should provide opportunities for repetition and correction of errors.

Satisfying these conditions will provide accelerating growth in any particular field due to the fact that a random approach, without goals and feedback, tends to give random results. Also, keep in mind that leaving or regulating learning activities in your spare/free time is a recipe for failure. That’s why these practice sessions need to go along with a specific routing or regiment.

Furthermore, you can cement what you’ve learned by teaching others. Even if you have to start with a rubber duck as your protégé. Being able to regurgitate and put into your own words, thoughts, ideas and concepts is one of the best ways to prove to yourself that you have a firm grasp on a subject matter.

 

The Pragmatic Investment Portfolio: Creating a Knowledge Portfolio

Being able to move from Novice to Expert in a particular field is worth great recognition. However, most people, including myself, struggle with deciding which technology stack or skill to invest one’s time. In addition, there is also the fear that the chosen field may not have any longevity in the tech industry. Hence, it is necessary to have a diverse knowledge portfolio also referred to as a Pragmatic Investment Plan (PIP).

Similar to one’s financial investment portfolio, a PIP is a diversification of one’s knowledge and skill. The goal is to model and manage your knowledge portfolio with the same care as you would manage a financial investment portfolio. You’ll need to routinely review them to ensure that there is still value in its returns. Or there are greater returns that can be had if time is invested elsewhere. When picking up something new to invest time in, it’s important to approach/explore potential investments with a holistic and experimental approach and then shift to the more routine drills and skill to “PRODUCTIZE” learning.

Key to a successful portfolio 

  • Have a concrete plan:  Any subject area that you decide to invest your time in should reference goals and upcoming tasks. These goals can have a due day for next year or as far as five years out.
  • Diversify: Never put all your eggs in one basket. Consider the risk vs. return on investment ratio (more information below).
  • Active, not passive investment: “A random approach, without goals and feedback, tends to give random results.” Deliberate practice should be applied here.
  • Regular Investment: You’ll need to create a ritual and commit to the minimum amount of time needed per investment. Once you’ve created that ritual, stick to it. Even if it means you have to escape to a coffee shop, do it. Keep in mind that not all your planned sessions will be equally productive, but by scheduling them regularly enables you to win out in the long run cause you’re building a habit around it.
  • read more

    Filed Under: SELF DEVELOPMENT

    What does it really mean to be a Senior Developer?

    May 22, 2015 Leave a Comment

    I love the Lord of the Rings trilogy, more importantly the role Sean Bean played in the first movie. In case you didn’t know, any character that’s portrayed by Sean Bean in a movie or TV series has a high probability of dying. Some of his deaths can leave you speechless and confused, as they are more grotesque than others. For instance, his death by separation in the movie Black Death where he was torn apart by horses running in opposite directions. Although extreme, that’s exactly how I felt when I was asked by one of my accountability buddies about career goals for the next 2 years. Like Sean Bean’s body, I was all over the place!

    I couldn’t specifically narrow down what technology stack I wanted to work with, as there was a plethora of languages and technologies that I wanted to explore. In addition, there were so many different opportunities like working with non-profit organizations and open source projects that were available to take advantage of. However, one of my immediate fears was taking a deep dive into a technology stack only to find out that it may become obsolete in the years to come. But in the midst of all of this internal confusion, I knew that I wanted to become a senior developer.

    The definition of senior developer varies from company to company and is mostly determined by years of experience and the number of projects one has been involved in. However, it felt that there was an underlying metric that stood above all. This unknown metric became painfully obvious when my accountability buddy asked me reasons for jumping into the list of technologies I presented to him. And to add insult to injury, he followed up by asking “How are those things going help you become a senior developer?” Honestly, at that point I really didn’t have a good answer. So rather than putting my foot in my mouth, I conceded and my journey to find the answer(s) began.

    I recently read Richard St John’s book, titled The 8 Traits Successful People Have in Common. Richard personally interviewed approximately 500 successful people with the goal of finding out the common factors for success in any given field. In the end, he was able to identify 8 traits that his interviewees’ portrayed. And presented them in his book. They are as follows:

    1. Passion
    2. Work
    3. Focus
    4. Push
    5. Ideas
    6. Improve
    7. Serve  
    8. Persist

    I won’t go into anymore detail, but you can get the gist of his research and his book from his TED-ED Talk.

    In order the answer the question of “What does it really mean to be a Senior Developer”, I took Richard’s approach and interviewed a series of senior developers and sure enough found one word that resonated with all of the interview sessions. That word was Adaptable.

     

    What does it mean to be Adaptable?

    As long as you’re a developer you’re always having a new project to work on.  The project can range anywhere from the implementation of an existing business process, an entire system re-write or even as personal proof of concept. Regardless of the type, there’s always some ramp-up time that’s involved. Now, I must admit that at some point, ramping-up meant acquiring all the information that I needed to start committing code and getting my task or feature done in a timely manner. Most developers are okay with that; just knowing the bare minimum to get the job done. However, after conducting my interviews, it was evident that ramping up involves much more.

    Ramping-up on a project should be geared towards understanding the domain and using that knowledge to make design and architectural decisions. Knowing how your feature fits into the domain’s bounded context will eventually affect the application in the long run. Most believe that domain knowledge is something that only project managers have to deal with. Taking the “Just tell me what I have to do and I’ll get it done” approach to every task. As Martin Fowler once said “Don’t just be a code monkey“. 

    Now the word adaptable means being able to adjust to new situations or conditions. As such, in the context of Software Development an adaptable developer is one that can enter a project at any point in its Software Development Life Cycle and be able to exact change and produce results. In addition, an adaptable developer should be able to see a project through from start to finish. What I found interesting, was that ramping-up is an essential part of being adaptable. In fact, regardless of the domain, ramp-up time is indirectly proportional to one’s level of adaptability. Meaning the more adaptable you are, the less time you spend on ramping-up.

     

    How to become adaptable?

    When I started doing martial arts, my instructor would always have us do at least 100 squats before training. On other days he would have us stand in horse stance for as long as we can, even when we started shaking in the legs. This was all done so that we could build a strong base, as it was necessary to execute and display proper technique. Any karate expert will tell you that it takes a strong, solid base to land a powerful strike. The same principle is applicable in a career in software development. As such, building a strong technical foundation is the key to becoming adaptable.

    One of the interviewees said: “The problems have not changed, but the tools have”.  In fact the existence of these problems is what lead to the development and introduction of basic principles that are applicable in particular situations, such as Design Patterns and Domain Driven Development. Understanding the problem is a major factor in understanding and taking advantage of different tools or languages. On the flip side, it’s also makes understanding their limitations much easier.

    Yes, tools are great! Technology stack even better. But in order to make the best of them, one has to understand and master the basic underlying principles that they are based on.

    Conclusion

    My research not only gave the answers I was looking for, but a compendium of good advice. A lot of the things that were said to me were not necessarily eye openers but served as motivators and guidelines that can follow fearlessly. Nothing Good comes easy, unless your idea of “Good” is a Scoop of Ice Cream, in that case Ben and Jerry’s here I come. But on a serious note, each career path has its own set of challenges, some being more challenging than others. But regardless of the demand, one has to put in the WORK. Bruce Lee once said “..you put water into a cup, it becomes the cup, you put water into a teapot it becomes the teapot…” Become adaptable my friends.

     

    Filed Under: SELF DEVELOPMENT