The field of software development has a lot of roads, some are more challenging than others. And for Nati Lara, a Front-End dev currently living in Denmark and mom to a toddler, these experiences have been incredible. How does remote work and software impact her job as a mom and developer?
By Scio Team
Whenever someone asks me what I do for a living and I tell them I’m a software developer, the response almost always is “You must be very smart!”, because this preconceived notion of this job is that only the more intelligent persons can do it and, well, no.
It’s like when I see a carpenter doing their thing, and I say to myself “I could never do that”, but if it really interests you and you want to make your ideas into reality, it’s within everyone’s reach.
I started programming back in High School when a teacher helped us learn to use Delfi by designing a simple website. It was a very interesting exercise, having to do an entire page by myself; it was the final project of the semester and everyone did whatever they wanted, but I got really into it.
It was a gripping challenge because the teacher didn’t explain much, so we had to make with whatever solution and tools we had on hand, and I liked that a lot. Delfi already has some basics, so we didn’t have to start from scratch, writing zeroes and ones, which changed my ideas of programming. I used to think it was a black screen with green text on it like in the movies, so it was a different experience.
I used to like computers a lot as a kid, my parents got their first one when I was 10 years old, but I didn’t know anything that had to do with programming. I was curious about interfaces, not as much as the inner workings, and that’s what I specialize in today.
That’s why I do Front-End in iOS, I like things where I can see the result. I don’t get too much into Back-End stuff, where I don’t have a clear vision of how things are working, I prefer working on things where I can see the immediate result.
As a developer, the best feeling I get is when I can put my ideas in motion, and make something useful out of them, building a work of art without using my hands directly, so to speak. I like working with others, knowing everything about every part of a project, and contributing in a specific direction. The client I’m currently working with makes vegan and vegetarian food; the chefs here run the kitchen and develop recipes that avoid meat, trying to show that the absence of it still results in a good dish.
Their clients subscribe to the app I’m maintaining, and they get pre-made meals for three days, all vegan. There are many ideas involved with this project, like showing how much CO2 is being saved by avoiding the consumption of meat. I like it because, beyond the food, it tries to show the individual impact we have, and it even changed my conception of vegan and vegetarianism, which has changed since I work here and now I want to do my part.
The road here wasn’t a straight line. I originally studied Art and Digital Animation, because even though I always had some affinity for STEM stuff, I also liked creativity, drawing, and graphic design, but I didn’t want to go completely in that direction. So I tried something that had a bit of everything, but I ended up realizing that I liked it a lot, but maybe I wasn’t as good at it.
At some point, I started developing web pages with a friend that wasn’t very good at programming, but skilled at designing, so we started taking freelance jobs where I did the technical stuff and she did the visual part of the project.
That is how I ended up pursuing a Master’s degree in Software Development because I found it the best way to keep in touch with both worlds. I’m a developer, and I like having an opinion on everything visually going on during a project; when doing a website, I like to make sure everything lines up, looks good and works well. Even if I don’t consider myself the best designer, I like to pay attention to the details of it by programming.
For a degree like this, a proportion of 30% women does not sound like a lot, but it is, even if women are the most prone to abandon it before finishing. In Digital Design it was more balanced, around 50/50 or so, but here it was a noticeable difference. I think this ratio holds in most engineering careers, and in our culture at least, more women go for careers in Humanities like Arts or Social Studies, and a lot less in STEM.
My dad was a teacher, and he always raised us close to the sciences, so it wasn’t an issue for me, but my parents did prevent me from trying things like sports, especially soccer. I mean, I still don’t play it, but I also never had the opportunity, even if my dad somehow planted the seeds of interest in sciences like math.
As a female developer, though, I have never felt out of place or made feel less, although I’ve never worked full time in Mexico. I currently live in Denmark, and so far I have been the only woman in the Tech team of both companies I have worked at.
There were more women at school, that’s for sure, but right now we are fifteen people in the Development department, and to be honest, I like it that way. A lot of owners and entrepreneurs are feeling the pressure of attracting women to close the gap between male and female developers, so it has been easy for me so far to find a place to work. Being a woman in this industry is an advantage some of the time. There’s nothing to be intimidated by.
It’s even funny sometimes. At work parties, I’m the only one trying to dress well and use make-up, and my friends like to joke about it, saying that my job is making sure everything looks great, so of course, I do those things.
That being said, it’s curious to notice that, at companies like Scio for example, most women tend to gravitate towards analytical and QA stuff. I wonder why that is. I’ve never met another woman doing Test Automation or things like that; last year a girl started working with us in Full-Stack but doing Data Analytics, and everyone else has always been men.
It’s something I talk about a lot. I have many friends dedicated to Humanities, and we always discuss the differences between our fields; in the case of one of them, her office is almost purely women, with one or two guys here and there. I guess there are many reasons for it, and I have wondered before why it’s so important to close gaps in certain areas.
I don’t see a field dominated by either gender as something inherently wrong, if these differences were dictated by more biological, natural affinities, like women being more social or men being more analytic. But when those exclusions are cultural when we try to separate genders from childhood by allowing kids to play with certain toys only, we are creating inequality, and something should be done about it. And this is a change that we are not going to see in the next year or two, but it will take maybe an entire generation to change these points of view.
Now, in the actual job, do these differences matter? Maybe I have different aesthetic sensibilities and ideas of how things should look, so I can tell my coworkers an application needs, but I’m not sure that’s because I’m a woman, or because I have a background in Design. Who knows?
Being a developer has also brought other advantages for me. I have a son currently four years old, and working in software gave me a lot of leeways to define my schedules and limits, define my own way to work, and leave enough time for my family. I feel like I’m more productive, with better control of my time, and applying a developer point of view to raising my kid, where I accomplish big things by dividing it into smaller tasks, finishing each, and going from there, has helped me a lot.
Also, I’m used to staying up very late at night, so being a developer has also helped me a lot with that. Working in software, then, is very freeing and flexible, and I’m glad I could do it even before I was a mom. I don’t have to go to the office all the time, I can get along anywhere and the pay is not bad at all, so my quality of life is something I’m really happy about.
There are multiple methodologies that can be applied during software development, and one of the most popular is the concept of Agile software development. In an Agile environment, applications can be created through the implementation of individualized steps, with each one working toward a common goal. And while Agile methodologies (Scrum and Kanban, just to mention a few) have many benefits for developers, they are also advantageous for clients as well. Here are several ways that Agile development helps clients:
Perhaps the foremost benefit of using Agile software development methodologies is the ability to keep the customer involved in every facet of the project. Commonly, Agile development progresses in stages known as Sprints, and it is after the completion of each Sprint where both developers and clients can make assessments and implement changes. This helps to promote a fluid exchange of information leading to an increase in project transparency. In addition, the fact that each Sprint represents a small piece of the development cycle means that clients can be frequently updated on the progress of the application.
It is not uncommon for a client’s needs to change during the development process, and with an Agile environment, these changes are relatively simple. While there is usually a formal plan as to how the finalized application will function, by building it in individualized steps, clients are able to refine specific functionalities while the software is still being created. In this way, these updates can be put to use during the next Sprint, after which the results can be retested to ensure client satisfaction.
Software development can be costly, and in many cases, these costs can fluctuate significantly as programming obstacles are encountered. However, through the use of Agile methodologies, developers have the ability to more accurately predict the costs that will be incurred throughout the process. This predictability comes from the fixed duration of the Sprints that separate each development phase. By knowing exactly how long a phase will take to complete and the amount of work that will be required, developers and clients will be aware of the costs before the next Sprint begins.
The Agile development process allows clients to set their own goals for the project and this can help the development team better understand the specific needs of the client. Through this added level of understanding, programmers and developers will be able to make recommendations to the client which could have a positive effect on the final application.
In Summary: Agile Development is…
When it comes to meeting the needs of the customer, Agile software development offers many advantages to the more standardized ways of building applications. Through Agile development, programmers and clients can easily engage and collaborate throughout each phase of the project, and this level of transparency helps to ensure that all team members are working toward a single goal. In addition, by breaking the development process into stages there is a greater ability to predict the costs that will be involved in the creation of the application. Furthermore, Agile phases, known as Sprints, allow for coders to make adaptations even as the software is being developed. Remember to keep these points in mind when looking for hiring a software development company.
Looking for a partner to build an app?
If you search on the Internet for “agile project initiation” you are going to find a LOT of templates. People want structure and easy answers, so of course, these simple answers rise to the top of every search. Many (if not most) of the templates offered are pared-down formats from the Project Management Book of Knowledge (PMBOK) Project Initiation Documents (PID). There is nothing basically wrong with the idea of using templates or most of the templates offered, except – they tend to become prescriptive when they should be taken as guidance.
From the Agile Manifesto: “…we have come to value:
Working software over comprehensive documentation,”
With that in mind, we should ask – why do we document agile projects? Often, the answer is – because it is required (by someone) when in reality the answer should be – to communicate. But again, that simple answer fails to guide us to the necessary outcome:
- Documentation should be a natural part of agile project initiation, but not the goal. It should proceed from on-going discussions between stakeholders, the product owner and the development team that is developed in Sprint 0, but it must not end there. The conversations and the documentation of outcomes must continue through the lifecycle of the project and the product.
Initial documentation is just a strawman
Documents gathered from product owners and key stakeholders are starting points, not final documents. Documents developed by a designated team member to fill out a template are strawmen to be examined, discussed, questioned, and used as a base for the ongoing development of understanding within the entire project team.
- Living documentation formats should be preferred over static. In smaller projects, it may not be necessary to manage documentation formally, but in most cases using the same concepts as those used for source code management is a valid guideline. Properly maintained, living documentation answers the questions, “when was this decision made? by whom?” and gives a revision history that tells the story when necessary, but only makes it apparent when needed. It needs to include simple artifacts of these discussions – photographs of whiteboards, screenshots of modified mockups, etc. – in preference to notes developed after the fact and out of the sight of the team.
- During Sprint 0, the aim must be to develop enough trust among the project team members to allow questions and dialog to form the base for a common understanding of those items that are included in most PID templates. If initial documentation is “handed down from on high” to team members without open, trusting discussion – it cannot be internalized by the team and it will not respond to the inevitable changes that will come as discovery and learning continue throughout the project. Agile software development embraces change by allowing the project team to recognize the inconsistencies and discoveries that will come out during development, surface them and deal with their impact through discussion and collaborative negotiation.
And before we get too far away from it – there are some really strong ideas in the Agile Modeling page on Agile/Lean Documentation. Honestly, though, there is a lot of information in that reference that should really be digested as a part of understanding agile, not as a guideline for a new project. For that purpose, this short piece is a better resource. But, if the outcome of project initiation is not a bunch of filled out PID templates that we can all take back to our cubicles and file away – What is it?
Agile Project Initiation is All About Communication
With the ideas we have mentioned in mind, we have to acknowledge that open, trusting, collaborative communication does not happen automatically in an agile project team. There are natural stages that every group will go through before they can have the kind open discussion needed without fearing it will harm relationships and respect. Discussions need to be wider than the project infrastructure, technology, and user stories, without the feeling an individual is stepping over the boundaries by asking about non-functional issues. We might need to know:
- Does the culture and background of key user profiles matter to the software development team?
- Does the role of key subject matter experts (SMEs) in product development for an organization make a difference to who needs to be included in discussions?
- Are we using a Lean Product Development model with the inclusion of stakeholder users as part of Minimum Viable Product (MVP) development?
- If we are working in a DevOps implementation, how does that change our standard production procedures?
There are all sorts of questions that are not (and cannot be) included in standard PID templates but could be critical to a specific project. If we don’t discuss our viewpoints and ask questions, we run the risk of assuming we have a common understanding and making decisions based on those assumptions. Every project, every team, every organization is different. In the best case, we can open ourselves up to collaborative discussion by getting the team together, face-to-face during project initiation, for dialog and team building using team games and facilitation with a bias to being productive, explorative, and fun. Using these techniques, we can strengthen the bonds and shared risks necessary to maintain a successful project throughout its lifecycle.
In cases where face-to-face project initiation is not possible (hopefully more rare than the rule), much can be accomplished with video/voice meetings if they are relatively short and like agile documentation, structured just enough to ensure the meetings reach necessary outcomes and allow for continued direct discussions among stakeholders in the team when needed. There is nothing much worse than sitting in a meeting where a long, passionate discussion between two team members seems to be sucking all the air out of the room – and the meeting outcomes are lost.
This piece is relatively short and again, more of a guideline than a prescription for agile project initiation, as it should be if we are to “eat our own dog food.” Bottom line:
- Don’t be afraid to pull out a template when you start your next project, or when you look at it – crumple it up and throw it away so you can start your own list based on what you know and don’t know.
- What you think you know or don’t know are assumptions and should be treated as such both during project initiation and throughout the project. Only a discussion with open questions between team members can validate ideas and give us a basis for moving forward. And the assumption that is understood as valid today may not be completely correct at another time.
- Documentation must be limited to what is necessary when it is necessary and maintained throughout the project as living knowledge. Agile documentation should not be the domain of one person or one role. It must be available and dynamic – allowing everyone on the team to contribute when necessary – in a wiki-style rather than as a bunch of locked Word documents.
- Agile project initiation should focus on both the productive side – bringing together the information needed to organize the project, initialize environments, and the functional user stories needed, as well as the people/team side – developing the understanding, trust, and communication necessary to work collaboratively throughout the project. Ignoring either side is perilous. Assuming the job is done at the end of Sprint 0 is fatal.
Scio is a vendor of agile, nearshore services for software development projects with our customer base in North America. We can provide project-based or dedicated teams as required for each situation. We would be glad to discuss how our broad base of experience and skills could help you be successful with your next project. Contact us for more information.