Lessons I learned on development
| Tags: programming
I was on a trip to Barcelona back from Christmas holidays, and decided to run this meme on Twitter to have fun during the train ride.
A long and boring train trip ahead… meme time! 1 like = 1 lesson (on development) I learned.
— Belén (@ladybenko) January 1, 2017
A lot of people have told me that they found the bits of information really useful, so I decided to compile them on a list here, classified in categories.
On tools
- I should have learned Vim way sooner. Both Vim and Emacs allow you to edit text faster, with fewer keystrokes. This means more productivity and fewer injuries.
- Version control >>> everything, even for small, solo projects. Being able to roll back, have an online backup and sync with your teammates is a wonderful thing.
- Automation is amazing, but you don’t need to automate everything from the beginning.
- Don’t start a new project with a long process/build pipeline. You can add Gulp, Sass, concatenation, mini faction, etc. later as you need it.
- You don’t need a CSS framework. Read this article.
- Git’s
rebase
is your friend. A clean git history is a blessing. - Usually, the best development tools work in the terminal, even for front-end development. It’s crucial to be comfortable with it!
- Setting the font size in your editor to a ridiculous size (> 24 pt) helps greatly with tired eyes.
- It is impossible to keep up with all the shiny new stuff in front-end. Keep on learning, but pick your battles.
- Do mind your furniture! You can work with a slow machine, but you can not work with an injury in your wrists or back.
On coding
- Typing
else
in a new line makes the whole if-structure easier to modify afterwards. I.e.:
if (cond) {
// ...
} else {
// ...
}
- Taking pride in what you do is a good thing. But your code
!=
you. Being attached to code makes refactor and collaboration harder. - When reviewing a pull request, it is kinder to use words that address the code, not the person. For instance: “this part could” instead of “your function could”.
- But do praise the person about what you find good in a pull request.
- Even then, some people will take personally comments about their code. It is hard.
- I have done game development, mobile development, front-end and back-end. I find that the hardest one –for me– is front-end.
- It is easier to code if you don’t try to get it perfect from the start. Make it work, and then make it nice.
- The ternary operator can increase readability.
- Readability does not necessarily imply more lines of code.
- Knowing C is vital to understand the basics of memory management.
- The Pomodoro technique works wonders for me to stay focused.
- Nasty bug? Don’t panic. Breathe. Get your developer tools and you will catch it.
- Ruby has spoiled me forever. Maybe you should get spoiled too.
- Refactors are a natural in development. It doesn’t mean you didn’t get it right from the start –you probably got it right with the info and knowledge you had at that time.
- HTML and CSS code is code and should be treated as such (refactors, reviews, etc.).
- Coding in JavaScript is not a nightmare.
- Functional programming will change the way you think. It is worth to learn it, even if you are not currently working with a functional language.
!important
is the root of all Evil. Avoid it like the plague.- Making your own compiler is fun.
On game development
- You are not a lesser game developer if you use Game Maker or a similar authoring tool. What matters is the games you release.
- Ludum Dare is the best thing ever.
- The games industry offers a much lower quality of living than other sectors in tech.
- The games industry is also way more hostile towards women than other sectors in tech.
- As much as I would love it, if I make a game I cannot make an engine. I have to choose.
- If I want my games to be played by as many people as possible, HTML5 is the way to go.
- Game development is not something mystic or unattainable.
- If you pick up a game development book and a “clean/beautiful code” one, you will find contradicting advice. It is OK, there are no silver bullets.
- Finite State Machines and Graphs are simple, easy-to-implement constructs that you can use for a ton of things in game development.
- Rule of gold of game development: if you can fake it, then fake it.
- For example: multiple-choice dialogues that have no different consequences or responses. Most people will only play your game once and will not notice.
On the profession
- My first jobs have been extremely important in shaping my career.
- LAS COSAS BIEN HECHAS SON COSAS HECHAS. Esto grabado a fuego. Gracias a Ernesto por decírmelo.
- Meritocracy does not exist, and this belief only benefits the privileged.
- Despite the so-called “hacker ethic” I am not judged exclusively by my code or skills.
- Being surrounded by smart people who have supported me has had more impact on my career than working with a particular tech or language.
- Being an immigrant has helped me tremendously, both at professional and personal levels. I have grown faster than if I stayed. Thanks, UK.
- There are excellent developers who don’t have pet projects or OSS contributions.
- Being able to contribute to OSS is a privilege.
- There are things that are not coding that will make you a better developer: exercise, foreign languages, art, playing an instrument…
- If a team doesn’t allow you to grow, you need a new one.
- Public speaking is a skill I can develop despite being an introvert.
- And I can deliver talks in English, despite it being my third language!
- Speak with other developers around you. Discuss your approach to solving a particular problem. Even if the other developers belong to a different team or work with a different technology.
- “Holy wars” (tabs vs spaces, Vim vs Emacs, etc.) are pointless.
- Being well-actually’ed in virtually everything I say sucks.
- A subscription to Safari Books is heaven.
- If your current job does not provide you with resources to learn (time, conference tickets, books, etc.), you need a new one.
- Life pretending to be “one of the guys” is easier, but definitely not worth it.
- Trans developers are one of the most oppressed collectives in the industry, and they are my heroes.
- Looking down to other developers because of the language or tech they use is extremely stupid.
- Your “genius” code is not a free pass to be a jerk. We shouldn’t idolise toxic people.
- If somebody is directly profiting from your work (for instance, an internship), don’t work for free.
- It is very hard to be a woman in this industry –and it shouldn’t be.
- We do have a lot of undervalued talent in Spain.
- Self-education is neither better nor worse than a college degree.
- A degree, a master’s and more than seven years of work experience, and men would still insist on explaining basic programming concepts to me.
- It is better to have good working conditions (competitive compensation, flexible time, etc.) than free beer on Fridays and a foosball table.
- No one should be yelled at in a meeting.
- I found out the hard way that vitamin D is crucial to get things done. Do get some sunshine at peak hours (i.e. noon).
- Requiring OSS contributions or a Github account to apply for a job is wrong. Read this article.
- Don’t look down at other professions. Don’t forget that we are changing pixels on a screen. Read this comic.
- Sexism exists in the industry, and we are not working hard enough to eradicate it.
- A good team is priceless.
- Setting weekly goals helps me a lot in managing my time autonomously.
- Help your fellow developers to get out a toxic job. Encourage them, offer to simulate interviews, review their code, etc.
- But do not pressure them if they don’t want to leave their job right now. They know best their circumstances, and switching jobs can be very stressful.
- You might have to consider moving to a different city or country to get a better job. It can be hard, and there are no right answers.