Abouttrying to find a meaning in life even tho everything is meaningless, a reason to be happy even tho every choice is painful, a reason to care even tho nothing matters and a motivation to do even tho everything is tough and boring
Joined devRant on 7/11/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
So.. when i joined this company an year ago, the module that i was working on was a total mess. And the only dev with more than 50% knowledge of that module was serving a 30 day notice period. AND i was a total newb, fresh out of college guy for an engineer. AND I was unaware of all this (because meesa fresher/naive dev)
And when this guy left i was in total panic. the management had tons of tickets for this module, there was no single source of information and i would ping a lot of people to get their end of information regarding what was going on, the apis on web , ios, other teams, interacting with the designers, discussing with QAs, PMs,Tech leads etc
And here we are today. I am still a junior dev, but have the most knowledge of this module. Everyone comes to me to ask how this stuff is working weather a change will work or break the system, what are the apis specific for web/ios/general(even though am an android dev), how to test ,... etc
So i must be in a cool position, right? well I am not sure. company is expanding, hiring more devs. I should be raised to a senior position, but rather an even more senior, tech lead position dev is hired who will be "leading" the module that am working on. and i am being shifted to a new stream(i don't know which stream exactly). So.... what is this??
I am somewhat fine with it, I myself had requested the tech lead to provide me an opportunity to work on android components like camera, video player etc which our stream does not have.
This was after 3 months of handling my stream's code , but now its almost an year. it feels weird that some guy is gonna come and start working on my code, and that too on a senior position... I write awesome code, there are rarely 1-2 bugs when i provide a dev build and just 1 minor bug came in last 10 months on production that too got fixed asap. Now i wish i could stay in the relaxed environment that i myself created in this stream , but on a senior position...
What do you guys suggest??
on an unrelated note, i have a question . I am also working on a mobile app for an ngo which has a very clumsy website. Its written in wordpress, they have a single dev who maintains the whole FE/BE/ whatever wordpress has and i started making an app for it. I checked wordpress via there docs a bit, and was able to extract out some apis, but getting a json out of their various plugins is confusing the fuck out of me. bear in mind that am an android dev with almost no knowledge of the web world, those html, css, js, stuff. however i do know a little bit of php syntax , and i guess that would be needed here.
So any guidance on what to learn/look into , to understand the working of wordpress and make some apis from wordpress that would provide me jsons of user data that wordpress plugins are using/generating???5
you know , i have been pushed so many times to just get up and run . i was like, so satisfied with my average marks, like yeah , this is the maximum i can achieve, if the reward is not in my limits , then so be it.
- here's my 65% marks, i can't get a good college? fine I won't study. this is my max education.
- i am staying in college for 9 hours each day, 6 days a week. I can't do anything else
- i did this course. i was the last one to complete it. cs is not my cup pf tea. i am not doing any more courses.
- i have a job. this is the best job i have , with minimal pressure. i am like a worker bee, get all the directions and just implement whatever is asked. it pays ok, i am staying here.
these are all some dumb staybacks, but i don't know what to say. this was me... if tou have seen the number of 70/100 or 20/50s or rank 40/60s that i have seen, you might as well stop giving a fuck about running and aiming for the top. life treats the people passing just above the line as also okish
I don't know , but i have a holy motivated of a mother alongside me. that crazy goddess lady wanted to see his son succeed z so she kinda dragged me and pushed me so hard , that i was able to reach the last point , somehow.
i joined a tier 3 college, was getting the low grades , but got out of the comfort zone and started taking some courses on weekends and then in weekdays too.
took the first one , passed barely, and again got pushed to take another. this time again passed barely, but the second course grabbed my interest a little bit. so did it for some more time until it became the only thing i knew, after college.
after college i had a job, and from that point to now, that's the story. my mom again wants me to rhink of options to grow , but i can't seem to think one. i am in so much deep shit3
is there anyway for me to not get bothered by the fact that my team mates know that i have no task / work in hand ? as per development cycle, dev has 10 story points = 5 days . after that it is going to get tested for next 5 days and after that new sprint starts and this goes on .
i have given my work in first 5 days. now if testers don't come up with bugs, then i technically doing nothing. i love doing nothing.
but everyday i have to give status on standup that what i am working upon and nothing is a suspicious answer :/9
the logic is simple, really . if any 3 letter abbreviation makes sense as a 3 letter english word in pronunciation, then say it as that word, otherwise USE THE DAMN ABBREVIATION . My ears feel like bleeding whenever i hear someone say "sequel" . ITS ESSS-Queue-ELLL !! You don't call JVM as "Javam" or AWS as "awwwwwsss" . you cal ELM files as "elm" because that sounds like a 3 letter word. "sequel" is like S,Q and L got drunk and are now vomiting on each other16
anybody here from uber? am just curious how did uber got such a respected name in the android community? They are usually next to google itself in terms of android , like i would have read multiple articles citing "giants like uber , google and netflix were using this.." , or "we have 100s of engineers at uber working on android app" like , i can understand a company having 100s of engineers, but they can't all be 100s of android devs, right? our company has 11 android devs and we are managing 3 apps. uber has 7 android apps, how much more people will that scale require?8
another life lesson... not even (forced) timeoffs and (fake) journeys are enough to undo the damage done by burnouts and shitty lifestyle.
and if you are a loner , sad and hopeless virgin nerd like me with no (real/fake) friends or (fake/real) social life, think twice before ever over pressurising yourself... life is shitty already, don't become a tool for other's rewards and success by sidelining yourself
i think i will be completing this rant later in comments on this thread, if my current state of anger and dismay remains for the rest of my so called 'hill station trip' too.. currently am like a grinch who seems to hate everything, his life , his social life ,his creators, his work and you fuckers for how much i envy your happiness.
q1) if you had a weekend away from your work life, what would you do ?
q2) if you had 6 months away from your work life, what would you do?
for both questions , assume that you have a constant source of income, and usual incoming/outgoing cashflow(i e if you were earning $10/per month and spending $6/month , then its still happening the same) . everything is same except you have 8-9 free hours everyday
I just wanted to know/ get inspired by your thoughts on what are your wishes for a hypothetical free time and why9
i have realised something .... i start my work at 9.30 am in the morning and end at 7 pm in the evening. in between that , am just looking at either my code, slack or chrome, and nothing else. even when free, i would repeatedly do that. even after 7 , i might switch off my slack bur still keep doing the same routine.
i feel so messed up, like a remote work is more exhausting than an in office work. You guys doing the same thing? neither living some out of the laptop life , nor learning anything else just code and meetings all day?6
so last few months in my life have been ... shitty
last year , when i finished my college exams, i took a decision to join a startup instead of going into a typical Indian service based company with the following thoughts:
- "service based companies suck. they pay pennies and will make me work from remote places , pay me pennies and work on weekends/over time"
- "startups are great . they pay a lot , will give me a domain of my interest and i will have a lot of leaves on my hand . plus good opportunity to grow/ reach better companies"
- "i am already netter than a lot of my peers due to my past experience/knowledge of mobile dev"
and i was correct to some extent, but am not sure. most of my colleagues who were good in their fields got into product based companies, (although paying not much better than those of service based) and for those who couldn't, they also seems to have worked on tools, and skills to switch after 8-10 months and go into even better companies. like one of my friend is joining aws next month.
on a different note... one of my homie , who was already earning in 7 zeroes inr, told me that he got an increase of almost double . well, good for him.
and then there's me, who went into product based with hopes of getting better at my skills, earning a decent amount and getting enough sleep to have a healthy routine, but what am currently getting is :
1. somewhat amount of learning. i have grown from writing mobile apps for fun to writing bug free mobile apps that scale. but here am being used to fulfil the only requirement of just the api integrations and creating new, non challenging UI. i am yet to make some code that i could be proud of , if i evern joined a faang.
2. peanuts salary. its not as horrible as those Mass hiring mncs... but not too good either to match the salaries of what my friends are getting
3. too much load of dragging the people... i gave build to testers to test, but i am the only person trying to explain them how to test... i am the loud guy asking questions and letting pms know how a requirement is incomplete. whenever the lead wants to lick higher mgmt's ass, he would come to me to implement some new unknown tasks quickly so he could ship a lot of tasks under his name. i simply can't say him no because as per flow, i would be free in the 2nd weekend of sprint ( and i am , but because i gave some extra hours on weekends. i am usually like, the giy who would eat all the veggies first so as to savour the bbread sauce and cheese of the pizza).
we would also pick some very big tasks because he has been a developer himself and he does very good discussions on how we can achieve it. but like,... why?
4. anyways i would usually like to do simple , repeatitive and sometimes exhausting work... but other times it would hit me... i am not fucking living... i should be working on interesting, but short tasks so i have more time to dabble with concepts and tools that would add into my skillset. i should be doing more non tech hobbies, bath more , go out more, learn to drive, go for outing , spend time with family, but i am just... all day, i front of laptop
you know...last time this hit me , was 2 days ago..... and since then i have been making up my mind to take timeoff... i have told my lead that i will not be available from 5th to 9th so technically my leaves start from 3rd and I have a whole 10 days to myself.
but I can't decide what to do... i thought that everything was so exhausting before... so am gonna go for a trip to hill station or pilgrimage for 2-3 days...
but then it hit me again... i am a fucking meak-shit... I don't have any bone head friends (unlike me) who will mindlessly go anywhere i wanna go. so after rejection on their end, i asked my dad tomake a me-dad trip.. and he also seems to be not very good with this... actually we don't really go out. plus am not sure what activities could i do with my "dad". plus their concerns for covid, money, "whats too good about this journey ? we have gardens in our (shitty) metropolitan city"-mindset
so currently stressed about something that should be technically relieving my stress.
i feel like I won't have anything to do and rather should celebrate my death-- day at home only and join office again the nect day -_-1
my job and morning stand-up sucks so much... i wish to explore various technologies, get better at my own skills and look gor better jobs / do competitive coding. But that one bloody question : " please provide your status for yesterday and what do you plan on doing today" this kills me so much. if i told that am free , they are going to give me some unrelated random work, or ask me to help someone else... wtf man... i did my job of making the code and the tickets assigned onto me. why am i supposed to other people's shit too???8
and again the guy who's working till 12 am, who's getting all the drop shit from everyone else, is suddenly blamed for not working correctly and causing the delay . well played boys2
welcome to stupid sprint management class 101.
annotations >> Stream Lead : SL , DevJesus :Dj , Other Dev : OD
SL: Hey guys this sprint is going to be have a complicated task .we are integrating a new type of payment system and all the flows are changetting a revamp , ui wise as well as apiswise. There are going to be 6 screens for this screen. Dj, you take the old 3 screens where you will be making modifications . OD , you take the new 3 screens where you will be making the new UI. both of you will be adding changes to old apis as well as add new apis. We will also be needing another sprint to finish the modifications because this task is so much big.
Dj and Od : Cool
*takes 2 days to understand all the old changes*
*takes 1 day to understand new changes/requirements*
*has to start, but still no apis. so starts with assumptions, and mock jsons he created on its own*
*meanwhile keeps on asking new questions everyday ,making pms , BE and other people realise the missed points*
*able to deliver everything by day 10 with minor things left as BE also provided all the apis iteratively till day 5-8 and still has to provide an additional api*
*No discussions in daily standups. everytime status: "Yeah am on it" *
*On Day 8 : "Yeah am blocked by BE since BE Hasn't provided the api for my screen. I am also blocked since Dj hasn't finished their screens yet and am dependent on data from his screens"
SD : "So have you completed the ui of your screen"
Dj: "Ummm... yeahhhh sure, i made by ui. but since i had no data, i could not test"
SL :"welcome to new sprint discussion everyone. we have 4 more screens that SD is supposed to make. and Dj will be improving the code quality, fixing bugs for his screen if anything occurs , and finisihing integration of the api that is still missing"
Day 13 :
SL : "Hey Dj, since OD is still working on his screens from last sprint, can you take 3 of his new screens and integrate them?"
WTF. Like yeah i did my work slowly, but steadily and honestly. OD must have some issue for which he could not do, but why am I supposed to get fucked by more work when someone else is slacking. and its not like i had already finished my work. Your stupid BE hasn't provided the api that is still responsible for 2 of my screens, you need me to make 3 more screens?
You know i hate those organisations, which are counting the hours of each devs life. like yeah , this guy is going to be free this weekend and therefore getting free salary from us. lets just give him some work from other people too.
This is a culture which would make you an evil person even if you don't want to. i would usually sit for even 12-15 hours with my code, on weekends and in my free time too, but lately am not doing that because of the tasks, but rather because of the sheer amount of work that is coming , and the sheer amount of dirty hacky code that i have to interact with everyday. if they give me some moments to breathe, then can i only make it more optimised, scalable and easy to work with and even learn more stuff to improve it. but nope. lets just fuck the dJ1
ugh can anyone help me understand how the modules ,build src and other magic of android's gradle world works?
My company uses such a magical architecture where we add 1 line in some kotlin object and we have a library support in our app, all the build. gradle related stuff are in one dependencies.kt file, various modules will have scoped access to various other modules and their are so many layers.
i have learned to duplicate and add similar content to this architecture, but could not get to replicate it without blindly copy pasting ( and still not getting it to work).
Here are some of my(basic) requirements:
1. all dependenices and app related info are present in on file
2. some feature 'base' would have common extensions and abstract classes, accessible by all the features
3. some feature 'network' will have api and data drivers / dtos , accessible by all the features
4. feature would have ui and ui related models, layouts etc. feat 1 cannot access feat 2 resources
5 app will be the feature which can access all other modules
how should i go about this? any help?
i feel so much caught up by my work . I feel like just to learn *anything* in depth, i would have to leave my job and then take some time to learn. even the things am implementing in the company's product code.
i am a guy , who, in paper is an "android dev" : the guy who is supposed to make android screens and buttons for whatever he's told to .
nothing to boast about
- i am given a basic wireframe in figma , have to discuss with pm and stream lead regarding how what the screen is , how its supposed to behave , where shall we getting the data for this, telling the backend what exactly i want for the stream , amd all the while giving estimates for the tasks.
- i also see a significant part of tools ( remote config keys) are moved to respective environments (dev/stg/prod)
- the testers are stupid and can't test without me sitting and explaining every thing i added in the build. when they see something wrong , they just take a screenshot and go mum, i have to ask for replication steps, request/response , and whole lot of stuff
- while our dev cycle moves forward , the pressure to get everything done from my end and moved to staging /prod increases. at this stage our pms suddenly realises that our product is a multi lingual product and we need to provide the translations/ copywriting to our devs too. and also since we are so called "data driven" (aka user spying), we need to add events for various user clicks
- meanwhile my laptop cries whenever i try to build my code nd test something and for 40mins to 3-4 hours get wasted like this already
- also, at the same time i am supposed to provide kt to every other team implementing a similar feature : ios/web/other android product ... so meets meets meets all the way
and thus, here i am, your friendly neighborhood "android dev" , with nothing to boast about :/3
aaagh am so sick of my dumb fuck of macbook. shit is hell slow. i need to get dast paced, make multiple builds for testing various flows , run android studio emulator , reply to slack chats , take meetings and cry myself to sleep. this shithole only helps achieving the last .
opinions on buying a pc? am thinking of buying atleast 32gb ram ssd based pc with 10th /11th/whatever generation i-whatever intel/amd processor. I don't know much about PCs, but with the specs a pc could have , can i get atleast 2-5 minutes android app builds?9
does your company follow sandwich leave policy? don't you find this exploitive?
i have recently found out about this term and concept. for those who don't know , sandwich leave policy is thet if you have sat-sun as weekends and take leave on friday, it will be counted as 3 days leave instead of 1 . like wtf??? i wanted an early weekend, so i took it . why tf does it be counted as 3 days from my salary? this policy dates back from the days of factory labour and is usually applied by today's IT companies too.
i am not sure if my company follows this during these times of remote work, but this really is a shitty policy and goes alongside "spyware in office laptop" policy, in my books :/13
for #android dev people
are you using all of the override-able methods of activity/fragment ? What are some uncommon activity/fragment lifecycle methods that apps normally don't use but are very crucial for specific bug fixes ?
I have seen that most of our acrchitecture revolves around using onCreate only. i would rarely override more than 4/5 methods, but android lifecycle provides over 200 override methods and if we include the context functions, the number would jump to 1000+
ugh. what should i do to relieve from the office stress after working continuously for so many weeks?? Idk about you guys, but i have never been the one with the attendance or punctuality. why go to school by waking at 6 , when you can study at home? why goto college , when you can study the whole semester syllabus one night before the exam? yeah am that guy.
and now it's pandemic. the beauty of working from home , without going anywhere. i was kinda liking it, but then it is starting to go out of control. now we are working from home and there's no clear division b/w when's the working going on and when's the relaxation.
i just wanna take some time out , not touch the mobile or the laptop or the slack for a few days and enjoy some reality/nature. But again the fucking pandemic. can't go out , can't breathe any air , can't fuck myself off. plus my family is micro, just mom dad and me, and those guys just don't want to go outside anywhere.
wish i had a car, i might would have just gone out to relieve some steam. do any of you guys do driving and coding stuff? like going out in your car for a week to a different city or beach, along with your laptop and coding from there? i kinda want to do that1
a regular reminder to myself that :
- am working in a field that was my passion for last 3 years
- am not liking it much now
- am a fucking junior getting a junior's salary
- everyone on my LinkedIn feed is going into fang or earning big shits
- everyone is an expert in ai, webdev, wizardry , witch craft, bitcoins, finances and other shit on the internet
- there's are jobs out there in a better startups/mncs but i don't feel like having the balls to apply, like what if they turn out to be worse than my current startup(in terms of work/ethics/ knowledge level required)
- i need to do something to get my salary doubled. its peanuts12
there's one irritating procedure that is very frustrating to me , in terms of our version control.
my code gets merged in the production in the following manner :
- i raise a pr to A's branch ( A: senior dev) and get it merged
- A raise pr to dev branch and get it merged
-dev branch is merged to staging
- staging gets merged to prod
but in the next sprint whenever i will go back to those files and check git history via annotate in idea, it will show A's name on all the code I wrote!!
it feels as if someone is taking the credit off me , since A and I are representing the main team responsible for making android features in our department.
this time i will be having 20k line changes and that guy will be sending 2k line changes, but next time i see my files, it will be A's name all over :/
should i raise this concern? i want some damn credit in the company5
I wish to grow as a professional engineer, in terms of money . Any suggestions?
i feel like i have hit the bar of where i could go with my current knowledge: my current knowledge is that of a freshly graduated college guy who started making small android apps 3/3.5 years ago. now i know well about how android apps work on the surface, and my knowledge has gotten me a job as a junior Android dev.
My daily work revolves around not knowing android in deep, but rather making robust screens and layouts that won't break for a product that has some million installs and is updated biweekly.
It feels nice to be part of a big product and a relaxed environment like this, even saying this out loud feels like being a big man. but i don't like my salary and kinda want to grow .
I have heard some big numbers in this industry ( even peers of my same age but in different domain are earning twice as me) and i kinda want to do what my seniors, pms, CTOs etc are doing to get the salary that they are getting.
So any tips/directions on how to grow in this industry? Sorry had to make money as the motivation factor, but i don't know what else could be.
(the passion to make products/learn more about android got me here as a droid dev, what's the passion for senior devs/tech leads/engineering managers?)24
There's something about this profession that I can't seem to understand. i don't know what and I don't know why, but i do know that tech is not a happy profession to be. if after getting all the money you would feel you rightly deserve, even after tons of extra hours you would just give in passion, there are full chances that :
- they won't appreciate your hardwork
- they won't find it satisfactory
- they would insult you for your mistakes
- they would laugh at your work
- they could replace you in less than 4 days of your quitting
and this here, ladies and gentlemen, is your definition of a tech professional, a "s/w" developer.
i have got a train of thoughts that i went to , after a small incident this morning, but after going through those roller coaster of emotions, I don't feel like going through it again. maybe next time.3
for week 259 : that irritating QA who can't even test events without me explaining him. goddamn, you have a doc file in front of you explaining what that event name is, how its gonna fire and what data it will have. you also have a goddamn console open in front of you, check it and fuck it.
Its not just the events, for every damn ticket he needs a babysitting. He sometimes catch up good bugs, but most of the times those bugs are either data related bugs or not my bugs at all.
and his bug report : a fucking screenshot. dude, i can see the image, i myself coded it but tell me what the fuck is wrong with it?? for very obvious, visual bugs i can understand from the image and kinda appreciate your sarcasm , but you loose your right to be cool when you made 10 useless bugs 5mins ago. write the fucking description!!
in other news how do you deal with abrupt timings and availability of people whom you are dependent upon for tasks ? Currently some cultural festival is going on for some folks and most of our team mates are permanently gone for 2-3 hours in the evening. most of them are available after that, but then my working hours are kinda over (I don't usually have strict working hours, but i am usually sitting in front of laptop for 10am-7pm) and i need some relaxation after that. now am dependent on 3 of those guys and can't write a line of useful code without them :/
so ,i am getting confused in here regarding coroutines( the kotlin one)
synchronous calling :
"lets call api.fetchData() and wait until it returns data, then only we are gonna run the next line".
callback/async calling : "here's a bunch of lines that needs to be called after api.fetchData(). lets create a thread and move along, while passing the bunch of lines and api.fetchData() call. It doesn't matter weather the parent is alive or not, thread is gonna execute and then run those bunch of lines.
coroutines : " we know that api.fetchData() is gonna take 2-3 secs. so lets fire a coroutine for this api fetch and wait for 3 seconds before moving along. if the api takes <3 seconds, we will get the result before our next lines are executed. else we are going to ignore the result and execute out next codelines anyway "
is it right ? feels like coroutines is same as synchronous with wild estimations, for 1 call and slightly better in case of multiple calls
(like if i have to make 3 calls for fetchData(), in synchronous they would occur sequentially, but in coroutines, they will be executed parallely. but sometimes we require sequential execution so again coroutine is not the best thing there, right? )6
just watched this short SNL sketch https://youtu.be/kTMow_7H47Q and kinda related to it a lot.
I think "nice guys" are way worse than dumb or bad/bully guys. they have defined a definition of what's nice and what's wrong, they think every women they like is suffered from "not nice" guy experience , they think they can provide a "nice"-ness to those girls and expect a reward in return
bad/bully guys are those who have already conquered the world around them and are in a position to maie demands , so if they are in a bar like this, they would be also like , assuming that the girl they wanna hit on is already their personal item and hit on her like that, without the fake mask of innocence.
and i guess the dumb giy would rather not be hitting on her at all, rather be really interested in getting that empty seat and finishing his snacks.
as a guy with no experience in girls i wish i could not fall in any of those 3 categories. girls , have you met people that are naturally, actually nice and not just faking it? and are these metrics real, like can you get into a conversation with any for a minute and know if he's imposer, dumb, self-centred or just geniune nice3
*some motivational guy in my brain* : "if you are the smartest person in the room, you are in the wrong room. get out of your comfort zone. the earlier yoh make a move, the be-.."
*some meek guy in my brain* : "but I have worked years on this domain , trying to get better and comfortable with it"
*motivational guy* : shut up am trying to make a point
*meek guy* : but wh-
.*some random guy from somewhere* : "dudes..., lets watch some porn"
*all three in unison* : yes6
so if your job have a 8-9 hours /day job, are you working for these many hours everyday, like just sitting bin front bof the laptop, writing code, attending meetings, etc? what else do you do apart from that?
i have often find myself in a position where i will be opening my laptop for at max 1-2 hours on some days and that too to make 2/3 line changes . in those days , i struggle to come up with a big excuse for what i was doing , when the next day's scrum happens.
( DISCLAIMER: this is not a brag post, i just really wanna know what to do in my free time. the days am talking above are usually at the end of sprint cycle, when all the code have been tested , verified and ready to be deployed to production. In the early stages , i am spending even more than 13-14 hours per day on getting the tasks done)
i just don't know what to do. I used to like starting up on random ideas to try various problems , and learn about various tools( like "how about making a website? i will get to learn about how backend works" ) , but now its like why bother, i am a droid dev, this is not part of my work.
even in android, i am rarely trying anything more than what is required for the task to complete. And that's really a very small domain of a lot of hot stuff that is out there.
I mean , sometimes this looks as a valid approach because companies which are funded and has a stable product mostly trust only a handful of libraries and apis that are known to be stable, supporting multiple android versions and bug free.
But at the same time, this looks like bad case of getting trapped in legacy apis just because the company andI are too afraid to make breaking changes. I would usually consider the old code as a baseline and write just almost similar stuff and make minimal changes.
the worst is the variable free time. its not like i am getting free at 7pm everyday. sometimes its 3 am in night and sometimes its 1.30 in noon.
so just want to know what activities do you peeps are doing apart from work and how apart it is from your actual work and work hours ??2