Showing posts with label lessons learned. Show all posts
Showing posts with label lessons learned. Show all posts

Monday, December 4, 2023

Navigating an Ever-Changing Landscape with Continuous Learning

In a world that's evolving at an unprecedented pace, the ability to adapt and learn continuously has become a key factor in personal and professional success. The rapid advancement of technology, shifts in global economies, and the constant emergence of new ideas make lifelong learning not just a choice but a necessity.

The Need for Continuous Learning

Gone are the days when education was seen as a one-time investment in the early years of life. The Fourth Industrial Revolution has ushered in a new era where skills become obsolete faster than ever before. In this dynamic landscape, those who embrace continuous learning gain a competitive edge, ensuring they stay relevant in their chosen fields.

Adapting to Technological Advances

Technology is at the forefront of change, and staying abreast of the latest developments is crucial. Whether you're a professional in the IT industry or a creative artist, understanding how technology shapes your field is vital. Continuous learning enables you to integrate new tools, platforms, and methodologies into your work, enhancing efficiency and innovation.

Navigating Career Transitions

Career paths are no longer linear, and individuals often find themselves switching industries or roles multiple times in their lives. Continuous learning facilitates these transitions, providing the knowledge and skills needed to excel in new environments. It's a mindset that fosters resilience and agility, allowing individuals to pivot when necessary and explore new opportunities with confidence.

Cultivating a Growth Mindset

At the core of continuous learning is a growth mindset—an understanding that abilities and intelligence can be developed with dedication and hard work. This mindset empowers individuals to embrace challenges, learn from failures, and persist in the face of setbacks. It's a mindset that not only fuels personal development but also fosters a culture of innovation and adaptability in the broader community.

Harnessing Online Learning Platforms

The digital age has democratized education, making learning opportunities accessible to people around the globe. Online platforms such as Workbench "Always on the Job!" offer a myriad of courses, workshops, and resources, allowing individuals to tailor their learning journey to their specific needs and schedules. From coding bootcamps to language courses, the options are diverse, enabling everyone to pursue their interests and passions.

In a world that's constantly in flux, the power of continuous learning cannot be overstated. It's a lifelong commitment to growth, adaptability, and resilience. By embracing the ever-changing landscape of knowledge and skills, individuals can not only thrive in their careers but also contribute to a more innovative and dynamic global community.

Monday, June 1, 2020

Think Six-Sigma Code is Not Possible? You just need to think like NASA

To get high quality code in your application, consider adopting NASA’s 10 rules for writing mission-critical source code:

  1. Restrict all code to very simple control flow constructs – do not use goto statements, setjmp or longjmp constructs, and direct or indirect recursion.
  2. All loops must have a fixed upper-bound. It must be trivially possible for a checking tool to prove statically that a preset upper-bound on the number of iterations of a loop cannot be exceeded. If the loop-bound cannot be proven statically, the rule is considered violated.
  3. Do not use dynamic memory allocation after initialization.
  4. No function should be longer than what can be printed on a single sheet of paper in a standard reference format with one line per statement and one line per declaration. Typically, this means no more than about 60 lines of code per function.
  5. The assertion density of the code should average to a minimum of two assertions per function. Assertions are used to check for anomalous conditions that should never happen in real-life executions. Assertions must always be side-effect free and should be defined as Boolean tests. When an assertion fails, an explicit recovery action must be taken, e.g., by returning an error condition to the caller of the function that executes the failing assertion. Any assertion for which a static checking tool can prove that it can never fail or never hold violates this rule (I.e., it is not possible to satisfy the rule by adding unhelpful “assert(true)” statements).
  6. Data objects must be declared at the smallest possible level of scope.
  7. The return value of non-void functions must be checked by each calling function, and the validity of parameters must be checked inside each function.
  8. The use of the preprocessor must be limited to the inclusion of header files and simple macro definitions. Token pasting, variable argument lists (ellipses), and recursive macro calls are not allowed. All macros must expand into complete syntactic units. The use of conditional compilation directives is often also dubious, but cannot always be avoided. This means that there should rarely be justification for more than one or two conditional compilation directives even in large software development efforts, beyond the standard boilerplate that avoids multiple inclusion of the same header file. Each such use should be flagged by a tool-based checker and justified in the code.
  9. The use of pointers should be restricted. Specifically, no more than one level of dereferencing is allowed. Pointer dereference operations may not be hidden in macro definitions or inside typedef declarations. Function pointers are not permitted.
  10. All code must be compiled, from the first day of development, with all compiler warnings enabled at the compiler’s most pedantic setting. All code must compile with these setting without any warnings. All code must be checked daily with at least one, but preferably more than one, state-of-the-art static source code analyzer and should pass the analyses with zero warnings.

According to NASA, the rules act like the seatbelt in your car: initially they are perhaps a little uncomfortable, but after a while their use becomes second-nature and not using them becomes unimaginable.

Read more here...

Tuesday, April 14, 2020

Agile Philosophies in Practice for Remote Workers


Have you made your move to your home office yet? Ensure you have a setup that works for you and your team. This may mean investing the time up front to evaluate options and put in place everything you need to be productive and comfortable. First, create a space where you are least likely to be distracted.

From an agile perspective, teams are most efficient when balancing time devoted to collaboration with time allocated to the concentrated efforts required for development and other knowledge work activities. When stationed remotely, workers have to be online — but also share their availability. Tools like Slack and Zoom allow you to communicate. Where possible, set availability status and mute notifications when you are embroiled in “flow.” Using status settings is important when teams are accessing flexible work hours.

Project managers, technical leads, and product owners should regularly enquire with questions about their teammates’ level of understanding around requirements, inhibitors to progress, and what might be needed to improve productivity. Some helpful tips include:
  • Employ digital whiteboard tools for sprint planning and design sessions
  • Schedule video web conferencing for stand-up meetings
  • Assign one person to screen-share during reviews
  • Craft simple surveys to capture feedback

Teams working remotely for extended durations may want to discuss documentation standards and see if more significant efforts would be helpful. Sometimes, documenting can replace in-person implementation discussions — the venerable wiki makes a great tool for this.
Leverage the philosophy of being agile, not just by following agile practices, but in recognizing how to embrace change, for the better.

Friday, March 29, 2019

What You Experience Could Impact Your Offspring


Based on this article in Nature: In 1864, nearing the end of the US Civil War, conditions in the Confederate prisoner of war camps were at their worst, with overcrowding in some camps that Union Army soldier (prisoner) death rates soared. For survivors, the harrowing experiences marked many of them for life -- returning to society with impaired health, worse job prospects, and shorter life expectancy. Such hardships also had an effect on the prisoners’ children and grandchildren, which appeared to be passed down the male line of families. While their sons and grandsons had not suffered the hardships of the PoW camps -- they suffered higher rates of mortality than the wider population. It appeared the PoWs had passed on some element of their trauma to their children.

Your experiences during your lifetime – particularly traumatic ones – would have a very real impact on your family for generations to come. There are a growing number of studies that support the idea that the effects of trauma can reverberate down the generations through epigenetics. For the PoWs in the Confederate camps, these epigenetic changes were a result of the extreme overcrowding, poor sanitation and malnutrition. The men had to survive on small rations of corn, and many died from diarrhoea and scurvy. “There is this period of intense starvation,” says study author Dora Costa, an economist at the University of California, Los Angeles. 
For a long while we have understood that child abuse, for example, is very often passed from one generation to another. And as to how far back some of these cycles of abuse go is hard to determine. There are many cases of a person who was abused themselves -- and they also know what it feels like -- yet, they repeat to another what was done to them. This suggests in some cases a human being appears to have no control over their actions.

Read more here...

Wednesday, April 25, 2018

Is Programming Getting Harder?

Is programming becoming more difficult? Allen Downey (Professor of Computer Science at Olin College, author of Think Python, Think Stats, Think Bayes, Think Complexity and more) writes,

"The fundamental problem is that the barrier between using a computer and programming a computer is getting higher. When I got a Commodore 64 (in 1982, I think) this barrier was non-existent. When you turned on the computer, it loaded and ran a software development environment (SDE). In order to do anything, you had to type at least one line of code, even if all it did was another program (like Archon). Since then, three changes have made it incrementally harder for users to become programmers... Cloud computing has taken information hiding to a whole new level. People using web applications often have only a vague idea of where their data is stored and what applications they can use to access it. Many users, especially on mobile devices, don't distinguish between operating systems, applications, web browsers, and web applications. When they upload and download data, they are often confused about where is it coming from and where it is going. When they install something, they are often confused about what is being installed where. For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder...."

Read more...

Tuesday, June 24, 2014

Remember Bannockburn

While everyone remembers Guy Fawkes day, I like to remember the 24th of June, anniversary of the Battle of Bannockburn. No rhyme, but a crucial lesson, regardless.

On this day some 700 years ago, the Scots were aiming for independence. Thinking outside the box, Robert the Bruce had his sappers dig a field of scores of holes, each only a few feet wide and deep, but excavated at a crucial point where the English were advancing. These small traps, capable of snapping horse's legs, meant the cavalry had to stay on the narrow Roman road. Unable to spread into a proper formation, they were left vulnerable.

While the battle ended well for the Scots, the war of independence dragged on. And, in the end, we all know how that worked out. perhaps wankers colonized Scotland, but history, well, history is written by the winners.

Lesson: act today with fortitude and cleverness — even in the face of certain disaster. Although, of course, the outcome may not matter in the long run.