Academy Program: Week 2
Welcome to my blog, today I’m going to be talking about what did I learn in this second week of the academy program in Nearsoft/Encora. This week turned out to be very challenging, full of learning and with lots of things to talk about. I’m going to try to be concise and direct through the post, so the readers can take as much information as possible, obviously interesting information.
This week has already started to feel like a transformation in my mindset, I didn’t even notice when I was starting to be more productive, making better decisions, assimilating information faster. But also, I noticed I was feeling kind of out of my comfort zone. I started to fail a lot and therefore to learn.
We began by reviewing a video about the myths of the genius programmer. The message of this material was: “writing software is an inherently collaborative activity”. I really understood the importance of share your projects with others, collaborate, receive feedback, improve, embrace failure. What really is most important is that I related this to the Agile methodology for software development. The video talked about constructive criticism, failure, failing quickly, practice, be surrounded by people that know more than you do, be influenced and use your tools. The hole point of the video was: collaborate, be aware of your tools and be on time when sharing your ideas.
From there we reviewed content about organizational manipulation and social skills. It is important to have a notion of how to create and share ideas in different contexts since we are going to face very different scenarios in our profesional lives. We have to identify when to take risks, which battles to fight, practice the creation of a good perspective while working in the right things, influence people and let others influence you and be polite. In addition to that, as individuals we need to know our personal behaviors, to be on a team and how these team interacts with external contributors. Considering these aspects will allows us to improve relations, allowing feedback, collaboration, responsibility and encourage others to be more productive. How to encourage others? Just like Encora does, giving autonomy, the chance to improve, a purpose and teaching how to communicate best with others.
From Dave Thomas, in his talk of “developing expertise” I learned very useful information about the process that everyone experiments to go from novice to expert. Below I share the phases learned.
- Novice: Get things done without much context.
- Advance beginner: Starts seeing patterns but still needs guidance.
- Competent: Starts doing things alone, controls and plans.
- Proficient: To understand the bigger picture and start asking why.
- Expert: About learning to justify your decisions, love exploration and autonomy.
Knowing these things give us a better idea of how to help, work or interact with others that are at a certain level, without treating everyone as they were the same, and allowing each one to improve at their own pace.
Moving on, I would like to discuss what I learned from Linda Rising and her talks about how our lives can be improved by taking an agile way of thinking, even if you aren’t in the software industry.
First, the topic was the unrealistic goal of perfection, this is all about start doing things instead of overthinking and try something new. It is important to understand that we are not linear, we need to stop and rest. If we force ourselves to do something, is going to take us more time than if we try to work with real focus over certain periods of time and rest between them. This way we will allow our subconscious mind to wakeup. Obviously, we need to sleep and do it being aware of how our mind tends to use periods of 90 minutes of time to go through the phases of sleeping, it is important to don’t interrupt them, otherwise we are going to feel tired.
Here is when the agile mindset comes as guide to create the attitude that we need to allow ourselves to learn and fail. We may face limitations, but we are getting better by trying. Being intelligent is more an attitude than something that you burn with, it is even something you can train and grow. We need to start doing hard things now, challenge ourselves, otherwise if we stay in our comfort zone we won’t progress. Therefore, just like in agile, abilities can grow as a muscle, our goal is to learn, we need to embrace challenges, learn from failing, put effort into the things we do, be resilient and fail quickly.
Overall, it is useful to be aware of how our mind works and take advantage of the unconscious mind. We have been talking about how individuals can improve, but as I said earlier, collaboration is going to be key in our path to become a better version of ourselves. What does collaboration involve? Everyone is linked with others so you cannot succeed unless others do. You must coordinate your efforts with the efforts of others to complete a task. This is important because it is in our natures to tend to divide and categorize people, the best way to fight this is exactly act with the mindset of community. Moreover, individuals see they can reach their goals if and only if others in the group reach their goals, don’t be afraid of give a good example.
Last but not least, as part of learning about ourselves there comes as well the question of how other influence us. From the series everything is a remix , I learned about how copying is being mortified instead of being a tool to learn. Creation comes from the process of combining existing ideas, ideas that may already exist. We used to share knowledge for the common good, now common good is fighting with intellectual property. We cannot introduce anything new until we are influenced in any language of our domain. What this is trying to spread is: do not be afraid of sharing your ideas, share a culture where everyone can learn from each other so the society can take this attitude again.
The technical things
For the technical things we reviewed the following content.
We start to thinking about tools, and to be precise, tools for performance. The video was about the 3 pillars of web performance, network, render and compute. Those are aspects every web development project has to take into consideration but, what I got from it is that we need to be aware of this things when working on these types of projects so we can deliver the best product possible, I would say that every product must meet the requirements always. Tools for performance will actually allow us to test better our applications so we can do improvements faster, analyze our product, identify weak points, know how network behaves, recognize improvement opportunities in terms of render and compute.
On the next part, we learned from a series of videos about variable length codes, compressor algorithms and modern computing. It is important to know that computer scientists have been using these algorithms to reduce the size of content to keep the internet from becoming standstill. The importance of algorithms is actually that, being able to make web applications sustainable, faster and better adapted. That is another thing to have in mind.
We also learned an advice useful for anyone entering to the industry of programming and software, “The best programming language”. This I think is not a trivial question for beginners, people tend to try to learn as much as possible from different languages, which can be inefficient, instead there are some aspects to take into consideration when using a programming language: Productivity, performance, reliability, portability, community and previous knowledge. Essentially, you should choose the one that best adapts to your situation taking the last points as reference.
Lastly, we analyzed another lecture of “Missing semester: Shell tools and scripting”, here we reviewed different ways of assigning variables, create loops and functions. Shell scripts are mainly useful when it comes to do shell-related tasks, creating files, saving results into files and interact with the system elements to do tasks faster. When learning how to use the shell it will be helpful knowing a way of finding how to use commands, how to find files and how to find the code that we write. Moving over the Shell is a crucial skill to work faster and better. Things like regex (regular expressions) and the use of commands like man, find, grep, history along with knowing how to create scripts are important things to have in mind if we plan to take advantage of the shell.
Thank you for reading once again!, have a great day and remember to have an agile mindset.